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信息: