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权限
标签:HTB,扫描,提权,Base,login,php,上传,find From: https://www.cnblogs.com/ki-playground/p/18617142