xss中用换行符绕过_xss攻击绕过

hacker|
101

文章目录:

XSS 攻击时怎么绕过 htmlspecialchars 函数

绕不过。

所谓绕过就是挑程序员忘记正确转码的地方下手。

注意并非htmlspecialchars就万事大吉,不同的地方需要不同的转码。所以所谓绕过htmlspecialchars也可能指那个漏洞点用htmlspecialchars转码压根不正确。

XSS攻击的传统防御技术

传统防御技术传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。

如何防止xss攻击

1. XSS攻击原理

XSS原称为CSS(Cross-Site Scripting),因为和层叠样式表(Cascading Style Sheets)重名,所以改称为XSS(X一般有未知的含义,还有扩展的含义)。XSS攻击涉及到三方:攻击者,用户,web server。用户是通过浏览器来访问web server上的网页,XSS攻击就是攻击者通过各种办法,在用户访问的网页中插入自己的脚本,让其在用户访问网页时在其浏览器中进行执行。攻击者通过插入的脚本的执行,来获得用户的信息,比如cookie,发送到攻击者自己的网站(跨站了)。所以称为跨站脚本攻击。XSS可以分为反射型XSS和持久性XSS,还有DOM Based XSS。(一句话,XSS就是在用户的浏览器中执行攻击者自己定制的脚本。)

1.1 反射型XSS

反射性XSS,也就是非持久性XSS。用户点击攻击链接,服务器解析后响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器执行。一来一去,XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS。

特点:

1 XSS攻击代码非持久性,也就是没有保存在web server中,而是出现在URL地址中;

2 非持久性,那么攻击方式就不同了。一般是攻击者通过邮件,聊天软件等等方式发送攻击URL,然后用户点击来达到攻击的;

1.2 持久型XSS

区别就是XSS恶意代码存储在web server中,这样,每一个访问特定网页的用户,都会被攻击。

特点:

1 XSS攻击代码存储于web server上;

2 攻击者,一般是通过网站的留言、评论、博客、日志等等功能(所有能够向web server输入内容的地方),将攻击代码存储到web server上的;

有时持久性XSS和反射型XSS是同时使用的,比如先通过对一个攻击url进行编码(来绕过xss filter),然后提交该web server(存储在web server中), 然后用户在浏览页面时,如果点击该url,就会触发一个XSS攻击。当然用户点击该url时,也可能会触发一个CSRF(Cross site request forgery)攻击。

1.3 DOM based XSS

基于DOM的XSS,也就是web server不参与,仅仅涉及到浏览器的XSS。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生。过滤可以考虑采用esapi4js。

如何绕过 浏览器xss filter

反射xss利用方法,绕过IE XSS Filter

假设 1.php页面代码如下:

echo $_GET['str'];

使用IE浏览器访问该页面

1.php?str=xss code

由于xss filter渲染 导致XSS不成功

接下来我们要这么绕过呢?

如果该站点 可以发帖、友情链接等等 只要能发链接地址其实不只发链接 嘿嘿。

由于IE XSS FILTER 只是检测 referer 是否来自本源,如果来自本源 则 Ie XSS FILTER则不生效。你现在明白了吧

在javascript: date: 等协议无效的情况下:

a href=";xss code"求友情链接/a

IE用户点击即可中招(其他部分浏览器也中招)

怎么绕过简单的sql防

《Web安全之SQL注入攻击技巧与防范》:

二、 几种绕过姿势

下面列举几个防御与绕过的例子:

例子1:addslashes

防御:

这里用了addslashes转义。

绕过:

将字符串转为16进制编码数据或使用char函数(十进制)进行转化(因为数据库会自动把16进制转化)

用注释符去掉输入密码部分如“-- /* #”

payload:

-- hack 

(因为有的SQL要求--后要有空格,所以此处加上了hack)

(escape不转义/*)

 

(这里的%23即为#,注释掉后面的密码部分。注意IE浏览器会将#转换为空)

 

(admin# --0x61646d696e23)

(97,100, 109, 105, 110, 35) 

(admin# --CHAR(97, 100, 109, 105, 110, 35))

关于编码原理:

因为一般前端JavaScript都会escape()、encodeURL或encodeURIComponent编码再传输给服务器,主要为encodeURL,如下,所以可以利用这点。

JavaScript代码如:

拦截请求:

1)escape( )

对ASCII字母、数字、标点符号"@* _ + - . /"不进行编码。在\u0000到\u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式。(注意escape()不对"+"编码,而平时表单中的空格会变成+)

2) encodeURL

对" ; / ? : @ = + $ , # ' "不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

3) encodeURIComponent

用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。

常用编码:

@ * _ + - ./ ;  \ ? : @  = + $ , # ' 空格 

转码工具可用:

参考:

《URL编码》:

例子2:匹配过滤

防御:

绕过:

关键词and,or常被用做简单测试网站是否容易进行注入攻击。这里给出简单的绕过使用,||分别替换and,or。

过滤注入: 1 or 1 = 1 1 and 1 = 1

绕过注入: 1 || 1 = 1 1 1 = 1

关于preg_match过滤可以看参考文章,文章里讲得很详细了。

参考:

《高级SQL注入:混淆和绕过》:

例子3:strstr

防御:

strstr ()查找字符串的首次出现,该函数区分大小写。如果想要不区分大小写,使用stristr()。(注意后面这个函数多了个i)

绕过:

strstr()函数是对大小写敏感的,所以我们可以通过大小写变种来绕过

payload:

 select null,null,null 

例子4:空格过滤

防御:

绕过:

1)使用内联注释。

2)使用换行符代替空格。注意服务器若为Windows则换行符为%0A%0D,Linux则为%0A。

**/and/**/11=1  

例子5:空字节

通常的输入过滤器都是在应用程序之外的代码实现的。比如入侵检测系统(IDS),这些系统一般是由原生编程语言开发而成,比如C++,为什么空字节能起作用呢,就是因为在原生变成语言中,根据字符串起始位置到第一个出现空字节的位置来确定字符串长度。所以说空字节就有效的终止了字符串。

绕过:

只需要在过滤器阻止的字符串前面提供一个采用URL编码的空字节即可。

payload:

例子6:构造故意过滤

防御:

绕过:

文件的63行开始可以看到,此处将传入的%27和%2527都进行删除处理,也就是还没传入数据库前就已经被该死的程序吃了,但是在67行看到他还吃了*,这样我们就有办法了,我们构造%*27,这样程序吃掉星号*后,%27就会被传入。

payload:

*27%*20and%*20%*271%*27%3D%*271 

(id=1' and '1'='1--id%3D1%*27%*20and%*20%*271%*27%3D%*271)

参考:

《phpcms_v9.6.0_sql注入与exp》:

如何正确防御xss攻击

传统防御技术

2.1.1基于特征的防御

传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。

2.1.2 基于代码修改的防御

和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:

1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。

当然,如上方法将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。

并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。

扩展资料:

XSS攻击的危害包括

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

受攻击事件

新浪微博XSS受攻击事件

2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。

大量用户自动发送诸如:

“郭美美事件的一些未注意到的细节”,“建党大业中穿帮地方”,“让女人心动的100句诗歌”,“这是传说中的神仙眷侣啊”等等微博和私信,并自动关注一位名为hellosamy的用户。

事件的经过线索如下:

20:14,开始有大量带V的认证用户中招转发蠕虫

20:30,某网站中的病毒页面无法访问

20:32,新浪微博中hellosamy用户无法访问

21:02,新浪漏洞修补完毕

百度贴吧xss攻击事件

2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等。并且吧友所关注的每个关注的贴吧都会转一遍,病毒循环发帖。并且导致吧务人员,和吧友被封禁。

参考资料:

XSS攻击-百度百科

4条大神的评论

  • avatar
    访客 2022-09-20 上午 10:08:57

    ,和吧友被封禁。参考资料:XSS攻击-百度百科

  • avatar
    访客 2022-09-20 上午 07:55:45

    想要不区分大小写,使用stristr()。(注意后面这个函数多了个i)绕过:strstr()函数是对大小写敏感的,所以我们可以通过大小写变种来绕过payload: se

  • avatar
    访客 2022-09-20 下午 12:49:17

    击事件2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等。并且吧友所关注的每个关注的贴吧都会转一遍,病毒循环发帖。并且导致吧务人员,和吧友被封禁。参考资料:XSS攻击-百度百科

  • avatar
    访客 2022-09-20 上午 06:11:31

    样我们就有办法了,我们构造%*27,这样程序吃掉星号*后,%27就会被传入。payload:*27%*20and%*20%*271%*27%3D%*271 (id=1' and '1'='1--id%3D1%*27%*20and%*20%*

发表评论