阻止Apache执行shell脚本

我发现一些shell脚本被上传到Wordpress插件目录(插件声誉良好)之后由apache执行。

顶部-c

25821 www-data 20 0 99108 1268 996 S 779 0.1 105:27.72 ../mine.32 --url=http://vibehacks.net/ --userpass=HI:FRIEND 

ps -aufx | grep mine.32

 www-data 25819 0.0 0.0 2236 540 ? S 22:01 0:00 | \_ sh -c nohup ../mine.64 --url=http://vibehacks.net/ --userpass=HI:FRIEND >./mine.log 2>&1; nohup ../mine.32 --url=http://vibehacks.net/ --userpass=HI:FRIEND >./mine.log 2>&1 www-data 25821 490 0.1 99108 1268 ? Sl 22:01 120:14 | \_ ../mine.32 --url=http://vibehacks.net/ --userpass=HI:FRIEND 

我假设,虽然你没有说,你已经被黑客攻击,正在寻找方法来防止它再次发生。

我不认为你可以控制apache以这种方式执行什么types的文件,如果你有你的处理程序设置,他们看到目录中的所有内容都是CGI。 如果您更改您的处理程序,以便只有具有特定扩展名types的文件被解释为CGI可执行文件,攻击者才可以更改文件名。 Linux将以几乎相同的方式解释任何可执行文件,只要它在顶部有一个ELF头文件或一个shebang文件,或者是可执行文件,它所调用的并不重要(而且apache不需要关心它其一)。 所以,防止Apache运行shell脚本并不容易(我不认为这是可能的)。 此外,真正的问题是攻击者能够将任意文件放入您的盒子的可信位置。

我build议你做的是确定如何发生。 用wordpress插件,这可能是一些方法。 例如,它当然可以使用被盗的FTP帐户或SSH帐户上传。 它也可能已经通过rootkit上传(这就是为什么我重build任何popup的框)。 但是,由于它是在wordpress中,最有可能的情况是更加恶劣。

当WordPress允许更新自身及其插件,并使用其Web UI安装内容时,您可以自行开启。 如果任何人都可以访问一个特权的WordPress账户,或者欺骗一个可以下载内容的服务器,或者只是将他们的有效载荷添加到一个插件并等待您更新,那么您就拥有了。 虽然wordpress似乎喜欢这个function,但是我和我在infosec领域所知道的每个人都强烈build议它被禁用; apache应该永远不能写访问自己的webroot,CGI位置尤其如此。

如果您在“Wordpress插件目录”中find了文件/脚本,则应该从ftp日志或系统日志中查看从哪个IP地址和使用哪个用户身份validation上传的文件/脚本,

然后更改该用户的密码并禁用这些脚本。 您可以通过更改权限000和ownship root来禁用这些。