我有一个cgi脚本,它将调用shell脚本。 shell脚本将执行数据库查询并将该查询的结果存储在我的服务器上的文件中。
cgi脚本将DATABASE_NAME
,HOST_IP
和QUERY
作为输入,然后将其传递给shell脚本。
现在我非常担心它会造成的安全漏洞。
我正在做的一项检查是我正在解析查询以确保只传递SELECT
语句。如果传递了任何INSERT/UPDATE
类型的查询,则不会执行shell脚本。
请您指出一些其他方式可以利用这样的CGI脚本,以便我将照顾它们。
我的服务器以userA
运行(具有sudo权限),shell脚本中的查询将以userB
(dbadmin用户)执行。
shell脚本中的命令看起来执行查询的内容如下所示:
sudo su -c "query" userB
DATABASE_NAME
和HOST_IP
也会在查询中传递。
答案 0 :(得分:1)
我希望您以某种方式对用户进行身份验证,并使用HTTPS来防止中间人攻击或嗅探身份验证信息和CGI参数。
请确保正确解析。您需要检查多语句查询。
另外,您可能希望考虑DOS攻击,因为编写SELECT查询很容易返回并使用大量资源。
此外,将允许的主机IP地址列入白名单,否则,我可以轻松获取您的用户名和密码。
此外,将允许的数据库列入白名单以防止从系统表中读取数据。