跨站测试与利用中的绕过技术

独自等待 2017年5月12日02:26:19评论485 views字数 4323阅读14分24秒阅读模式

之前本站发了几个关于SQL注入的绕过技术,但是XSS的利用一直没有发,主要是我也没有详细研究,国庆期间网上找了点资料,看到了这个文章,觉得比较好,分享给大家。

本文从以下几个方面简单介绍了跨站中的绕过技术:

1、bypass Char(字符过滤)
2、bypass filter(过滤器)
3、bypass richtext(富文本)

文章分析的比较深入,希望对大家有所帮助。

XSS绕过小案例

1.1 bypass Char

通常有安全意识的程序员往往会对输入进行一定的过滤,比较常见的是针对某一关键符号进行过滤,比如"<"或者">",这种方式很多时候是无法防止攻击的,更安全的方式是通过编程语言提供的函数在输出的时候进行过滤。

本节主要针对单字符过滤进行研究,分为引号、尖括号、括号这三个符号进行研究。

1.1.1 引号

在跨站测试中很多的vector(即攻击向量)本身是不包含引号的,例如下面的一些vector。但是在利用中经常需要使用引号,如果对引号进行了过滤,可以采取如下措施进行绕过。

vector:




在chrome中,可能会导致浏览器崩溃,可以改用以下代码。


4) magic_quotes_gpc

PHP如果开启了"魔术引号"特性(magic_quotes_gpc = On),则' (single-quote), "(double quote), \(backslash) 和 NULL 字符将都会被反斜杠转义(%00 =>\0).

通过一些测试,发现ie xss filter对NULL字符的转义处理并不感冒,意思是它并不了解这种转换过程。参见文献9



%c0";alert(%00)//

%c0"//(%000000%0dalert(1)//

1.2.2 chrome filter

chrome浏览器针对xss过滤规则跟IE有比较大的区别,不同版本的chrome测试也会不同,现有的资料可以参考文献4、5。

1) data协议

?vuln=click //会拦截

转换成  click

//bypass

?vuln=click

1.3 bypass richtext

富文本常见类别有留言,日志或者邮件等。与一般的跨站相比它可以使用现有的标签进行测试分析。一般过滤机制分为两种:黑名单、白名单,这两类机制实质都是基于正则匹配进行过滤,因此在测试过程中需要对比输入和输出,然后进行针对性变化。

常见测试流程:输入常见标签和事件--->是否有存在的标签没有过滤--->变形或者分析其属性

标签:object, applet, base, link, meta, import, embed, vmlframe, iframe, script, style, isindex, form,textarea

字符:javascript:, vbscript:

事件:onload,onerror,on*

1.3.1 绕过规则

本小节将一些常见的一些变化规则进行了归类,实际测试中结合多种方式进行组合测试。

1)未递归过滤

很多富文本过滤都是针对关键字过滤,但是没有进行递归过滤,导致过滤后的结果重新组成新的标签,例如:

me>之——过滤——