反射型xss

xss的目的就是在被攻击用户的浏览器上运行攻击者编辑脚本代码。

根据攻击方式,xss可以分为三类:反射型xss、存储型xss和DOM型xss.

反射型xss

三个对象:攻击者、受害者和有价值的网站。

三个条件:用户访问网站并提交数据,响应数据或页面中包含提交的数据,网站对输入输出数据没有充分检查。

注:xss攻击的价值在于用户和网站之间的关系,比如用户的个人数据、敏感操作、网购或银行操作等。通过使受害者执行攻击者的脚本,使攻击者获取受害者的cookie等敏感数据,进而可以窃取受害者的临时身份,进行一系列操作。当然,也可以将动作写入脚本中,使受害者之间进行错误操作,比如转账、删除文章、关注某某等,而网站会以为这一切都是用户的自主行为。

场景:

1、攻击者挖掘到有价值网站的反射型xss漏洞,通过业务分析,构建出有危害性的、执行特定目的的payload语句。

2、攻击者通过社交诱使受害者点击构造的包含payload的url。比如通过qq、邮件等发送,或者嵌入在某些网页中,包含诱使用户点击的内容,如美女或紧急消息,或者结合点击劫持技术。

3、网站接收受害者的请求及携带的payload数据,没有经过充分检查,将其作为返回数据直接返回或包含在返回的页面中。

4、受害者的浏览器接收响应,payload作为脚本被成功执行。

漏洞手动挖掘

1、分析可能的注入点

从数据提交着手,按照数据构成方式,可以将数据来源分为两类:一是网页希望用户进行输入的,二是js自动构建的。

三种数据提交方式:地址栏提交url,表单form提交,以及js提交。对于一般用户,地址栏提交url不在业务场景内。

对于表单form提交,一般都是基于用户输入的内容进行提交,但是不排除js对hidden属性的输入元素进行了动态赋值。

对于js提交,可以是完全是基于用户输入数据提交,也可以包含一些js自动构建的数据,甚至可以完全是基于js自动构建的数据。

我们可以根据参数名,获取参数来源的元素id以及文档页面等分析参数的意义,进而构建业务场景,分析后台处理机制和可能的返回页面。

2、寻找注入点

针对每一个参数,进行不同类型的赋值,研究响应页面。

基于响应页面,我们可以进一步分析参数作用和后台机制。

查看响应页面是否包含提交的参数值,或有关联的值,找到反射型xss注入点——即数据的提交对象和参数名,以及响应页面或响应数据。

3、分析响应

我们需要查看提交的参数被包含在响应页面的对应点,构造payload使其能够作为js代码被执行,并根据服务器可能的、不同的参数过滤器修改payload进行测试。

自动挖掘漏洞

1、基于爬虫代码,能够模拟用户使用浏览器进行工作,获取html、css、js、jsp、php等代码。

2、审计代码,通过发现参数提交点判断可能的注入点,比如form和submit类型的input标签,js的ajax函数。(到这一步,可以将可能的注入点提取出来,整理成表交给攻击者分析和手动注入)。

3、基于每一个参数进行不同类型的数据构造,分析响应页面寻找注入点。

4、针对明确的注入点,结合参数在响应页面的位置,构造不同payload去试图突破过滤器。

自动挖掘工具

burpsuite

猜你喜欢

转载自www.cnblogs.com/blunFan/p/11507805.html