当前位置: 首页 > article >正文

面试笔记6--文件包含漏洞

目录

前言

一、原理和危害

1.原理

2.危害

二、分类

三、防御措施

四、导致的文件包含函数

五、PHP中Require和Include函数的区别

六、文件包含漏洞的利用思路

七、假设攻击者已经知道某网站存在且仅存在本地文件包含漏洞,并且没有文件上传漏洞及其他漏洞,如何getshell

八、php中要实现远程文件包含则需要对php.ini做什么操作

九、在php站点中,如果想使用user-agent插入php代码,如何进行包含

十、windows特殊文件有哪些

十一、linux特殊文件有哪些

十二、文件包含漏洞的绕过方式有哪些

十三、常见的日志存放路径

总结


前言

本文记录了博主文件包含漏洞的面试笔记。


一、原理和危害

1.原理

文件包含漏洞的原理:由于未经过滤或验证的用户输入被直接包含到动态页面中,使得攻击者可以利用恶意输入来读取或执行服务器上的文件。

2.危害

文件包含漏洞的危害主要有:敏感信息泄露、远程文件执行、服务器拒绝服务等。

二、分类

文件包含漏洞可以分为本地文件包含和远程文件包含:

(1)本地文件包含是指:攻击者利用该漏洞,将恶意的本地文件包含到页面中,从而执行恶意代码或读取敏感文件。攻击者通常利用URL参数或其他用户可控制的输入来触发漏洞。

(2)远程文件包含允许攻击者包含远程服务器上的文件,攻击者会传递一些包含恶意代码的URL。

三、防御措施

参考链接:文件包含漏洞面试题 | blog小窝

任意文件包含漏洞主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。

(1)设置白名单:代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。

(2)过滤危险字符:由于Include、Require可以对PHP Wrapper形式的地址进行包含执行需要配置(php.ini),在Linux环境中可以通过"../../"的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。

(3)设置文件目录:PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,php仅仅在该目录内搜索文件。

(4)关闭危险配置:PHP配置中的allow_url_include选项如果打开,php会通过Include、Require进行远程文件包含。由于远程文件的不可信任及不确定性,在开发中禁止打开此选项,php默认是关闭的。

四、导致的文件包含函数

PHP:include(),include_once(),require(),require_once(),fopen(),readfile()

JSP:ava.io.File(),java.io.FileReader()

ASP:include file,include virtual

五、PHP中Require和Include函数的区别

Require():如果里面有一些错误就会停止运行;

Include():有错误的话会产生告警信息,同时会接着往下执行。

六、文件包含漏洞的利用思路

(1)利用思路:一般来说文件包含漏洞会配合文件上传漏洞进行利用。如果不存在文件上传漏洞的情况,可以尝试获取一些敏感信息,或者利用日志文件记录报错的方法,往日志文件中写入一句话木马。

(2)配合文件上传漏洞getshell

制作一个图片马,通过文件上传漏洞上传;

通过文件包含漏洞对该图片马进行包含;

获取执行结果。

(3)单独使用getshell

由于没有存在文件上传点,而又需要服务器本地有个文件存在一句话木马代码。这时可以考虑日志文件记录报错的方法,往日志文件中写入一句话木马,然后再利用文件包含漏洞来执行日志文件中的一句话木马。

七、假设攻击者已经知道某网站存在且仅存在本地文件包含漏洞,并且没有文件上传漏洞及其他漏洞,如何getshell

由于没有存在文件上传点,而又需要服务器本地有个文件存在一句话木马代码。这时可以考虑日志文件记录报错的方法,往日志文件中写入一句话木马,然后再利用文件包含漏洞来执行日志文件中的一句话木马。

八、php中要实现远程文件包含则需要对php.ini做什么操作

(1)需要确认allow_url_fopen和allow_url_include的值都为On,也就是打开状态;

(2)如果不是打开状态,可以设置未打开并且完成之后需要重启才能生效;

(3)allow_url_fopen:默认值是ON。允许url里的封装协议访问文件;

(4)allow_url_include:默认值是OFF。不允许包含url里的封装协议包含文件。

九、在php站点中,如果想使用user-agent插入php代码,如何进行包含

包含environ文件即可,常见路径为/proc/self/environ

(1)包含思路:

/proc/self/environ中会保存user-agent头,如果user-agent中插入php代码,则php代码会被写入到environ中,之后再包含它,就可以完成包含user-agent插入的php代码。

(2)利用条件:

php以cgi方式运行,这样environ才会保持UA头;

environ文件存储位置已知,且environ文件可读。

十、windows特殊文件有哪些

C:\boot.ini                                                              #Windows的启动配置文件

C:\windows\System32\inetsrv\MetaBas.xml         #IIS的配置文件

C:\windows\repair\samWindows                           #操作系统中存储用户账户信息的备份文件

C:\program Files\mysql\my.ini                               #MySQL 数据库的配置文件

C:\program Files\mysql\data\mysql\user.MYD      #MySQL 数据库中用户表的数据文件

C:\windows\php.ini                                                #PHP 的配置文件

C:\windows\my.ini                                                 #MySQL 的配置文件

十一、linux特殊文件有哪些

/root/.ssh/authorized_keys                            #用于存储授权的 SSH 公钥

/root/.ssh/id_rsa                                            #用户的 SSH 私钥文件

/root/.ssh/id_rsa.keystore                              #与 SSH 私钥相关的密钥存储文件

/root/.ssh/known_hosts                                 #用户已知的远程主机的公钥信息

/etc/passwdLinux                                          #系统的用户账户信息文件

/etc/shadow                                                   #存储了系统用户的密码哈希值以及与密码相关的其他信息

/etc/my.cnf                                                     #MySQL 数据库的配置文件

/etc/https/conf/https.conf                               #HTTPS 服务的配置文件

/root/.bash_history                                        #记录了用户在命令行中执行过的命令历史记录

/root/.mysql_history                                       #记录了用户在 MySQL 客户端中执行过的 SQL 语句历史记录

/proc/self/fd/fd*                                              #用于查看和操作进程的文件描述符

/proc/mounts/proc/config.gzLinux                 #内核配置文件的压缩版本

十二、文件包含漏洞的绕过方式有哪些

参考链接:【文件包含漏洞】——文件包含漏洞进阶_文件包含漏洞绕过_文件包含攻击的中级高级是如何防护的实验中是如何绕过的-CSDN博客

(1)本地文件包含:

        %00截断绕过(在低版本中php读取文件名时认为%00是终止符,对于%00后面的内容就会失效。例如1.png%00,%00后面的.php被注释掉,成功绕过后缀检测机制)

        路径长度截断(windows下目录最大长度为256字节,超出的部分会被丢弃;LInux下目录最大长度为4096字节,超出的部分也会被丢弃。)(1.png./././././....,使用长字符串进行截断,使后面拼接的内容失效)

        点号截断(windows中点号长于256,超出部分会被丢掉;linux中点号长于4096,超出部分也会被丢掉)(1.png...............)

        双写绕过(目标服务器对传入的参数的关键字符替换为空,这时可以通过对关键字符双写进行绕过)

        大小写混合绕过

        伪协议绕过(查看参考链接)

(2)远程文件包含:

        问号绕过(“1.txt?”,目标机器成功解析远端服务器的1.txt为php脚本)

        井号绕过("1.txt%23",这里需要对井号进行url编码)

        其他绕过方式(查看参考链接)

十三、常见的日志存放路径

参考链接:网安面经之文件包含漏洞_文件包含漏洞面试-CSDN博客

(1)Apache

windows:

        apache安装目录/logs/access.log或者error.log

Linux:

        /var/log/apache/access.log或者error.log

        /var/log/apache2/access.log或者error.log

        /etc/https/logs/access.log或者error.log

(2)Nginx

windows:

        nginx安装目录/logs/access.log或者error.log

Linux:

        /var/log/nginx/access.log或者error.log

(3)IIS

iis6.0:

        C:\windows\system32\LogFiles

iis7.5:

        %SystemDrive%\inetpub\Logs\LogFiles


总结

以上为博主的文件包含漏洞的面试笔记整理,持续更新。


http://www.kler.cn/a/591410.html

相关文章:

  • 3.4 二分查找专题:LeetCode 69. x 的平方根
  • 构建一个基于快速非奇异终端滑模控制(FNTSMC)的仿真模型,运用不同趋近律与设计的趋近律开展对比,进而探究系统收敛时间和抖振幅值
  • 有哪些开源的智慧园区项目?
  • 产品战略之科学定价策略与模型(104页PPT)(文末有下载方式)
  • 网页复印机:只需一个网址,一键克隆任何网站!(可根据需求生成/优化相关代码)
  • Socket 、WebSocket、Socket.IO详细对比
  • uniapp报错 Right-hand side of ‘instanceof‘ is not an object
  • 在线JSON格式校验工具站
  • 基于SpringBoot+Vue3实现的宠物领养管理平台功能一
  • 应用层之网络应用模型,HTTP/HTTPS协议
  • 深度解析manus:技术原理剖析、开源平替方案架构分析
  • 搜广推校招面经五十四
  • linux 命令 vim
  • 【认知框架重构】
  • ubuntu 没有网卡的解决方案
  • 信贷系统的业务流程
  • HTML 专栏总结:回顾与展望
  • Java Stream API 之 flatMap
  • 学习使用 Git 和 GitHub 开发项目的教程推荐
  • Etcd 服务搭建