论PHP常见漏洞第二弹:常见的包含漏洞
包含一般也就分为LFI、RFI,即local file inclusion和remote file inclusion
LFI
对于LFI的话,因为很多都限制了包含的后缀结尾必须为.php, Include ($a.'.php') 例如这种的。
所以我们想包含我们的图片马儿的话,那么就需要截断后面的这.php
-
00截断。需要gpc off && php
-
长文件名截断。反正这个我很少成功。
-
转换字符集造成的截断。这个对包含的话基本用不上。
还有一些cms限制包含的后缀必须为.php,例如下面一段简单的代码
$include_file=$_GET[include_file];if ( isset( $include_file ) && strtolower( substr( $include_file, -4 ) ) == ".php" ) { require( $include_file ); }
对传递过来的截取了后面4个字符,然后判断是不是“.php”,如果是“.php”才进行包含。这里可以用zip(或者phar)协议嘛(当然这个也是找laterain学的,哈哈)。
首先新建一个1.php,里面随便写个phpinfo吧,
然后压缩成.zip,接着把zip的名字改成 yu.jpg。
然后把这个.jpg上传上去 然后包含:
对于一些LFI找不到上传图片的地方的话,也有很多牛发过了一些不能上传图片LFI的技巧,各种包含日志、环境变量啥的,这里我就也不多说了。
RFI
下面再来说RFI。
如果能RFI的话,那么就是最方便的了。包含远程文件,或者又是 php://input data 啥的,各种伪协议。
但是也都知道RFI最大的限制条件就是需要 allow_url_include on 且“变量前未定义路径”或者“常量”。
而 Allow_url_include 默认都是off,那么无论是 allow_url_include on 还是“变量前无路径”或者“常量”,那都是RFI的硬伤。
这里介绍一种在allow_url_include off的情况下也能rfi的技巧,但是成功率也并不太高。
首先在php.ini里看一下 allow_url_include :
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.allow_url_include = Off
翻译过来就是,允许包含url,例如 http:// 、 ftp:// 之类的协议。当off的时候肯定就是不允许去包含这样的协议。
这里我们先来测试一下:
<?phpinclude($_GET[yu]);
首先 allow_url_include && allow_url_fopen 都为on的时候
成功RFI。
然后 allow_url_include 为 on,allow_url_fopen 为off
直接包含远程文件失败。这时候我们用一下伪协议试试。
再次成功rfi。
当allow_url_include && allow_url_fopen 为off的时候。
伪协议失败。
而包含文件的方式:
URL file-access is disabled in the server configuration ,说明也不允许包含。
然而,肯定还有不少人记得很久以前的那个星外无可执行目录的时候,利用远程调用cmd继续提权。
那个利用的是共享文件,然后在星外主机上来执行。
那么这里我们也试试:
包含共享文件成功!这里只本地测试了,没具体测试远程。但是由于445的原因 可能基本都失败。
转载自: http://drops.wooyun.org/papers/4544 ,在原文基础上有简单整理修改。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

深入解读ReactPHP的非阻塞特性ReactPHP的一段官方介绍引起了不少开发者的疑问:“ReactPHPisnon-blockingbydefault....
