Web安全技术 实验报告四 文件包含与上传

一、文件包含

1.File Inclusion(local)

选择kobe测试

 

发现url出现变化

 

可以猜测此功能为文件包含,包含的文件为 file1.php,所以我在此盘符的根目录下建立了一个flag.php文件,再测试。

 

 

发现可以读取根目录下的flag文件,存在本地文件包含漏洞。

2.远程文件包含

选择kobe提交,发现url也发生变化

 

所以这次构造url去包含,我选择了我的博客园地址https://www.cnblogs.com/p201721240019

 

 

所以远程文件包含成功。
 

二、unsafe filedownload

打开站点发现提示点击链接就可下载图片。

随便复制一个下载链接,发现

http://192.168.129.1:81/pikachu/vul/unsafedownload/execdownload.php?filename=kb.png

 

不是根据路径下载,而是通过传参下载图片。

 

于是照常构造payload

http://127.0.0.1/pikachu/vul/unsafedownload/execdownload.php?filename=../../../../../../flag

访问此链接,发现开始下载flag文件,任意文件下载漏洞产生。

 

三、unsafe upfileupload

1.client check

所以我们首先要判断是前端验证还是后端验证,利用审查元素来判断。

 

 

 跟踪此函数,得到前端js校验代码

所以用Burp抓包

我们先选择gif后缀的php一句话木马文件

点击上传,利用burp拦截数据包

 

 修改filename为1.php点击forward

 

 

 

 上传成功,路径为uploads/1.php

所以我们构造payload直接执行命令

http://192.168.129.1:81/pikachu/vul/unsafeupload/uploads/1.php?11049=whoami

 

 

 

 

 

 

 getshell

2.MIME type

同上,但是这次通过查看审查元素,没有发现有前端验证,然后根据测试发现只能传图片文件,但没有检测文件名。

 

//只通过判断Content-Type: 字段来确定文件类型
//修改filename即可
Content-Disposition: form-data; name="uploadfile"; filename="1.php"
Content-Type: image/jpeg

 


构造payload

 

http://192.168.129.1:81/pikachu/vul/unsafeupload/uploads/1.php?11049=whoami

 

 

成功。

3.getimagesize()

同上,经过判定无前端验证,提交一句话测试。

 

发现服务器判定文件为假图片,根据此漏洞名可以判定为,此上传过滤依靠文件大小进行判定,将一句话木马拼接在图片后面。

生成了一个图片马

然后上传发现,修改filename来绕过后端检查失败

 

 

 

 可以判定为白名单,只能使用00截断试一试

 

 

 

 

 

发现没用,服务器端将你上传的文件进行重命名了,所以要想此文件被解析成php文件,我们只能利用文件包含漏洞去包含图片马。

利用之前文件包含漏洞的payload去包含此图片马,构造payload


http://192.168.129.1:81/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2019/12/23/2908615e0025461af48047963938.jpg&submit=%E6%8F%90%E4%BA%A4

 

 

 

 

 

执行whoami

 

 

 

 
posted @ 2019-12-21 11:02  万里月光  阅读(881)  评论(0)    收藏  举报