目录
1.什么是文件上传漏洞
文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力。
2.生成图片木马
在路径下准备好一句话木马.php和一张图片 .png (或者 .jpg ) 输入系统指令: copy 一张图片.png/b+一句话木马.php/a 生成图片名称.png 这样图片木马就合成好了
3.靶场
1.第一关
删除事件,上传php文件,复制图像链接,打开
2.前端检测(第二关)
使用Burp软件进行抓包改包(属于前端检测)
1.浏览器设置代理,安装证书
2.开启拦截,上传文件
拦截成功(将localhost改为本地IP,并修改文件的后缀)
3.放包,关闭拦截
4.复制文件路径,浏览器中的打开
3.服务器端检测--MIME类型(第二关)
MIME是描述消息内容类型的因特网标准。 MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 常见的MIME类型如下: .js application/x-javascript .html text/html .jpg image/jpeg .png image/png .pdf application/pdf 在HTTP协议中,使用Content-Type字段表示文件的MIME类型。当我们上传文件的时候,抓到HTTP数据包。
1.首先上传一个info.php文件
2.在burp软件中查看代理,并发送给repeater,点击重发器,点击发送。我们可以看到,此时会提示文件类型不正确。
3.将content-type修改为image/png格式,然后再次发送。此时,我们就可以看到图片的路径。有时候我们服务器检测的就是content-type类型(用于定义文件类型),数据来源于客户端。
4.服务器端检测--文件类型(第十四关)
除了检测文件上传的Content-Type类型,为了保持安全性,服务器端还会检测文件内容。 php中有一个函数getmagesize(),这个函数是检查图片的大小,但是在检查之前,该函数会判断目标文件是否是一张图片,因此,可以用该函数来检测文件的内容。
1.上传文件info.php,抓包,发送给repeater。此时,文件上传失败。
2.生成图片木马
最简单的方法就是将php文件改为jpg格式,在文件开头添加GIF89a。如图,可以证实图片已存在。
5.服务器文件内容验证-文件头
常见文件幻数 JPG: FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 01 2C GIF:47 49 46 38 39 61 F1 00 2C 01 F7 00 00 64 32 33 PNG:89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
6.服务器端检测后缀名(黑白名单)
黑名单:代码中$deny_ext 数据就是一个黑名单,数组元素就是不允许上传的类型。 白名单:ext_arr
7.%00截断(第11关)
00就是Null字符,url中表现为%00,00截断会导致文件上传路径截断。
我们可以看到,有上传限制。我们将文件名改为gif格式,再次发送。
修改save_path路径,可以发现会影响上传路径
8.htaccess攻击
.htaccess是Apache服务器的分布式配置及文件,该文件会覆盖Apache服务器的全局配置,作用域是当前目录及其子目录。 如果一个web应用允许上传.htaccess文件,那就意味着攻击者可以更改Apache的配置,这是十分危险的。 首先看Apache的配置,允许.htaccess文件覆盖Apache的配置。
将.png文件当作PHP文件解析 将以下代码写入文件,并保存为.htaccess名字,放到测试目录下 AddType application/x-httpd-php .png 在同一目录下创建文件[info.png],文件内容如下 <?php phpinfo(); ?> 当我们访问该文件时,[info.png]内的PHP代码将被执行。
文件名中包含php关键字 当文件ming[info.php.png]中包含关键字[.php],并且.htaccess文件内容如下,info.php.png中的代码会被执行。 AddHandler php5-script php
匹配文件名 一下匹配是匹配文件名[ajest],找到该文件,并执行其中的php代码 <FileMatch "ajest"> SetHandler application/x-httpd-php </FileMatch> 以第四关为例 先上传.htaccess文件,再上传ajest文件,复制图片链接,浏览器打开。
9.web解析漏洞
web容器解析漏洞,就是web容器在解析脚本出现的“bug”
1.Apache解析漏洞
php版本5.2.17,环境windows2008 info.xxx.xx.x
2.IIS6.0解析漏洞(windows2003)
@ asp;.jpg time.asp:1.jpg @ 1.asp/time.jpg
第二种
3.php CGI解析漏洞
IIS7.5(windows 2008) @ IIS7.0/7.5 IIS7.0/7.5+php 环境 让IIS7.0/7.5支持php环境 http://localhost:8000/info.png/1.php
1.搭建IIS环境
2.使用phpstudy环境。
3.让IIS支持php环境
4.访问
5.预防措施
打开新建的处理映射程序,打开请求限制,打开映射即可。
6.漏洞原因
php配置的问题。 将cgi.fix_pathinfo的local value修改为0。 打开php.ini修改。
4.Nginx解析漏洞
windows 2008 /info.png/1.php cgi.fix_pathinfo
5.Nginx空字节漏洞
Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码 影响版本: nginx 0.5.* nginx 0.6.* nginx 0.7 <= 0.7.65 nginx 0.8 <= 0.8.37
6.Nginx文件名逻辑漏洞
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7 我们只需要上传一个空格结尾的文件,即可使PHP解析之。 漏洞测试: 启动漏洞环境: 环境启动后,访问http://your-ip:8080/即可看到一个上传页面。
上传文件,进行拦截。发送repeater包,点击go。我们可以看到,文件是无法上传的
将info.php修改为info.png,文件上传成功
关键步骤1:info.png后加上一个空格
访问文件,复制文件路径并打开。
点击repeater,在开启一个模块,右键打开paste URL(粘贴url作为请求)
关键步骤2:在info.png后加空格 ..php
关键步骤3:点击HEX,打开16进制模式,找到info.png ..php
将第一个点也就是图中的2e改为00
点击go发送
点击render
10.编辑器上传漏洞
1.ewebeditor编辑器上传漏洞
实验坏境: win2003 IIS服务器 ewebeditor编辑器
模拟实验: 把编辑器的目录放到网站目录下,然后在物理机上访问该网站 用户密码默认为admin,admin 由于版本问题,最好在旧版的IE浏览器中使用该编辑器
目录遍历漏洞模拟
1、点击上传文件管理,随便选择一个目录
2、点开默认网站的属性,找到主目录,点击配置
3、点击选项,勾选启用父路径
4、回到网页在网址后面加&dir=../../..就来到了C盘的根目录,并且可以随意删除
文件上传漏洞模拟
1、点击样式管理,选择设置
2、在两个选框中加入|asp后面的限制也可以改大点,方便上传大马,点击提交
3、点击预览,然后点击图片上传asp大马
4、上传大马后点击代码
5、將显示的路径复制下来
6、将路径粘贴到网址上,可以登录大马了
2.fck编辑器上传漏洞
操作环境: windows 2003
点击browser,上传一个asp大马文件
使用brup进行拦截
将文件后缀改为jpg格式,复制图片路径
首先点击Create Folder(创建文件夹)新建一个文件夹名为1.asp
点击确定
Current Folder(当前文件夹)把创建好的1.asp文件夹目录中,再创建一个2.asp的文件夹(因为不创建2.asp的文件夹1.asp的文件夹是不能使用的,所以要创建2.asp文件夹才可以使用,此版本漏洞的特性就是这样)。 创建好后2.asp系统把1.asp文件夹自动生成出来然后1.asp的文件夹才可以使用,在上传(yijuhua.jpg)木马。
打开菜刀,创建链接
然后上传一个大马文件到inmage文件下
打开black.asp
此时whomi无效
上传以一句话aspx
重新添加数据
打开此虚拟终端
可以看出我们权限不够,需要我们去提高权限
将pre.exe软件复制过来,同时将路径复制