php-cgi参数注入攻击经历浅谈

起因

阿里云服务器再次警告出现挖矿程序。上一次服务器被攻击后,怕有恶意程序残留,第一时间重装了系统,也没有详查攻击入口。不过事后还是做了一些防范,这台留作公网访问的服务器上并未保留业务数据,只作为中转使用。因而这次也就没什么担心的,准备详细研究一下攻击入口在哪里。

过程

  1. 查看检测出的挖矿程序php_cci.exe。几乎是第一眼就看到下边这个cn.php文件。exe文件干了啥我不清楚,但是php是脚本文件,可以放心大胆地打开看看。

脚本内容就不贴出来了,以下是deepseek对脚本的部分分析:

  1. 推测攻击方式。根据两个文件的修改时间,我大概判断php_cci.exe是通过cn.php下载至本地的。那么cn.php是如何来的呢?这台服务器只对公网开放了远程连接及web端口,上次被攻击时阿里云有短信提示远程连接在异地登录,这次没有,而且可疑文件是php脚本,所以几乎可以断定就是web漏洞了。

  2. 锁定攻击入口。确定是web漏洞后,便直接查看apache目录下的access.log,检查可疑请求,重点是cn.php文件创建时间左右的POST请求。果不其然,有一条对php-cgi.exe的访问请求,一看就不是什么正经请求。

完整请求如下:

复制代码
POST /php-cgi/php-cgi.exe?%ADd+cgi.force_redirect%3D0+%ADd+disable_functions%3D%22%22+%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input HTTP/1.1" 500 638 "-" "python-requests/2.27.1

这是一条典型的php-cgi参数注入攻击。虽然服务器返回了500,但仍然可能被感染了。

  1. 本地构造请求复现攻击。我用python构造请求,POST内容为将当前时间写入桌面上一个文件中:
php 复制代码
<?php

file_put_contents("C:/Users/Administrator/Desktop/error.txt", date('Y-m-d H:i:s'));

?>

当然,中间是经历了一些挫折的,但最终确实攻击成功了。

  1. 修改配置防范此类攻击。查询了资料也问了AI,尝试了几种方案效果不是很好。最终还是简单粗暴地对php-cgi.exe的访问进行了限制,既能防范攻击也不影响正常业务请求:

结论

我们往往只关注自己了解的领域或者知识,将工作重心放在业务层面。然而,"后勤保障团队"虽不光鲜亮丽,仍然不可忽略,就像有些程序员不屑于写注释和文档,迟早有一天会为自己的高傲买单,这时的花费可能远超组建"后勤保障团队"。

相关推荐
陈天伟教授1 小时前
华为云 阿里云 腾讯 WorkBuddy的工具对比
阿里云·华为云·云计算
shencz20002 小时前
在windows10里的apache2.4加php7.2的环境下上安装Laravel5.8框架
php·laravel
大不点wow2 小时前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
阿里嘎多学长2 小时前
2026-07-22 GitHub 热点项目精选
开发语言·程序员·github·代码托管
噢,我明白了2 小时前
Java中日期和字符串的处理
java·开发语言·日期
爱刷碗的苏泓舒2 小时前
C 语言 if-else 与 switch-case 分支语句对比
c语言·开发语言
-银雾鸢尾-2 小时前
C#中的泛型约束
开发语言·c#
雪碧透心凉_3 小时前
while 循环与循环嵌套
开发语言·python
乐观勇敢坚强的老彭3 小时前
信奥C++一维数组笔记
开发语言·c++·笔记
这就是佬们吗3 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm