介绍
我对xss有一个模糊的了解,但是我不太明白它是如何被用来攻击的,所以我尝试了一种叫做会话劫持的东西。
你想做的事
将自己置于攻击者的位置,将攻击URL发送给受害者,获取受害者的会话ID。
创建易受攻击的站点
首先,创建一个受害者可以登录的站点。
我是用javascript+express做的,但是因为是我用的不多的框架,所以放入认证机制花了很长时间。
但是,身份验证的方法是“您可以使用任何用户名或密码登录”。
(因为创建一个登录状态就足够了)
↓源代码
https://github.com/ahyaemon/express-training
↓登录页面
↓ 登录后首页
您还可以确认 cookie 包含看起来像会话 ID 的内容。
我也试过 CSRF,所以有一个“将柠檬添加到购物车”按钮,但这次没关系。
如果在“Transit to page with xss evidence”的输入中输入字符并点击“search”,页面将以输入的字符串作为查询参数进行跳转。
在过渡后的页面,用js获取查询参数,制造脆弱性它以innerHTML 显示在屏幕上。
使用りんご 搜索时
变成这样
使用<h1>Hello!</h1> 搜索时
出现一个大大的Hello。
使用<script>alert(0)</script> 搜索时
什么都没发生。
即使嵌入了脚本标签也不会执行吗?
使用<svg onload="alert(0)"> 搜索时
警告。
攻击
从这里开始,我处于攻击者的位置。
我发现<svg onload="alert(0)"> 执行alert(0),所以我搞砸了这个脚本部分并抓住了会话ID。
作为一种方法,我可以使用document.cookie 获取cookie 的内容,因此我考虑使用fetch 将其发送到攻击者创建的服务器或通过电子邮件发送。
首先,我想检查是否可以使用 document.cookie 正确获取会话 ID,因此我创建了一个执行 <svg onload="console.log(document.cookie)"> 的 URL,并让受害者单击它。
(既然你既是攻击者又是受害者,请打开受害者端的开发者工具并检查console.log输出)
这是由 URL 编码 <svg onload="console.log(document.cookie)"> 生成的 URL。
http://localhost:3333/search?search=%3Csvg+onload%3D%22console.log%28document.cookie%29%22%3E
假设攻击者以某种方式将此 URL 发送给受害者,则以受害者身份打开此 URL。
结果···
只显示空字符。
这不好
当我检查为什么不显示会话 ID 时,似乎无法从 javascript 访问它,因为 HttpOnly 附加到 cookie。
我很确定 HttpOnly 已检查。
在最后
除非您自己尝试,否则您无法理解这一点。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628930.html