我的共享主机上有一个用户,他的 Wordpress 安装成为了漏洞的受害者,该漏洞允许以 apache 用户创建任意文件。生成的文件显然是使用随机生成器生成的,但属于某种模式。我也在考虑只匹配该组,但这种性质的发现击中了太多合法文件。如何匹配所有这些示例恶意文件?
8twcoasx.php
hjoeksdp.php
nzpsmujc.php
oiczdqkp.php
wpebruwi.php
wuclgsvz.php
tie9txh5.php
vza6pn12.php
nwfthzli.php
1wovcnq6.php
1fwevaol.php
zscy86d8.php
ikz45skj.php
n70x0aul.php
nwk34bs0.php
ugdnncmz.php
wdcq2zzi.php
8f4w3dmt1z.php
uqv4e2cm2a.php
55zf4u1dp7.php
szfc8v129e.php
oihfoe09fposf.php (occured more often)
Jwlsjd_baaqifg.php (occured more often)
显然,我将与用户合作更新他们的 Wordpress 安装和插件,但我希望有一个正则表达式,我可以将其放入查找中并快速验证问题是否仍然存在,等等。
我可以看到的模式:
- 始终为 8、10 或 13 个字符。
- 始终为 *.php
答案1
您必须首先确定“模式”恰好是(创建正则表达式)。我看不到任何很清楚的东西。它始终以 结尾.php
,前面有 8、10 或 13 个字符,这些字符是大写或小写字母、数字或_
。除此之外,还不清楚,例如并不总是有一个数字。如果您要匹配这个一般“模式”,例如^[a-zA-Z0-9_]{8}\.php$
也使用 和 来匹配 10 或 13 个字符,那么您可能会得到许多误报。
相反,新文件是否使用当前修改日期创建?如果是这样,您可以搜索在新配置之后修改的较新的可疑文件。
find /path/to/directory -newer /path/to/new_config -regextype egrep -regex '.*/([a-zA-Z0-9_]{8}|[a-zA-Z0-9_]{10}|([a-zA-Z0-9_]{13})\.php'
需要注意的是,可以使用 来更改修改日期touch
。如果您的恶意软件这样做,则可能会根据访问时间-anewer
、状态更改时间-cnewer
或进行过滤-newerXY
。
如果所有文件都属于特定用户,您还可以使用该信息进行过滤。即添加选项-user apache
。
答案2
这是 PHP 恶意软件,我以前见过这个。您应该通过以下方式观看视频本·德克莱 (Ben Dechrai) 致电“编写病毒是为了乐趣,而不是为了利润”如果您对这种特定的攻击感兴趣。
我贡献的关键在于这一点。它不是寻找文件名的 md5(这是一种完全有效的方法),而是使用类似这样的内容生成(虽然不准确,因为这个总是 $length = 10)
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0;$i < $length;$i++) {
$randomString.= $characters[rand(0, $charactersLength - 1) ];
}
return $randomString . ".php";
}
您应该使用以下命令查找早于特定日期的所有文件
`base64_decode
或者
eval(base64_decode(
这并不能确定哪些字符匹配,哪些不匹配,但根据我的经验,它可能更接近正确。
我会。
- 把服务器拿下来。
- 备份。
- 在新目录中安装并行版本的 Wordpress(全新)
- 检查是否有误报
eval(base64_decode(
- 隔离与该字符串匹配的所有文件。
- 查看是否还有其他文件与上面的正则表达式匹配。
- 备份隔离的文件。
- 清理与上述字符串匹配的隔离文件。
- 寻找可防止此漏洞的 Wordpress 补丁,或升级到新版本的 Wordpress。
答案3
i have used below command to achieve
find . -type f -user "user" username | sed -n '/[a-zA-Z0-9_]\{8,\}.php$/p'
It will display all the files whose len is greater than 8