WEB漏洞 XSS(一)

一、xss的造成原理html

xss 中文名是“跨站脚本攻击”,英文名“Cross Site Scripting”。
xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,若是用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行致使用户被攻击。
常见的危害有:cookie窃取,session劫持,钓鱼攻击,蠕虫,ddos等。前端

二、xss的分类web

    xss根据特性和利用方式能够分红三大类,反射性xss 、存储型xss、DOM型xss、正则表达式

  反射性: 通常出如今URL参数中,以及网站搜索栏中,因为须要点击包含恶意代码的URL才能够触发,而且只能触发一次,也称为非持久性xss。数据库

  存储型:通常出如今留言板上,评论处,我的资料填写,等须要用户能够对网站写入数据的地方,好比一个论坛处因为对用户输入过滤不严格,致使攻击者在写入一段窃取cookie的恶意JavaScript代码到评论处,这段恶意代码会写入数据库中,当其余用户浏览写入代码的页面时,网站从数据库中读取恶意代码显示到网页中被浏览器执行,致使用户的cookie被窃取攻击者无需受害者密码既能够登录帐户,因此也被成为持久性xss,持久性xss比反射性xss危害性大得多。浏览器

三、dom型xss DOM xss是基于dom文件对象模型的,前端脚本经过dom动态修改页面,因为不予服务端运行交互,并且代码是可见的,从前端获取dom中的数据在本地执行。常见的能够操做的dom对象有:url、location、referrer等。dom型的xss比较特殊,是一种基于dom树的xss,服务器端常用document.body.innertHtml等动态函数生成HTML页面,若是这些函数在引用某些变量时没有进行过滤检查,就会产生dom型的xss。dom型的xss多是存储型的也多是反射性的。安全

四、代码分析服务器

 DVWA(Dam Vulnerable Web Application)DVWA使用PHP+MySQL编写的一套常规的web漏洞教学和检测web脆弱性的测试程序,包含了SQl注入、XSS、盲注入等常见的一些安全漏洞,你们能够到官网上自行下载: http://www.dvwa.co.uk    cookie

   建议你们使用火狐浏览器,感谢火狐浏览器对xss不过滤,像百度 还用Chrome不少会自行对xss过滤。或者你们对浏览器进行设置一下。session

  下面我将用dvwa中的4个漏洞等级Low 、Medium、High、Impossible进行举例、

     反射性测试: 响应的xss连接  http://192.168.108.13/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#

    服务器端核心代码,能够看到 带xss没用进行过滤处理,因此咱们能够直接输入 <script>alert(/xss/)</script>

  

xss 低级测试。

  

 中级测试:

   服务器核心代码,能够看到使用了 基于黑名单的思想利用 str_replace函数将<script>删除,这种防御机制是能够绕过的 。

   双写绕过:

        输入<sc<script>ript>alert(/xss/)</script> 

    相应的xss连接http://192.168.108.13/vulnerabilities/xss_r/?name=%3Csc%3Cscript%3Eript%3Ealert%28%2F%E5%8F%8C%E5%86%99xss%2F%29%3C%2Fscript%3E#

 

 

  大小写混写绕过: 输入<ScRipt>alert(/xss/)</script>

     相应的连接 http://192.168.108.13/vulnerabilities/xss_r/?name=%E8%BE%93%E5%85%A5%3CScRipt%3Ealert%28%2F%E5%A4%A7%E5%B0%8F%E5%86%99%E6%B7%B7%E7%94%A8xss%2F%29%3C%2Fscript%3E#

高级测试:

    服务器端代码:High高级级别的代码一样适用了黑名单过滤,preg_replace() 函数用于正则表达式的搜索和替换,因此双写和大小写替换都不能绕过,可是可使用img、body等标记时间或者iframe等标签的src注入恶意的js代码。  输入 <img src=1 onerror=alert(/xss/)>   URL连接http://localhost/vulnerabilities/xss_r/?name=%3Cimg+src%3D1+onerror%3Dalert%28%2F%E9%AB%98%E7%BA%A7xss%2F%29%3E#

    

impossible: 显然这种是过滤效果最好的。

 服务器核心代码以下截图:能够看到impossible级别的代码使用htmlspecialchar函数将预约义的字符 &  "  、 ’  <  > 转换成HTML实体,防止浏览器将其做为HTML元素 。

存储型  XXS  

   下面对存储型的的xss 型的说明:

    low: 

   服务器端核心代码:  

相关文章
相关标签/搜索