问题描述:安全
因自动化开发密码回显问题致使默认或重置密码会明文记录在域用户userpassword字段,属于高危安全风险。微信
环境信息:app
Windows Server 2008R2/2012R2/2016 ActiveDirectoryide
问题现象:测试
缘由分析:ui
因为代码设计同窗与域管同窗沟通问题未能正确梳理代码及域密码更改逻辑;spa
安全提测过程当中只涉及业务安全性扫描,未对代码内容及后台安全隐患进行提测等;设计
解决步骤:orm
1.过滤当前存在明文密码字段用户信息,本例以xiaowen账号为例复现:blog
Get-ADUser -Identity xiaowen -Properties * |select CN,Company,Department,Description,DisplayName,DistinguishedName,EmailAddress,EmployeeID,EmployeeNumber,mail,Manager,Name,sn,StreetAddress,Title,userPassword,UserPrincipalName
2.通常涉及域账号敏感字段信息,咱们会经过清空或者替换敏感字段为其余字符等内容进行操做;
本例咱们使用常规方法赋值为空有报错,赋值为空格或其余值均可以实现;与咱们想要实现的内容仍是有区别的。
Eg:以更新company公司字段进行简单介绍:(附:两种替换值的方法:)
赋值为空:
Get-ADUser -Identity xiaowen |Set-ADUser -Company ""
Get-ADUser -Identity xiaowen |Set-ADUser -Replace @{Company=""}
赋值为空格或其余字符:
Get-ADUser -Identity xiaowen |Set-ADUser -Company " "
Get-ADUser -Identity xiaowen |Set-ADUser -Replace @{Company="1"}
3.经过直接赋值的操做没法实现,咱们这里引用write-host方法尝试,发现域环境下部分字段支持空值替换,具体方法以下:
$company = Write-Host ""
Get-ADUser -Identity xiaowen |Set-ADUser -Company $company
4.一样的方法咱们引用到本章节替换明文密码字段,发现为空不行,只能替换成空格或者其余字节信息,以下:
5.经过上边测试的方法咱们发现始终实现不了密码字段清空的操做,最终只能变换操做方法,终于功夫不负有心人,经过-clear完成清理操做,以下:
Get-ADUser -Identity xiaowen -Properties * |select Samaccountname,name,userPassword
Get-ADUser -Identity xiaowen -Properties * |Set-ADUser -Clear userpassword
6.在测试过程当中咱们发现,经过-clear能够快速清空用户自完善或者非系统属性信息。
PS.Set-ADUser ** -clear 没法清理系统自带属性或者域账号必须属性。
附:快速清理名单中用户明文密码字段信息脚本:
Import-Csv C:\user.csv | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -Clear userpassword }
欢迎关注微信公众号:小温研习社