返回

PHP的LFI之痛(phpinfo+lfi(zip)为例)

PHP的LFI的漏洞大部分来自于不安全的配置.

常见的漏洞函数:

include(),require()、include_once(),require_once()
magic_quotes_gpc()、allow_url_fopen()、allow_url_include()、move_uploaded_file() 、readfile() file()、and file_get_contents()、upload_tmp_dir()、post_max_size()、and max_input_time()等

eg:

<?php include($_GET['page'].'php')?>

虽然说lfi的漏洞可能出现的情况很多,但是大多数漏洞还是比较鸡肋的. 像apache的日志 包含/proc/self/environ环境变量 之类的 总的来说条件是比较苛刻的. 还有一些伪协议之类的,例如php:filter php:input// data:// zip:// …

0x01

这里我主要介绍一下phpinfo+lfi(zip伪协议)的情况。 首先的找到一个phpinfo的页面,这样才能利用它的超全局变量_FILES[“file”] 我们上传一个文件的时候有时是会被上传到一个指定的目录下的,名字也会被重新命名,所以并不好找.但是中间要在/tmp目录下先生成一个临时的文件,一旦php将临时文件的信息写入其他地方,临时文件就会被删除。 恰好临时文件的名字在_FILES[“file”]中有,所以我们就可以包含它来达到我们要的目的,拿shell之类的. 先看看图: phpinfo信息:

上传文件:
大致过程是: 文件上传–>php开始分析文件–>创建临时文件–>写入数 据到临时文件–>关闭临时文件–>执行脚本生成上传的文件–>删除临时文件 所以攻击的发生在写入数据之后到删除临时文件之前即可.

Licensed under CC BY-NC-SA 4.0