HTB靶场:Base(弱语言类型混淆&find提权)
Base
1. 信息收集
端口扫描:

子域名收集:
gobuster vhost --random-agent --append-domain -k -w "/usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt" -u "http://ip:port/path"
目录扫描:
dirsearch扫描结果
dirsearch比较适合扫描一些常规常见的文件

2. 访问
主页面

访问目录扫描发现的assets/,发现是一些静态资源

访问目录扫描发现的login/,发现三个文件

vim -r login.php.swp打开vim缓存文件,发现是源码

可以使用strings查看人类可读文本,能够看到更多内容: strings login.php.swp

虽然能看,顺序挺乱的,反过来了,用这个:tac login
3. 源码分析利用
从源码中分析登录验证机制:利用strcmp()函数逐字节比较,匹配后返回0
这里涉及到一个漏洞机制——类型混淆 (Type Juggling Bug)
-
观察strcmp() 函数的行为
strcmp() 是字符串比较函数,但会将非字符串参数转换为字符串。
1. POST传入空值,参数为 NULL,会被视为空字符串 "",导致比较错误。 2. POST传入username=""&password=""或username=&password=,在empty()函数处代码中断 3. 如果参数为数组,会触发警告,但代码继续执行,成功绕过,跳转到upload.php
尝试上传php文件,上传成功

4. 文件上传利用
需要找到上传位置,才能进行漏洞利用,只能尝试再次深度扫描,尝试爆破出文件上传目录
用gobuster dir -k -w /usr/share/dirb/wordlists/big.txt -u http://ip/

成功找到上传位置

反弹成功

但权限太低

5. 提权
查找web服务目录下的线索

还真是john的密码

可以拿到user.txt
提权root
先查看可用权限

可以sudo find
find提权
find . -exec /bin/sh \; -quit

拿到root权限

浙公网安备 33010602011771号