DVWA漏洞学习(2)反射型XSS
2016-10-08 13:34
399 查看
XSS之反射型XSS
XSS又叫CSS(Cross Site Scripting),及跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,在2013年度OWASP Top 10中排名第三。XSS主要分为三类,分别是反射型、存储行和DOM型。本文从源代码角度详细介绍DVWA中反射型XSS的实现原理和防御技巧。反射型XSS的源代码在DVWA\vulnerabilities\xss_r\source目录下。下面依次对其进行介绍。0x01 low级别的反射型XSS
low级别的反射型XSS比较的简单,它对用户的输入不做任何处理即输出,所以实现起来比较简单,即最基本的js脚本即可。<script>alert('xss')</script>
其源代码如下,原理简单,不再详细介绍。
<?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Feedback for end user $html .= '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; } ?>
0x02 medium级别的反射型XSS
medium级别的反射型XSS相对容易,它的实现是对用户的输入进行简单的过滤,将用户的输入过滤掉script标签,并且不区分大小写,所以只要将script大写即可绕过。<SCRIPT>alert('xss')</SCRIPT>
其源代码如下,原理简单,使用函数str_replace函数。
<?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = str_replace( '<script>', '', $_GET[ 'name' ] ); // Feedback for end user $html .= "<pre>Hello ${name}</pre>"; } ?>
0x03 hign级别的反射型XSS
high级别的反射型XSS目前身为菜鸟的我还不能绕过,只能从源码的角度分析了。其源代码如下。<?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); // Feedback for end user $html .= "<pre>Hello ${name}</pre>"; } ?>
可以看到的是,代码中使用到了正则表达式,过滤了script标签,并且不区分大小写。使用到的函数是preg_replace。
0x04 impossible级别的反射型XSS
impossible级别的反射型XSS我认为重点教给大家防御技巧,当然也只能从源码的角度分析了。其源代码如下。<?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $name = htmlspecialchars( $_GET[ 'name' ] ); // Feedback for end user $html .= "<pre>Hello ${name}</pre>"; } // Generate Anti-CSRF token generateSessionToken(); ?>
可以看到的是,代码中使用到了Anti—CSRF token用来防御跨站请求伪造,每次比较用户的tocken和服务器的session存储的token进行比较,如果相等才正常执行,之后进行产生新的token。Token的位置在form表单中,使用Firefox中的Firebug可以看到,每次都不一样,可以有效的防御CSRF。
在impossible级别中,对用户的输入进行处理时使用了htmlspecialchars函数。该函数的定义和用法如下。
DVWA的反射型XSS到此结束。
相关文章推荐
- 通过DVWA学习反射型XSS漏洞
- 【安全牛学习笔记】存储型XSS漏洞原理及修复方法
- [PoC]某B2B网站的一个反射型XSS漏洞
- [典型漏洞分享]从一个手动分析的反射型XSS漏洞看待一个安全设计原则【中危】
- 【安全牛学习笔记】XSS- 键盘记录器和反射型XSS
- 学习脚本黑客:再谈XSS漏洞
- PHP代码审计 XSS反射型漏洞
- xss漏洞学习
- 通过DVWA学习SQL注入漏洞
- 【安全牛学习笔记】手动漏洞挖掘-SQL注入XSS-简介、跨站脚本检测和常见的攻击利用手段
- 看好你的门-XSS攻击(1)-利用反射型XSS漏洞 山寨红客插红旗
- 通过DVWA学习命令执行漏洞(Command Execution)
- XSS漏洞初窥(通过dvwa平台进测试)
- 存储型XSS与反射型XSS漏洞
- 通过DVWA学习SQL注入漏洞
- 看好你的门-XSS攻击(2)-利用反射型XSS漏洞 进行针对性攻击
- DVWA的使用5–XSS(Reflected)(反射型跨站脚本)
- 安全测试学习之XSS漏洞测试
- DVWA中学习PHP常见漏洞及修复方法
- DVWA漏洞学习(1)环境搭建