简单了解文件包含漏洞

  1. 原因:
  2. 内容包含
    (就是在开发的时候, 如果用到重复的代码, 只要引用那段代码就可以了
  3. 函数包含
    就是将被多次重复使用的方法函数单独存起来, 用到的时候引用就可以了

分类:
1.
本地包含(Loacl File Inclusion , 即 LFI) , 目录遍历, 任意访问文件漏洞

可以通过固定文件名, 通过接口动态包含, 包含恶意代码或图片, 包含敏感文件等

远程包含(Remote File Inclusion) RFI

区分XXE , SSRF , RFI

  1. XXE(XML外部实体注入)
    原因: 使用XML传输数据并且允许解析外部实体.
    后果: 导致访问敏感文件, 探测端口,执行系统命令等
  2. SSRF(服务端请求伪造)
    原因:
    使用了 curl_exec()之类的函数
    后果:
    导致端口扫描,攻击内网主机, 绕过防火墙, 获取敏感信息, 访问大文件造成内存溢出, 操作Redis等问题.
  3. RFI(远程文件包含)
    原因:
    使用了include
    后果:
    导致任意文件访问, 包含shell的代码.

相关函数(php)

可到php官网上查看具体作用

  1. include
  2. include_once
  3. require
  4. require_once
  5. fopen
  6. readfile
  7. highlight_file
  8. show_source
  9. file_get_content
  10. file

php中的伪协议

​https://www.php.net/manual/zh/wrappers.php​​ 一共12个, 当然其中的功能模块必须在源代码中开启才能使用, 不然无法使用的.

演示

此处使用CTFHub
学习 ----->技能树里面的Web-------> RCE

可自行练习. 可以借助插件hackbar获取信息.

文件包含漏洞的挖掘

  1. url中的关键字:
    page, file, file_name , include

例如:
?file=content

  1. url中出现文件名
    ^^^.php , ^^^.html
    例如:
    ?home=random.html
    ?page=random.asp

挖掘流程:
发现漏洞--->上传shell(读取敏感文件)--->执行恶意代码

可利用的工具
​​​https://github.com/D35m0nd142/LFISuite​

**小技巧: 如果要在url中指定路径的时候, 可以集合kali中的wfuzz, 用的时候因为不知道几级所以可以多打几个../../../../../../ 多了没关系,不影响的.

文件包含漏洞的修复

  1. php配置
    将两个函数关掉就可以了.
allow_url_include=off
allow_url_fopen = off
  1. 禁用动态配置
  2. 过滤协议,目录字符
  3. 设置文件白名单
    就像靶场中源代码中的那样, 设置白名单,黑名单.