pikachu靶场之文件下载和上传

1、文件下载

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。

查看pikachu中文件下载,点击图中下面人名,可以直接进行图片下载,查看文件下载url为:execdownload.php?filename=kb.png,将filename后面的图片名改为ns.png,可以直接下载ns.png图片:

查看图片文件路径:

图片文件路径为:C:phpStudyPHPTutorialWWWpikachuvulunsafedownloaddownload;

Filename后面接的图片文件在download目录下,通过filename参数对应的文件名称,filename=../../../index.php ,从download文件夹开始往上层走,找到了如下pikachu文件夹下的index.php文件就可以将index.php文件下载下来。

文件下载漏洞利用思路:

当遇到一个任意文件下载时,我们的一般利用思路:比如下载哪些文件呢?

(1)下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置

(2)下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。

(3)下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。

如果是linux系统的话,尝试读取/root/.bash_history看自己是否具有root权限。如果没有的话。我们只能按部就班的利用../来回跳转读取一些.ssh下的配置信息文件,读取mysql下的.bash_history文件。

文件下载漏洞修复:

(1)过滤".",使用户在url中不能回溯上级目录

(2)正则严格判断用户输入参数的格式

(3)php.ini配置open_basedir限定文件访问范围

2、文件上传

大多数网站都有文件上传的接口,但如果在后台开发时并没有对上传的文件进行安全考虑或采用了有缺陷的措施,导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意文件,然后通过该恶意文件的访问来控制整个后台。文件上传是获取webshell来控制服务器最快的方法。现在这种漏洞大站点很难发现,小站点还有很多。

2.1 client check(前端js校验绕过)

上传非图片文件出现上传失败,显示上传文件不符合格式,将onchange="checkFileExt(this.value)"删除后,可完成上传非图片格式的phpn木马文件;

2.2 MIME type(MIME文件类型)

上传php文件,抓包将content -type的文件类型改为图片类型:image/jpeg,放包,完成非图片文件上传;

2.3 getimagesize(代码注入绕过)

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条E_WARNING 级的错误信息,如果用这个涵数来获取类型,从而判断是否是图片的话,会存在问题。其实这个函数比较难绕过,也就是比较安全的一个函数,绕过它还需要一个前提条件,就是对方站点还要有一个文件包含漏洞,才能绕过它。这个函数检查的就是文件扩展名。

上传php木马文件,使用burp抓包,在php内容前面添加图片头GIF89a,同时修改filename后面的文件名后缀为jpg,将content-type改为图片类型:image/jpg,放包完成文件上传:


文件上传绕过方法:

1、客户端:前端js抓包绕过(直接在浏览器上修改,将控制onchange函数删掉了;或者将文件后缀改为图片jpg格式,然后抓包,再将文件后缀改为php);

2、服务端:

1)检查后缀:

(1)黑名单:

上传特殊可解析后缀;

上传.htaccess文件绕过;

后缀大小写绕过;

空格点绕过或者点空格点绕过(这个是利用windows命名特性绕过,抓包在文件名后面加空格点绕过);

::$DATA绕过(抓包直接在文件名后添加::$DATA);

配合解析绕过(iis文件解析漏洞:asp文件名后添加:.jpg,:后面内容不解析,会当作asp文件解析(这个是利用windows命名特性绕过));

双写后缀名绕过;

(2)白名单:

MIME截断绕过;

%00截断绕过(php语言自身问题,只存在与php低版本(只适用于php版本小于5.3.4),且魔法符号为关闭状态:在请求头路径后面添加文件名并在文件名后面加%00,且下面文件名后缀改为.jpg);

2)检查内容:

文件头检查;

突破getimagesize()(伪装文件数据头部GTF89a);

突破exif_imagetype();

二次渲染(全文件数据检查:将所有数据全部检查一遍,并且写入到另外一个同类型的文件中):只有一些图片码才能绕过(全靠碰运气);

3)其他:

条件竞争:时间竞争和重命名竞争;

时间竞争:抓包使用测试器验证,一方面不断上传,一方便不断请求; 效果不一定能显示出来;

重命名竞争:发起大量请求,利用有些上传文件来不及重命名的的特性;


文件上传漏洞防御:

--验证文件类型、后缀名、大小;

--验证文件的上传方式;

--对文件进行一定复杂的重命名;

--不要暴露文件上传后的路径,隐藏上传文件路径;

展开阅读全文

页面更新:2024-05-04

标签:上传   靶场   文件   后缀   文件名   路径   函数   漏洞   后台   竞争   图片

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top