### 简要描述:
一个二次操作造成的任意文件写入。需要一定权限,自评为鸡肋。作为一个诚实的孩子,是怎样就怎样,我会把问题说的很清楚以避免误会哦~
### 详细说明:
只拿整站做说明,下载最新版本。
/inc/function.inc.php 1507行
```
//自定义内容页文件名缓存生成
function get_showhtmltype(){
global $db,$pre,$Fid_db;
$query = $db->query("SELECT aid,htmlname FROM {$pre}article WHERE htmlname!=''");
while($rs = $db->fetch_array($query)){
$show.="\$showHtml_Type[bencandy][{$rs[aid]}]='$rs[htmlname]';\r\n";
}
foreach( $Fid_db[iftable] AS $key=>$erp){
$query = $db->query("SELECT aid,htmlname FROM {$pre}article$erp WHERE htmlname!=''");
while($rs = $db->fetch_array($query)){
$show.="\$showHtml_Type[bencandy][{$rs[aid]}]='$rs[htmlname]';\r\n";
}
}
write_file(ROOT_PATH."data/showhtmltype.php","<?php\r\n".$show.'?>');
}
```
一个生成什么页面的函数。我们看到,其中将htmlname从数据库中取出,直接放入$show.="\$showHtml_Type[bencandy][{$rs[aid]}]='$rs[htmlname]';\r\n";。那么htmlname只要闭合前面的引号(因为是二次操作,所以不需要考虑全局的addslashes),就能造成PHP代码最后写入ROOT_PATH."data/showhtmltype.php"文件。
我们看到这个函数在哪里调用:
[<img src="https://images.seebug.org/upload/201502/13235933ab4d720bb8ea059082cc246e6cd1deb3.png" alt="屏幕快照 2015-02-13 下午11.58.54.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/13235933ab4d720bb8ea059082cc246e6cd1deb3.png)
[<img src="https://images.seebug.org/upload/201502/13235944d75fc3ed7f20d1b63bbb4b88dc4143be.png" alt="屏幕快照 2015-02-13 下午11.59.06.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/13235944d75fc3ed7f20d1b63bbb4b88dc4143be.png)
如上两图,实际上就是在增加文章、修改文章两个过程中调用的。
而默认情况下,注册用户是可以给“美女欣赏”这个栏目投稿,也就是增加文章的。但我们还需要一个权限,必须能“自定义内容页文件名”,需要后台给某些用户组开启这个权限:
[<img src="https://images.seebug.org/upload/201502/140002509ca2ec3f40ba617949777ef42a7809d6.png" alt="屏幕快照 2015-02-13 下午11.30.20.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/140002509ca2ec3f40ba617949777ef42a7809d6.png)
具体操作方法见“漏洞证明”
### 漏洞证明:
首先我的用户组是有相关权限了。投稿给“美女欣赏”这个栏目。
我选择在修改文章的时候进行getshell。新投稿一篇文章,来到http://10.211.55.3/qibocms/member/post.php?job=edit&fid=10&aid=666,aid是我这篇文章的id。这里有“自定义文件名”:
[<img src="https://images.seebug.org/upload/201502/14000809ef2559814cfff10f292d51680384424f.png" alt="屏幕快照 2015-02-14 上午12.07.30.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/14000809ef2559814cfff10f292d51680384424f.png)
如上图,在其他设置里,将自定义文件名用单引号闭合后,插入shell。需要以.html结尾。提交。
http://10.211.55.3/qibocms/data/showhtmltype.php可见已经getshell:
[<img src="https://images.seebug.org/upload/201502/140011537d3d07cf1fc1ec54bfe7903f4f419748.png" alt="屏幕快照 2015-02-14 上午12.11.13.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201502/140011537d3d07cf1fc1ec54bfe7903f4f419748.png)
暂无评论