### 简要描述: RT ### 详细说明: 漏洞一:鸡肋的getshell(需注册并能发布文章,需配合apache、iis6解析漏洞) 文件 /inc/artic_function.php ``` //采集外部图片 function get_outpic($str,$fid=0,$getpic=1){ global $webdb,$lfjuid; if(!$getpic){ return $str; } preg_match_all("/http:\/\/([^ '\"<>]+)\.(gif|jpg|png)/is",$str,$array); $filedb=$array[0]; foreach( $filedb AS $key=>$value){ if( strstr($value,$webdb[www_url]) ){ continue; } $listdb["$value"]=$value; } unset($filedb); foreach( $listdb AS $key=>$value){ $filedb[]=$value; $name=$lfjuid.'_'.rands(5)."__".basename($value);//拼接文件名,当文件名为1.php.jpg 、1.asp;.gif 可作为解析漏洞利用 if(!is_dir(ROOT_PATH."$webdb[updir]/article/$fid")){ makepath(ROOT_PATH."$webdb[updir]/article/$fid"); } $ck=0; if( @copy($value,ROOT_PATH."$webdb[updir]/article/$fid/$name") ){ $ck=1; }elseif($filestr=file_get_contents($value)){ $ck=1; write_file(ROOT_PATH."$webdb[updir]/article/$fid/$name",$filestr); } ``` 利用方法:发表文章,勾选"是否将文章中的外部图片采集回来" 文章内容直接写图片马地址. [<img...
### 简要描述: RT ### 详细说明: 漏洞一:鸡肋的getshell(需注册并能发布文章,需配合apache、iis6解析漏洞) 文件 /inc/artic_function.php ``` //采集外部图片 function get_outpic($str,$fid=0,$getpic=1){ global $webdb,$lfjuid; if(!$getpic){ return $str; } preg_match_all("/http:\/\/([^ '\"<>]+)\.(gif|jpg|png)/is",$str,$array); $filedb=$array[0]; foreach( $filedb AS $key=>$value){ if( strstr($value,$webdb[www_url]) ){ continue; } $listdb["$value"]=$value; } unset($filedb); foreach( $listdb AS $key=>$value){ $filedb[]=$value; $name=$lfjuid.'_'.rands(5)."__".basename($value);//拼接文件名,当文件名为1.php.jpg 、1.asp;.gif 可作为解析漏洞利用 if(!is_dir(ROOT_PATH."$webdb[updir]/article/$fid")){ makepath(ROOT_PATH."$webdb[updir]/article/$fid"); } $ck=0; if( @copy($value,ROOT_PATH."$webdb[updir]/article/$fid/$name") ){ $ck=1; }elseif($filestr=file_get_contents($value)){ $ck=1; write_file(ROOT_PATH."$webdb[updir]/article/$fid/$name",$filestr); } ``` 利用方法:发表文章,勾选"是否将文章中的外部图片采集回来" 文章内容直接写图片马地址. [<img src="https://images.seebug.org/upload/201406/01002921112b34acd8bcf026de42d10dfd44fce6.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/01002921112b34acd8bcf026de42d10dfd44fce6.jpg) [<img src="https://images.seebug.org/upload/201406/0100300744d95143658584c4ee066adbe0a05176.jpg" alt="2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/0100300744d95143658584c4ee066adbe0a05176.jpg) 漏洞二:任意文件读取(鸡肋,需注册并能在图片频道发布文章) 文件 /inc/check.postarticle.php ``` ......省略...... //图片频道转移图片目录 if($mid==100){ //mid=100,对应的是图片频道 foreach($post_db[photourl][url] AS $key=>$value){ //图片url可控,为发布图片处post方式传入 $value=trim($value); if(!$value||eregi("://",$value)){ continue; } if(!$postdb[picurl]){ copy(ROOT_PATH."$webdb[updir]/$value",ROOT_PATH."$webdb[updir]/{$value}.jpg");//图片文件copy,如果copy一个php呢? 文件名就会变成config.php.jpg,从而可以读到配置信息. $postdb[picurl]="{$value}.jpg"; } move_attachment($lfjuid,tempdir($value),"photo/$fid"); if(is_file(ROOT_PATH."$webdb[updir]/photo/$fid/".basename($value))){ $post_db[photourl][url][$key]="photo/$fid/".basename($value); } } ......省略...... ``` 利用方法: 注册用户,在图片频道下的栏目发布文章,图片路径处填写要读取的文件。 [<img src="https://images.seebug.org/upload/201406/01010631732ce86dd67e045572ba3825c64d7233.jpg" alt="3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/01010631732ce86dd67e045572ba3825c64d7233.jpg) [<img src="https://images.seebug.org/upload/201406/01005308e353c3c69c65fec10f444680c3b384f8.jpg" alt="4.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/01005308e353c3c69c65fec10f444680c3b384f8.jpg) 从/data/config.php中我们可以读到管理后台地址,加密密玥等信息.有了密钥我们可以构造cookie登录后台,也可以sql注射(无视GPC) 文件 /inc/common.inc.php ``` ......省略..... //同步后台登录 if($_COOKIE["adminID"]&&$detail=mymd5($_COOKIE["adminID"],'DE',$onlineip)){ unset($_uid,$_username,$_password); list($_uid,$_username,$_password)=explode("\t",$detail); $lfjdb=$db->get_one("SELECT * FROM {$pre}memberdata WHERE uid='$_uid' AND username='$_username'"); } //$_password没有参与登录验证过程,只要uid与username对应就ok. if($lfjdb[yz]){ $lfjid=$lfjdb['username']; $lfjuid=$lfjdb['uid']; $lfjdb[icon] && $lfjdb[icon]=tempdir($lfjdb[icon]); if($lfjdb['groupid']==3||$lfjdb['groupid']==4){ $web_admin=$sort_admin='1'; } ......省略...... ``` 所以只要知道加密使用的密钥,就能登录后台。 测试版本:v7_utf8,其他版本也可能存在,没有测试. ### 漏洞证明: ..