CentOS   发布时间:2022-05-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了centos – 给Apache用户一个shell的危险大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
tl; dr – 在/ etc / passwd中给Apache一个 sHell有什么危险?

我正在努力使用Apache设置mod_evasive以对抗DOS尝试.我使用DOSSystemCommand运行一个脚本,将违规的IP地址添加到iptables中的BAnnED链.

我发现我可以让这个过程发挥作用的唯一方法是将Apache的sHell从/ sbin / nologin更改为/ bin / bash.但实际上只有脚本的一部分因没有更改sHell而失败.这是DOSSystemCommand行及其运行的脚本:

DOSSystemCommand    "/usr/bin/sudo /bin/bash /var/www/html/ban_ip.sh %s"

和脚本…(注意我只是在测试..这就是为什么我有详细的输出和短禁止期)

#!/bin/bash

IP=$1
IPTABLES=/sbin/iptables

sudo $IPTABLES -I BAnnED -p tcp -s $IP --dport 443 -j DROP
sudo $IPTABLES -I BAnnED -p tcp -s $IP --dport 80 -j DROP

echo sudo $IPTABLES -v -D BAnnED -p tcp -s $IP --dport 80 -j DROP | at -m Now + 1 minutes
echo sudo $IPTABLES -v -D BAnnED -p tcp -s $IP --dport 443 -j DROP | at -m Now + 2 minutes
echo rm -fv /tmp/dos-$IP | at -m Now + 2 minutes

因此,如果Apache具有/ sbin / nologin的sHell,它将添加IPTABLES规则并且它将创建at作业,但是当我收到带有at作业结果的电子邮件时,它会声明用户当前不可用,所以永远不会删除iptables规则.如果我将Apache / bin / bash作为其sHell,则添加iptables规则,创建at作业,并且iptables删除在指定时间按预期工作.

所以我的问题是:通过给Apache用户一个sHell,我以什么方式使我的服务器面临风险?

相关代码位于mod_evasive.c的第224行:
if (sys_command != NULL) {
          snprintf(filename,sizeof(fileName),sys_command,text_add);
          system(fileName);
        }

现在,让我们检查man 3系统:

DESCRIPTION
       system()  executes  a command specified in command by calling /bin/sh -c command,and returns after the command has been completed.  During execution of the
       command,SIGCHLD will be blocked,and SIGint and SIGQUIT will be ignored.

然后,我们可以看到指定的命令正在sHell中运行.不可否认,系统(3)文档在这一点上令人困惑,但我们当然可以看到正在发生的事情并做出适当的推论 – 它是在用户的默认sHell中运行,而不仅仅是/ bin / sh.

正确的解决方案相对简单:只需用fork(2)和execve(2)(或类似的东西)替换system(3)调用.如果您不想这样做,您还可以编写一个非常小的限制性sHell来适当地锁定内容.

巧合的是,这个问题引发了我的仔细检查,你会很高兴地知道有能力编写.htaccess文件的用户不能仅仅因为安装了mod_evasive而接管你的盒子(RSRC_CONF是正确的)设置,所以在那一点上对mod_evasive的作者赞不绝口).但是,虑到你如何描述你的配置,至少有任何能够以Apache身份运行代码的用户(例如,禁止mod_su *之类的,任何可以运行php,Perl,CGI的人,等),可以使用IPTables禁止您使用自己的服务器.

大佬总结

以上是大佬教程为你收集整理的centos – 给Apache用户一个shell的危险全部内容,希望文章能够帮你解决centos – 给Apache用户一个shell的危险所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: