文件包含漏洞

php文件包含漏洞,环境为phpstudy

php文件包含分为本地包含和远程包含,导致文件包含的函数有:
include();
include_once();
require();
require_once();
fopen();
readfile();

一、 php本地文件包含漏洞(LFI)(使用include函数)
1、先来看一个简单的页面
新建一个phpinfo.txt:
在这里插入图片描述
再新建一个shell.php:
在这里插入图片描述
访问shell.php,显示了phpinfo.txt的内容:
在这里插入图片描述
修改phpinfo.txt内容如下:
在这里插入图片描述
再次访问shell.php:
在这里插入图片描述
修改phpinfo.txt后缀名为py后,再次访问shell.php:

在这里插入图片描述
在这里插入图片描述
可以看到,通过shell.php访问的phpinfo页面无论后缀名是什么,都以php代码的形式执行的,如果文件不符合php规则,则以源代码形式输出(就像第一步只是输出了123456)。
2、再来看参数可控的
修改shell.php如下:
在这里插入图片描述
访问shell.php页面:
在这里插入图片描述
现在我们修改filename的参数值:
在这里插入图片描述
在这里插入图片描述
可以看到能获取到系统其它文件的内容。
把include修改为require是同样的,两者的区别是:
include是当代码执行到它的时候才加载文件,发生错误的时候只是给一个警告,然后继续执行;
require是只要程序一执行就加载文件,发送错误的时候会输出错误信息,并停止执行。
解决方案:
使用open_basedir限制目录访问
1) php.ini中设置:
在这里插入图片描述
注意路径两边不要加双引号(php5.2.17),否则会报错
再次访问其他文件,报错了:
在这里插入图片描述
2) 还有一种说是在nginx fastcgi.conf中设置的:
在这里插入图片描述
但是无论我加不加引号,都无法成功,阻挡不了访问其他文件,不知道是不是这里的配置没配好。
在这里插入图片描述
3) 在apache中的httpd.conf设置:
① 在Directory中配置如下参数
在这里插入图片描述
重启phpstudy后,再次访问其他文件,报错:
在这里插入图片描述
② 在VirtualHost中配置参数
在这里插入图片描述
注意内一定要加*:80,不然apache启动不起来,设置好后访问如下:
在这里插入图片描述
二、 远程包含漏洞(RFI)
新建一个php页面:
在这里插入图片描述
再新建一个hello.txt文件:
在这里插入图片描述
访问fileshell.php页面:
在这里插入图片描述
查看php.ini中的配置:
在这里插入图片描述
allow_url_include配置是关闭的,我们把它打开,再次访问,能访问到:
在这里插入图片描述
三、 通过包含不同的文件get shell
收集到的有:
1、文件包含的一些getshell姿势:
https://coomrade.github.io/2018/10/26/%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E7%9A%84%E4%B8%80%E4%BA%9Bgetshell%E5%A7%BF%E5%8A%BF/
上面的文章包含了两部分,一部分是利用php://filter/string.strip_tags造成segment fault,原理是利用了向php程序上传文件时会在/tmp目录下生成临时文件。
一部分是利用了session.upload把木马写入服务端session文件。

2、浅析php文件包含及其getshell的姿势:
https://xz.aliyun.com/t/5535
allow_url_include和allow_url_fopen都开启时,可以利用远程url或者php://协议直接getshell。
allow_url_include和allow_url_fopen都关闭时,在window环境下,可以借助UNC路径。
3、RFI绕过URL包含限制getshell
https://paper.seebug.org/923/
这篇也是当allow_url_include和allow_url_fopen都为off时的攻击场景。

还有下面这篇列了getshell的各种姿势
https://www.jianshu.com/p/0cc01ee0d247
4、包含图片木马写shell
5、包含日志getshell
6、使用PHP封装协议GetShell
7、phpinfo包含临时文件GetShell
8、包含环境变量文件GetShell

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值