专栏首页TeamsSix的网络空间安全专栏漏洞复现 | Discuz 7.2 反射型xss漏洞

漏洞复现 | Discuz 7.2 反射型xss漏洞

一、下载源码进行环境搭建

1、先安装Ucenter

2、解决出现问题

安装好后,打开发现弹出以下界面

在Ucenter数据库下执行以下命令即可

DROP TABLE IF EXISTS uc_pms;# MySQL 返回的查询结果为空 (即零行)。
CREATE TABLE uc_pms (
pmid int(10) unsigned NOT NULL auto_increment,
msgfrom varchar(15) NOT NULL default '',
msgfromid mediumint(8) unsigned NOT NULL default '0',
msgtoid mediumint(8) unsigned NOT NULL default '0',
folder enum('inbox','outbox') NOT NULL default 'inbox',
new tinyint(1) NOT NULL default '0',
subject varchar(75) NOT NULL default '',
dateline int(10) unsigned NOT NULL default '0',
message text NOT NULL,
delstatus tinyint(1) unsigned NOT NULL default '0',
related int(10) unsigned NOT NULL default '0',
PRIMARY KEY(pmid),
KEY msgtoid(msgtoid,folder,dateline),
KEY msgfromid(msgfromid,folder,dateline),
KEY related (related),
KEY getnum (msgtoid,folder,delstatus)
)# MySQL 返回的查询结果为空 (即零行)。

二、漏洞演示漏洞POC地址:

http://127.0.0.1/Discuz/logging.php?action=logout&formhash=b1abb3e2&referer=';alert(document.domain);'

三、对漏洞进行白盒测试

1、referer字段

根据poc可以看出利用的字段是logging .php下的referer字段,打开看看

2、dreferer函数

可以看到referer字段由dreferer函数进行赋值,找到dreferer函数,判断dreferer是如何取rederer值的,可以在include/global.func.php文件中直接找到对应函数。

可以看到,因为$referer是我们传参的值,不为空,所以直接执行语句$referer = dhtmlspecialchars($referer);

这里dhtmlspecialchars方法是对我们传入的referer的值进行关键词过滤,在include/global.func.php中可以同样找到该函数:

核心部分是其中的str_replace进行的字符替换,可以看到主要对&、”、<、>进行替换处理,而对poc中的字符并未进行过滤

3、showmessage函数

在logging.php文件中26行可以看到showmessage函数对dreferer函数进行了调用

此时来include/global.func.php下查看一下showmessage函数代码

这个函数主要是构造$show_message内容,其中$url_forward就是我们传入的$referer的内容,$referer被直接构造在timeout里,最终赋值给$show_message, 而$show_message则最终会被插入到页面模板./forumdata/templates/1_1_showmessage.tpl.php中,而我们的payload也通过参数referer最终在页面展示。

本文分享自微信公众号 - TeamsSix(OldCat0111),作者:Teamssix

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3学习笔记 | 十四、Python的语句与语法-if语句

    在Python里,if语句是选取要执行的操作。这个是在Python里主要的选择工具,代表Python程序所拥有的大多数逻辑。在之前章节也使用过,但是在整个过程中...

    TeamsSix
  • sort排序命令的使用

    sort将文件的每一行作为一个单位,相互比较,原则是从首字符按照ACSLL码值进行比较,最后按照升序输出。

    TeamsSix
  • 笔记记录 | Ubuntu下修改默认python及pip版本

    在文件中添加下面一行内容,/usr/bin/python3.5就是你要修改的python版本路径

    TeamsSix
  • Js实现video自动跳转到上次观看的位置、获取视频总时长

    任我行RQ
  • 工业路由器下的机动车尾气在线监测方案

    随着时代的发展,经济水平不断得到提高,人民的生活水平也得到日益改善,私家车成为很多家庭的必备代步工具,但是增多的汽车带来了严重的尾气排放。目前机动车尾气已成为空...

    用户7348788
  • Django rest framework源码分析(4)----版本

    版本  新建一个工程Myproject和一个app名为api (1)api/models.py from django.db import models c...

    zhang_derek
  • 警惕医疗设备遭遇“黑客”

    目前美国媒体曝出,医院里的大多数医疗设备都存在着被黑客入侵的风险:按剂量注射药物的“药物输液泵”可被远程控制而改变预先设定的输入剂量;具备蓝牙连接功能的心脏电...

    安恒信息
  • 论文笔记系列-Efficient Neural Architecture Search via Parameter Sharing

    本文提出超越神经架构搜索(NAS)的高效神经架构搜索(ENAS),这是一种经济的自动化模型设计方法,通过强制所有子模型共享权重从而提升了NAS的效率,克服了NA...

    marsggbo
  • 如何为.NETCore安装汉化包智能感知

    具体不记得是在群里还是什么地方有人问过,.NETCore有没有汉化包,答案是有,目前微软已经为我们提供了.NETCore多种语言的语言包。下面看看如何安装与使用...

    HueiFeng
  • 论EnvoyProxy控制平面发展状态

    最近,我一直在考虑有关Envoy代理控制平面的问题,因此我认为这些问题与我分享有关行业现状以及未来几年技术发展的一些结论是很有用的。

    有点技术

扫码关注云+社区

领取腾讯云代金券