DVWA学习日记-5 文件上传

文件上传

举例:
这里讲一个很有名的,千里之堤,溃于蚁穴,警示我们要注重细节,一只蚂蚁也能毁了堤坝,我们就是要将不起眼的蚂蚁送到这个堤坝上,这里堤坝就是网站,蚂蚁就是文件

概念:
Web中的常用功能,将本地文件上传到服务器上

文件上传漏洞,Web运行用户上传恶意代码,并在服务器上运行
文件上传类似代码:upload(“hello.php”),上传对应的是upload的函数,文件就是hello.php,文件就是我们可以控制的,我们要做的就是将我们设计好的文件上传上去

准备:
火狐浏览器
DVWA
FoxyProxy
OWASP ZAP

手工实战
1.进入简单模式
进入File Upload,是文件上传漏洞的主界面,常见的上传图片的功能
DVWA学习日记-5 文件上传_第1张图片
2.面对陌生页面第一的反应就是试
网上随便找个图片,命名为test.jpg
DVWA学习日记-5 文件上传_第2张图片
3.上传这张图片
DVWA学习日记-5 文件上传_第3张图片
4.点了upload后
发现出现了红框里的字,意思是上传成功了
DVWA学习日记-5 文件上传_第4张图片
5.上传后的路径
我们研究一下这个路径,与我们的url进行对比

url:
http://localhost/DVWA-master/vulnerabilities/upload/#
上传地址:
../../hackable/uploads/test.jpg succesfully uploaded!
再进行拼接得到了完整的路径
http://localhost/DVWA-master/vulnerabilities/upload/../../hackable/uploads/test.jpg
再将../../做消除操作,得到链接
http://localhost/DVWA-master/hackable/uploads/test.jpg

6.我们再去访问一下这个图片
DVWA学习日记-5 文件上传_第5张图片
正常操作告一段落
7.尝试操作不正常的
在本地创建一个phpinfo.php文件,执行后是服务器的信息
在这里插入图片描述
8.将我们的phpinfo.php上传至服务器

DVWA学习日记-5 文件上传_第6张图片
9.访问看一下这个文件,成功执行,这里就说明存在文件上传漏洞,能够执行并查看文件
DVWA学习日记-5 文件上传_第7张图片
10.执行phpinfo只是判断漏洞的存在
上传一句话webshell
创建cmd.php
在这里插入图片描述
11.上传后访问文件
DVWA学习日记-5 文件上传_第8张图片
12.执行我们的命令
?cmd=phpinfo();
DVWA学习日记-5 文件上传_第9张图片
13.我们来查看一下系统命令
?=cmd=system(‘dir’); 运用到php的system函数
DVWA学习日记-5 文件上传_第10张图片
查看文件的操作
type命令,反斜杠需要转移的
DVWA学习日记-5 文件上传_第11张图片
14.进入中等等级模式
尝试上传cmd.php文件
报错:你上传的不是图片,不允许上传
DVWA学习日记-5 文件上传_第12张图片
15.准备代理
首先使用代理,变红表示启用
DVWA学习日记-5 文件上传_第13张图片
再加设置
DVWA学习日记-5 文件上传_第14张图片
保存
DVWA学习日记-5 文件上传_第15张图片
启用代理
DVWA学习日记-5 文件上传_第16张图片
而zap的代理默认就是127.0.0.1 8080

16.准备抓包
先上传正常图片的包
DVWA学习日记-5 文件上传_第17张图片
上传webshell的包
DVWA学习日记-5 文件上传_第18张图片
对比一下
发现文件名的差别,还有文件类型以及文件内容的差别
正常包的内容都是二进制文件
DVWA学习日记-5 文件上传_第19张图片
17.我们不断猜测,发现好像是文件类型的地方被服务端限制了
修改文件类型重新发送

DVWA学习日记-5 文件上传_第20张图片
成功绕过文件类型限制,后面的利用就跟简单模式一样
DVWA学习日记-5 文件上传_第21张图片
查看源代码
DVWA学习日记-5 文件上传_第22张图片
18.进入高难度模式
尝试使用修改文件类型的,结果无法上传

19.尝试
我们尝试下上传文件的后缀和文件内容是不是受到限制了
尝试php后缀名和php内容 失败
尝试php后缀名和img内容 失败
尝试img后缀名和php内容 失败

20.最后知道是文件类型和内容一起限制了
我们就做内涵图进行绕过
准备一张图片,和1.txt里面写入
DVWA学习日记-5 文件上传_第23张图片
在cmd下输入copy 1.jpg/b+1.txt/a 2.jpg
再打开这张图片发现没有任何变化
DVWA学习日记-5 文件上传_第24张图片
利用编辑器打开拉到最后可以看到php代码

21.上传
DVWA学习日记-5 文件上传_第25张图片
查看这张图片
DVWA学习日记-5 文件上传_第26张图片

22.上次笔记4中的文件包含漏洞,高难度的,需要配合文件上传漏洞进行file访问本地的文件

这时候我们就可以两个一起配合使用
前面的乱码就是图片内容
DVWA学习日记-5 文件上传_第27张图片
23.使用菜刀
利用webshell上传
再使用菜刀访问webshell即可

24.nginx文件类型错误解析漏洞
phpstudy切换Nginx
DVWA学习日记-5 文件上传_第28张图片
进入查看php.ini的配置
DVWA学习日记-5 文件上传_第29张图片
确保cgi.fix_pathinfo为1
在这里插入图片描述

这样服务端设置存在畸形解析
xxx.xxx/xxx.php
2.jpg后面的路径是/2.php
而/2.php是不存在的,畸形解析了它
DVWA学习日记-5 文件上传_第30张图片
查看源代码
DVWA学习日记-5 文件上传_第31张图片
最后进入无漏洞模式
我们再上传2.jpg的php内容的文件,上传完再下载下来,被服务端重新生成了图片,有效修复了漏洞

查看源代码
红框中就是重新编码了图片文件
DVWA学习日记-5 文件上传_第32张图片

修复
1.文件后缀名的白名单
2.文件类型的匹配
3.文件内容的判断
4.阻止非法文件的执行

在不可能模式中
将文件重命名
将文件压缩重写生成
存储目录执行权限
存储目录与Web分离

你可能感兴趣的:(DVWA)