• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • CTF – RootMe解题报告 [Web-Client : XSS – Reflected]

    渗透测试 EXP 180阅读 0评论

    挑战入口:Root-Me(https://www.root-me.org/en/Challenges/Web-Client/XSS-Reflected)
      分类目录:Link to …(http://exp-blog.com/2019/01/02/pid-2597/11/)

    题目已经提示是反射型 XSS 的题型,但题目已经提示了 admin 不会点击所有可疑的 XSS 链接, 亦即我们要想办法令我们的 XSS 在 不被点击 的前提下触发。

    看过了所有页面,只有在 Contact us 页面的留言区有输入点,但不是注入点,因为留言后页面提示这里会扔掉所有消息并不会查看。

    查看页面源码,发现有一个隐藏页面 Security , 但打开发现是个 404 页面。

    不过注意到,修改 URL 中的 ?p=${xxx} , 404 页面中会对应打印 The page ${xxx} could not be found. ,其中 ${xxx} 被嵌入到 <a> 标签的 href 属性:<a href="?p={xxx}" >{xxx}</a>,怀疑这里可能是一个 XSS 注入点。

    不过测试发现,这个注入点对很多 html 符号做了过滤,<>"+ 等符号都被过滤了,注入难度较高。唯独单引号 ' 没有被过滤,因此可以用它来关闭前一个 href 属性,注入可以触发 XSS 的属性。

    尝试构造 URL 的 payloads 参数:?p=exp' onmousemove='alert(1),发现 <a> 标签被注入成为 <a href="?p=exp" onmousemove="alert(1)">,亦即成功注入了 onmousemove 属性,当鼠标经过这个链接时,就会触发 XSS 。

    而之所以注入 onmousemove 属性而非 onclick 属性,是因为题目已经明确表示 admin 不会点击所有可疑的 XSS 链接 ,因此注入的 XSS 行为是不能通过点击触发的,且必须是 js 脚本。

    据此可以构造真正的 payloads 了,下面几条都是我构造的有效 payloads ,任选一条均可。其中 ${HOST} 是通过 RequestBin 生成的临时 HTTP 服务器:

    点击 REPORT TO THE ADMINISTRATOR 按钮提交 payloads, 然后在 ${HOST} 等待 robot 触发 XSS 即可(大概需要一分钟)。若触发成功则会收到一个 flag ,完成挑战。


    本题要点:
      ○ flag 是在 cookie 里面的,因此必须窃取 document.cookie
      ○ 必须要清楚哪些字符被过滤了,尤其注意 + 也是在过滤列表中,即使编码成 %2B 也绕不过去,很多同学构造号 payloads 后,在本地可以触发,但是提交后 rotbot 却不触发,就是这个原因。
      ○ onmousemoveonmouseoveronmouseenteronmouseout 等 <a> 的属性都是可以被 rotbot 触发的
      ○ robot 真的很仿真,而且似乎还担心触发不到事件,只要 payloads 是对的,就会连续触发 5 次


    转载请注明:EXP 技术分享博客 » CTF – RootMe解题报告 [Web-Client : XSS – Reflected]

    喜欢 (2) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址