免责声明
由于传播、利用本公众号狐狸说安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号狐狸说安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉,谢谢!
0x01 漏洞原理
当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。这个“跨”实际上属于浏览器的特性,而不是缺陷;
浏览器同源策略:只有发布Cookie的网站才能读取Cookie。
会造成Cookie窃取、劫持用户Web行为、结合CSRF进行针对性攻击等危害
0x02 漏洞类型
反射型 #
出现在搜索栏,用户登录等地方,常用来窃取客户端的Cookie进行钓鱼欺骗。(需要用户去点击)
想要窃取cookie要满足两个条件:
1.用户点击攻击者构造的URL
2.访问被攻击的应用服务(即存在xss的网站)
存储型 #
出现在留言、评论、博客日志等交互处,直接影响Web服务器自身安全
DOM型 #
基于文档对象模型(Document Object Model)的一种漏洞;
DOM型与反射型类似,都需要攻击者诱使用户点击专门设计的URL;
Dom型 xss 是通过 url 传入参数去控制触发的;
Dom型返回页面源码中看不到输入的payload, 而是保存在浏览器的DOM中。
假设应用程序返回的页面包含以下脚本:
<script>
var url = document.location;
url = unescape(url);
var message = url.substring(url.indexOf('message=') + 8,url.length);
document.write(message);
</script>
把 javascript 代码作为message的参数,这段代码将会被动态的写入到页面中,
并像服务器返回代码一样得以执行。
DOM型与反射 型类似,都需要攻击者诱使用户点击专门设计的URL
查找利用XSS漏洞 #
基本验证 #
"><script>alert(document.cookie)</script>
把这个字符串提交给每个应用程序页面的每个参数;
同时监控它的响应,如果攻击字符串原样出现在响应中,就可能存在XSS漏洞。
许多应用可能会经过黑名单等简单的初步过滤,试图阻止XSS攻击;
可以通过编码等方式绕过:
"><ScRiPt>alert(document.cookie)</ScRiPt>
"%3e%3cscript%3ealert(document.cookie)%3c/script%3e
"><scr<script>ipt>alert(document.cookie)</scr</script>ipt>
%00"><script>alert(document.cookie)</script>
当利用基于DOM的XSS漏洞时,攻击有效载荷并不在服务器的响应中返回,而是保存在浏览器的DOM中,并可被客户端javascript访问。
在这种情况下,以上基本验证无法发现XSS漏洞。