XSS & SSRF组合拳
2021-4-26
| 2024-2-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
去年实习中就遇到一个场景,用 xss 去打 redis,想着刷刷靶场练习一下,然后就在收藏夹吃了一年的灰了。。
即下面链接的 38 - 40 题
扫描一下目录,发现 robots.txt 里有三条信息
发现 backup.zip 有密码打不开

xssme

随便用个帐号注册登录一下,在 Mailbox 收到管理员发来的邮件
I am admin from this website, I will read all your mails but never reply.
也就是会一直读我发的邮件,但是不会回复,也就是没有回显。
直接上 payload
这里用 svg/onload 是为了绕过空格限制
notion image
可以正常通信
notion image
获取管理员 Cookie
notion image
奇怪,接收不到
notion image
但通过导航栏 Sent Mail 可以获取自己的。。。试试通过接收平台来接收
只有 dns 解析记录,没有 http 请求记录。。XSS平台Cookie字段为空。。。
奇怪了,然后试试
发现返回正常,难道,过滤了cookie关键字?或者,,Cookie里的特殊字段导致 HTTP包异常?尝试对获取到的 cookie 进行编码。
为啥用 btoa 呢,因为一开始试过了 escape 不过没用… escape 后 Cookie里也没空格的样子emmm
因为题目过滤了 ) ,所以需要HTML编码一下双引号里面的。
notion image
好耶!
notion image
notion image
第一个flag
并提示了第二个 flag 在 redis 里

xssrf leak

尝试用 xssme 得到的 admin cookie ,尝试 XFF 也是如此。
notion image
这里先读一下 admin 页面
同样引号里的东西HTML编码一下给管理员发邮件
notion image
正常收到
notion image
把这一串 base64解码一下,提取关键信息,发现主要多了 Set Admin 和 Send Request 两个功能。
通过 AJAX 请求分别请求一下 setadmin.phprequest.php 看看
一样HTML编码一下双引号里面的部分,同样在导航栏 Send Mail 部分发送
notion image
base64解码提取关键部分
还有 setadmin.php 同样,结果 base64解码 提取关键部分
这里试试能不能通过 setadmin.php 设置管理员,之后操作也方式一点点。
得到返回信息…
那继续通过这种方式获取利用 request.php 吧,存在 SSRF
读了一下 /etc/passwd
发现 www-data 解析目录为 /var/www 并且有 redis 用户
尝试了 /proc/self/environ/proc/self/cmdline 都无法获取准确的 web 根目录,只能猜了,比如 /var/www/html (
读取一下扫描目录发现的 config.php
解码一下得到
第 2 个 flag
说好的第 2 个 flag 在 redis 里呢…

xssrf redis

上一个 flag 提示 redis 端口在 25566
先试试 gopher 协议 未授权打 redis
redis环境信息被愉快的打印出来
notion image
依次获取 redis 的键和值即可
  • 获取所有键
读取结果
  • 判断flag键的值类型
读取结果
  • 获取flag键的所有列表值
把结果复制进字符串
结果在去除最后三个字符 35* 即可
虽然生产环境利用起来相对困难,不过毕竟是CTF嘛,骚思路多一个是一个 (

参考链接
 
  • 漏洞复现
  • ctfshow nodejs篇ctfshow SSRF篇
    • GitTalk
    目录