DVWA漏洞学习(2)反射型XSS
来源:互联网 发布:小博士隔音膜 淘宝网 编辑:程序博客网 时间:2024/05/21 16:57
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 tokengenerateSessionToken();?>
可以看到的是,代码中使用到了Anti—CSRF token用来防御跨站请求伪造,每次比较用户的tocken和服务器的session存储的token进行比较,如果相等才正常执行,之后进行产生新的token。Token的位置在form表单中,使用Firefox中的Firebug可以看到,每次都不一样,可以有效的防御CSRF。
在impossible级别中,对用户的输入进行处理时使用了htmlspecialchars函数。该函数的定义和用法如下。
DVWA的反射型XSS到此结束。
- DVWA漏洞学习(2)反射型XSS
- 通过DVWA学习反射型XSS漏洞
- 通过DVWA学习存储型XSS漏洞
- DVWA-学习XSS
- DVWA漏洞学习(1)环境搭建
- PHP代码审计 XSS反射型漏洞
- 看好你的门-XSS攻击(2)-利用反射型XSS漏洞 进行针对性攻击
- 存储型XSS与反射型XSS漏洞
- 通过DVWA学习CSRF漏洞
- 【安全牛学习笔记】反射型XSS攻击漏洞的原理及解决办法
- 通过DVWA学习命令执行漏洞(Command Execution)
- 通过DVWA学习文件上传漏洞(File Upload)
- 通过DVWA学习文件包含漏洞(File Include)
- [PoC]某B2B网站的一个反射型XSS漏洞
- 通过DVWA学习SQL注入漏洞
- 看好你的门-XSS攻击(1)-利用反射型XSS漏洞 山寨红客插红旗
- WordPress < 4.1.2 存储型XSS漏洞
- [实验]xss dvwa
- 一起写RPC框架(十五)RPC注册中心二--注册中心的基本实现
- Spring注解@Component、@Repository、@Service、@Controller区别
- 14、BeanUtils,自定义时间转换器
- Objective-C 入门教程
- 表达式求值(整数运算)
- DVWA漏洞学习(2)反射型XSS
- 计算机算法设计与分析 笔记
- 数据库安全性
- C#代码连接Oracle数据库一段时间以后[connection lost contact]的问题
- Java技术——Interface与abstract类的区别
- mac配置java环境
- 使用iText7----生成纯文本、图片、表格内容的pdf文件
- Android视频播放02—SurfaceView实现
- iOS接入微信支付(小白都能看懂的微信支付)