问题描述:
因自动化开发密码回显问题导致默认或重置密码会明文记录在域用户userpassword字段,属于高危安全风险。
环境信息:
Windows Server 2008R2/2012R2/2016 ActiveDirectory
问题现象:
原因分析:
由于代码设计同学与域管同学沟通问题未能正确梳理代码及域密码更改逻辑;
安全提测过程中只涉及业务安全性扫描,未对代码内容及后台安全隐患进行提测等;
解决步骤:
1.过滤当前存在明文密码字段用户信息,本例以xiaowen帐号为例复现:
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 }
欢迎关注微信公众号:小温研习社