紀念一下今天圈子里提前過大年了!!!dddd,But滲透依舊不能停啊!!!
00x00 前言
在滲透測試中,尤其是內網滲透,通常需要在內網開啟一個支持匿名訪問的文件共享,配合漏洞利用。
所以需要一種通用的方法,不僅要使用便捷,還要能夠在命令行下運行。
這里通過win7
進行實驗。
00x01 利用場景
開啟支持匿名訪問的文件共享后,其他用戶不需要輸入用戶名和口令,可以直接訪問文件服務器的共享文件
通常有以下兩種用法:
- 作為數據傳輸的通道
- 配合漏洞利用,作為Payload的下載地址
文件共享服務器需要能夠在不同操作系統上搭建
對於Linux
系統,可借助Samba
服務搭建可匿名訪問的文件共享服務器
這里給出Kali
系統下的使用方法:
修改文件/etc/samba/smb.conf
,內容如下:
[global]
map to guest = test1
server role = standalone server
usershare allow guests = yes
idmap config * : backend = tdb
smb ports = 445
[smb]
comment = Samba
path = /tmp/
guest ok = yes
read only = no
browsable = yes
開啟服務:
service smbd start
service nmbd start
對於Windows
系統,則需要考慮域環境和工作組環境。同時為了支持匿名訪問,還需要開啟Guest
用戶,允許Guest
用戶訪問文件共享服務器的內容。
00x02 通過界面開啟可匿名訪問的文件共享服務器
1.啟用Guest用戶
win+r
打開運行窗口,運行gpedit.msc
,打開組策略
位置:Computer Configuration->Windows Settings->Security Settings->Local Policies->Security Options
,也即:計算機配置->Windows
設置->安全設置->本地策略->安全選項
選擇策略Accounts: Guest account status
,設置為Enabled
,即修改“帳戶:來賓帳戶狀態”為“禁止”。
2.將Everyone權限應用於匿名用戶
位置:Computer Configuration->Windows Settings->Security Settings->Local Policies->Security Options
選擇策略Network access:Let Everyone permissions apply to anonymous users
,設置為Enabled
,即修改“網絡訪問:將Everyone
權限應用於匿名用戶”為“禁止”,一般默認為禁用狀態。
3.指定匿名共享文件的位置
位置:Computer Configuration->Windows Settings->Security Settings->Local Policies->Security Options
選擇策略Network access:Shares that can be accessed anonymously
,設置名稱,這里可以填入smb
,即修改“網絡訪問:可匿名訪問的共享”的名稱為:smb
。
4.將Guest用戶從策略“拒絕從網絡訪問這台計算機”中移除
位置:Computer Configuration->Windows Settings->Security Settings->Local Policies->User Rights Assignment
,也即:計算機配置->Windows
設置->安全設置->本地策略->用戶權限分配
選擇策略Deny access to this computer from the network
,即從“拒絕從網絡訪問此計算機”中,移除用戶Guest
5.設置文件共享
新建一個共享的文件夾名為smb
,右鍵打開“屬性”,進入“共享”頁面設置高級共享,共享名為smb
共享權限組或用戶名為Everyone
至此,可匿名訪問的文件共享服務器開啟成功,訪問的地址為//<ip>/smb
00x03 通過命令行開啟可匿名訪問的文件共享服務器
1.啟用Guest用戶
net user guest /active:yes
2.將Everyone權限應用於匿名用戶
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v EveryoneIncludesAnonymous /t REG_DWORD /d 1 /f
3.指定匿名共享文件的位置
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionShares /t REG_MULTI_SZ /d smb /f
4.將Guest用戶從策略“拒絕從網絡訪問這台計算機”中移除
導出組策略:
secedit /export /cfg gp.inf /quiet
修改文件gp.inf
,將SeDenyNetworkLogonRight = Guest
修改為SeDenyNetworkLogonRight =
,保存
重新導入組策略:
secedit /configure /db gp.sdb /cfg gp.inf /quiet
強制刷新組策略,立即生效(否則,重啟后生效):
gpupdate/force
5.設置文件共享
icacls C:\share\ /T /grant Everyone:r
net share share=c:\share /grant:everyone,full
至此,可匿名訪問的文件共享服務器開啟成功,訪問的地址為//<ip>/smb
00x04 開源代碼
代碼在以下操作系統測試成功:
- Windows 7
- Windows 8
- Windows 10
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
支持域環境和工作組環境的Windows
操作系統
需要本地管理員權限執行
開啟可匿名訪問的文件共享服務器:
Invoke-BuildAnonymousSMBServer -Path c:\share -Mode Enable
關閉可匿名訪問的文件共享服務器:
Invoke-BuildAnonymousSMBServer -Path c:\share -Mode Disable
注:
關閉可匿名訪問的文件共享服務器實現了以下操作:
- 關閉指定目錄的共享權限
- 禁用Guest用戶
- 禁用將Everyone權限應用於匿名用戶
- 刪除組策略中指定的匿名共享文件位置
- 將Guest用戶添加至策略“拒絕從網絡訪問這台計算機”
在導出組策略時,如果策略“拒絕從網絡訪問這台計算機”中的內容為空,那么不會有這一選項,當我們需要添加這個策略時,需要手動添加一行內容SeDenyNetworkLogonRight = Guest
在代碼實現上,我采用了以下方法:
將SeDenyInteractiveLogonRight = Guest
替換為
SeDenyNetworkLogonRight = Guest
SeDenyInteractiveLogonRight = Guest
對應的Powershell
示例代碼:
(Get-Content a.txt) -replace "SeDenyInteractiveLogonRight = Guest","SeDenyNetworkLogonRight = Guest`r`nSeDenyInteractiveLogonRight = Guest" | Set-Content "a.txt"