### 简要描述:
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,其他版本也可能存在,没有测试.
### 漏洞证明:
..
暂无评论