使用powershell在active directory中启用主机上的每个人写权限

k97glaaz  于 2023-01-20  发布在  Shell
关注(0)|答案(1)|浏览(133)

作为我正在进行的一项实验的一部分,我创建了一个具有DC和Windows客户端的网络,该实验涉及允许称为影子凭据的攻击的错误配置。
客户端连接到DC,计算机对象出现在Active Directory中。
我正在尝试使用Powershell启用特定设置,但不确定在哪里搜索该设置。我尝试在多个论坛中搜索,有些论坛将我指向Set-Acl cmdlet,但我无法找到启用所需设置的方法。

如上图所示,我打开了“域”下的“计算机”选项卡,并在其中打开了域的“属性”。
在属性下,我选择了安全设置,在安全设置中,我尝试向组“Everyone”添加写权限。
我试着在网上搜索,一些论坛指出这是一个可以在对象的属性下找到的权限。但是,我试着浏览对象属性,却找不到任何相关的属性。
此外,我尝试搜索如何修改组,因为这是与对象相关的组。
先谢,如有任何协助,不胜感激。

igsr9ssn

igsr9ssn1#

经过几天的调试找到了解决方案

$hostname = "Host"

#extreact domain information
$dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()            
$root = $dom.GetDirectoryEntry()            
          
#search through ldap the indomain as set before   
$search = [System.DirectoryServices.DirectorySearcher]$root            
$search.Filter = "(Name=$hostname)"            
$search.SizeLimit = 3000            
$result = $search.FindOne()            
 
#set security object 
$object = $result.GetDirectoryEntry()                      
$sec = $object.ObjectSecurity            
            
## set the rights and control type to a generic write            
$act = [System.Security.AccessControl.AccessControlType]::Allow        
$adrights = [System.DirectoryServices.ActiveDirectoryRights]::GenericWrite            
            
# set the sid of the 'Everyone' security group                       
$everyone = New-Object Security.Principal.SecurityIdentifier ([Security.Principal.WellKnownSidType]::WorldSid, $null)
$sec.SetGroup($everyone)
$sid = $everyone      

# apply rule            
$newrule = New-Object -TypeName System.DirectoryServices.ActiveDirectoryAccessRule -ArgumentList ($sid), $adrights, $act          
$sec.AddAccessRule($newrule)            
$object.CommitChanges()

相关问题