XSS脚本注入攻击

XSS攻击

参考:https://www.freebuf.com/column/154178.html

不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与网站。XSS的攻击目标是为了盗取客户端的cookie或者其他网站用于识别客户端身份的敏感信息。获取到合法用户的信息后,攻击者甚至可以假冒最终用户与网站进行交互。

XSS漏洞成因是由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码会被受害用户的浏览器解释执行。

对于初学者而言,找漏洞最好是基于白盒审计进行,所谓白盒审计可以简单地理解为就是看着代码找漏洞,那么在正式挖洞前,我们先看看开源的DVWA给出的四种级别的XSS的源代码。

基于dvwa的代码审计

DVWA 的代码分为四种安全级别:Low,Medium,High,Impossible。初学者可以通过比较四种级别的代码,接触到入门级别的代码审计的内容。

XSS主要可以分为两种,分别为反射型XSS和存储型XSS,DVWA中也是分开介绍的。两者的区别在哪儿呢?

反射型XSS:

    一般是url参数中的值能够回显到HTML中,且url的参数值没有过滤或过滤不严

存储型XSS:

    可以提交内容

    提交的内容可被管理员或其他用户看到

    提交的内容没有被过滤或过滤不严

我们这里在按照DVWA给出的代码进行介绍,先看看反射型XSS的代码:

Low级别代码

XSS脚本注入攻击_第1张图片

分析关键代码:

image002.png

可以看到:

代码不经过滤与检查直接引用name参数,由此形成XSS漏洞

 

Medium级别代码:

XSS脚本注入攻击_第2张图片

分析关键代码:

image004.png

可以看到:

代码使用str_replace()函数将输入中的注意这个127.0.0.1ip地址要改为自己本机的ip地址,比如192.168.1.1,就是你beef配置的ip

原博客攻击成功:

XSS脚本注入攻击_第17张图片

本次试验,被拦截:

XSS脚本注入攻击_第18张图片

再接再厉吧

 

防护

防护措施

不要在页面中插入任何不可信数据,除非这些数已经据根据下面几个原则进行了编码

在将不可信数据插入到HTML标签之间时,对这些数据进行HTML Entity编码

在将不可信数据插入到HTML属性里时,对这些数据进行HTML属性编码

不可信数据插入到SCRIPT里时,对这些数据进行SCRIPT编码

在将不可信数据插入到Style属性里时,对这些数据进行CSS编码

在将不可信数据插入到HTML URL里时,对这些数据进行URL编码

使用富文本时,使用XSS规则引擎进行编码过滤

 

上面的话总结一下其实就是三条原则:

设置HTTP-only cookie,该cookie的属性能够阻止客户端脚本访问Cookie

对输入进行校验:对用户输入的一些特殊字符校验,过滤或者是编码

对输出进行校验:除了富文本之外,在变量输出到HTML页面,可以使用编码或者转义的方式来防御XSS

你可能感兴趣的:(网络信息安全)