利用解析漏洞与写文件漏洞getwebshell小记一篇

  • A+
所属分类:安全文章

0x01 目标基本信息搜集,发现敏感文件

目标 xxx.com
手工测试了下没发现注入,上传之类的,网站也很简单
gpc也开着,所有就算有包含漏洞也没什么用了
google一下也没发现什么有用的东西,后台地址也没有

拿出pker 扫了下,发现有.bash_history文件和 /tmp目录 没发现别的有用的
/tmp打开发现居然是服务器的连接状态,发现22端口开着,不过连不上,也不知道是不是ssh端口

tcp 0 0 :::22 :::* LISTEN

tcp 0 0 :::9022 :::* LISTEN


0x02 从敏感文件发现网站备份,发现解析漏洞

仔细翻了翻.bash_history
就发现一处可能有用的

利用解析漏洞与写文件漏洞getwebshell小记一篇


访问http://xxx.com/api/myfile.zip 文件还在

不过这个时候才注意到服务器是nginx的,而且还有解析漏洞,只要找到能传图片的地方基本就能搞定了

0x03 从网站备份包里寻找漏洞,毫无收获
myfile.zip文件

利用解析漏洞与写文件漏洞getwebshell小记一篇


利用解析漏洞与写文件漏洞getwebshell小记一篇


里面总共也没几个php文件,看来有悬
在源码里搜索了下fwrite一个都没

利用解析漏洞与写文件漏洞getwebshell小记一篇

又搜索fopen,总共发现三处,有两处是写文件的

 $handle = fopen("/data/web/api/con/con2012-".$date.".csv","w+");                 fputcsv($handle,array("当日参与id","用户姓名","电话","参与类型","0:未处理,1:中奖或发券","操作时间"));                 foreach($DataArrays as $key=>$data){                         $data["name"]=iconv('utf-8', 'gbk', $data["name"]);                          //var_dump($data);             fputcsv($handle,$data);                 }                 fclose($handle);

悲剧的是没找到调用的地方,我看到config.php还包含了别的目录下的文件,估计是别的目录下调用的


又在config.svntext-base下发现了key.pem.svn-base 和pub.pem.svn-base

利用解析漏洞与写文件漏洞getwebshell小记一篇


利用解析漏洞与写文件漏洞getwebshell小记一篇


不过连不上22端口,所以也没用

看到.svn
我又跑到web的其它一些目录下试了下/.svn/entries文件存不存在,忙活了半天也没啥收获

还是继续看看myfile能不能发现什么

在app/controller/admincontroller.php
找到了后台登陆地址,猜了下弱口令无果

继续往下看代码倒是发现一处上传的

        public function add_vido(){//在线视频                 $p = $this->getAllParams();                                  if($_FILES['img']['name']!=''){                         if($_FILES['img']['error'] > 0){                         $this->echoAlert('上传文件失败,请联系客服');                         }else{                         $type = explode('/',$_FILES['img']['type']);                         $_FILES['img']['name'] = time().".".$type['1'];                                 if(!move_uploaded_file($_FILES['img']['tmp_name'],$this->vido_img.$_FILES['img']['name'])){                                         $this->echoAlert('文件上传失败,请联系客服');                                 }                         }

悲剧了是验证了登陆状态

                if(!isset($_SESSION['admin_role'])){                         //exit('非法操作');                         $this->_redirect('/api/?c=admin');                 }

利用解析漏洞与写文件漏洞getwebshell小记一篇


而且还没注入。。

最后在/logs/目录下看到些记录文件

利用解析漏洞与写文件漏洞getwebshell小记一篇

0x04 柳暗花明,发现一处可写点

于是搜索了下 logs

找到了操作的地方

<?php header("Content-type: text/html; charset=utf-8"); $postString=print_r($_POST,true); foreach($_POST as &$p){         $p=str_replace(',','',$p); } unset($p);  $html=date('Y-m-d H:i:s').'|'.$_SERVER['REMOTE_ADDR'].'|'.$postString."rn"; file_put_contents(dirname(__FILE__).'/logs/'.date('Y-m-d').'.txt',$html,FILE_APPEND); $thtml=date('Y-m-d H:i:s').','.$_SERVER['REMOTE_ADDR'].','."姓名:".$_POST['name'].',职业:'.$_POST['profession'].',手机号:'.$_POST['mobile'].',年龄:'.$_POST['age']."rn"; file_put_contents(dirname(__FILE__).'/logs/'.date('Y-m-d').'.csv',$thtml,FILE_APPEND); echo '您的信息已经被成功提交~!谢谢参与~!'; ?>

文件名是年月日.txt


内容:

$postString=print_r($_POST,true); $html=date('Y-m-d H:i:s').'|'.$_SERVER['REMOTE_ADDR'].'|'.$postString."rn";

可控呵呵


自己随便post试下

利用解析漏洞与写文件漏洞getwebshell小记一篇


利用解析漏洞与写文件漏洞getwebshell小记一篇


没问题

0x05 成功getwebshell
phpinfo()看看

利用解析漏洞与写文件漏洞getwebshell小记一篇


利用解析漏洞与写文件漏洞getwebshell小记一篇


直接nginx解析漏洞

利用解析漏洞与写文件漏洞getwebshell小记一篇

*********************************************************************************

中间省略了一些枯燥无味的过程,各位顶顶更健康

本文始发于微信公众号(T00ls):利用解析漏洞与写文件漏洞getwebshell小记一篇

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: