OS命令注入初学者指南

动态Web应用程序可以充分利用脚本在Web服务器上的命令行中调用某些功能来处理从客户端接收的输入,并且不安全的用户输入可能导致OS命令注入。OS命令注入是指当攻击者试图通过易受攻击的应用程序执行系统级命令以检索Web服务器的信息或尝试对服务器进行未经授权的访问时出现的shell注入攻击。
影响分析
影响:严重
易于利用:中等
风险评级:高
在这次攻击中,攻击者将注入他不需要的系统级命令,以便他可以获取Web服务器的信息; 例如:ls,whoami,uname -a等。
让我们考虑一个场景,其中Web应用程序允许用户PING IP其他用户,以便它确认主机连接 验证参数以注入数据
应针对命令注入缺陷测试以下参数,因为应用程序可能正在使用这些参数之一在Web服务器上构建命令:
GET:在此方法中,输入参数在URL中发送。
POST:在此方法中,输入参数在HTTP正文中发送。
HTTP标头:应用程序经常使用标头字段来发现最终用户,并根据标头中的值向用户显示所请求的信息。
检查命令注入的一些重要头字段是:
  • 饼干
  • X - 转发,对于
  • 用户代理
  • 介绍人
元字符
使用漏洞扫描程序攻击者会发现当前的Web应用程序容易受到命令注入的攻击,并尝试使用Meta字符注入系统级别的不需要的命令。
元字符是符号运算符,用于将实际命令与不需要的命令分开。ampercent(&)用作分隔符,用于划分您尝试注入的可信输入和命令。
在下面的图像中将更清楚,攻击者将使用检索Web服务器的当前目录的元字符注入其有效负载目录
因此,它将转储以下输出,如给定图像所示,其中已验证错误的用户输入。
OS命令注入操作符
开发人员可能会设置过滤器以阻止某些元字符。这会阻止我们注入的数据,因此我们也需要尝试使用其他元字符,如下表所示:
     运营商      描述
     ;      分号是用于测试注射缺陷的最常见的元字符。shell将按分号顺序运行所有命令,并以分号分隔。
           它在一个命令行上分隔多个命令。它运行第一个命令然后运行第二个命令。
     &&      仅当前面的命令成功时,它才会在&&之后运行命令
     ||(窗)      它在||之后运行命令 仅当前面的命令失败时。运行第一个命令,然后仅在第一个命令未成功完成时运行第二个命令。
     || (Linux)      将第一个命令的标准输出重定向到第二个命令的标准输入
           unquoting元字符用于强制shell解释并在反引号之间运行命令。以下是此命令的示例:Variable =“OS version uname -a”&& echo $ variable
     ()      它用于嵌套命令
           它用作命令行注释



















利用的步骤 - 操作系统命令注入
第1步:确定输入字段
第2步:了解功能
第3步:尝试Ping方法时间延迟
步骤4:使用各种运算符来利用OS命令注入
命令注入类型
基于错误的注入:当攻击者通过输入参数注入命令并且该命令的输出显示在某个网页上时,它证明该应用程序容易受到命令注入的攻击。显示的结果可能是错误的形式或您尝试运行的命令的实际结果。然后,攻击者根据Web服务器的shell修改并添加其他命令,并从应用程序中组装信息。
基于盲注入:您注入的命令的结果将不会显示给攻击者,并且不会返回任何错误消息,类似于盲SQL注入。攻击者将使用另一种技术来识别命令是否真的在服务器上执行。
缓解-OS命令注入
  • 强大的服务器端验证
  • 实施白名单
  • 操作系统强化
  • 如果需要,使用内置API来与操作系统进行交互。更安全!!
  • 避免应用程序直接调用OS系统命令
转载请注明本文链接: http://www.mayidui.net/t2303.html
话题: 渗透
游客
登录后才可以回帖,登录 或者 注册