命令注入
命令注入是滥用应用程序的行为,使用与设备上运行的应用程序相同的权限在操作系统上执行命令。例如,在以名为 name 的用户身份运行的 Web 服务器上实现命令注入'joe'将在此用户下执行命令'joe',从而获得'joe'具有的任何权限。
命令注入通常也称为“远程代码执行”( RCE ),因为它能够在应用程序中远程执行代码。攻击者可以直接与存在漏洞的系统进行交互。例如,攻击者可能会读取系统或用户文件、数据以及此类性质的内容。
举例
1.该应用程序将 MP3 文件存储在操作系统包含的目录中。
2.用户输入想要搜索的歌曲名称。应用程序将此输入存储到$title
变量中。
3.该变量中的数据$title
被传递给命令grep
以搜索名为songtitle 的文本文件。txt用于输入用户希望搜索的任何内容。
4.本次搜索歌名的输出。txt将确定应用程序是否通知用户该歌曲存在或不存在。
攻击者可以通过注入自己的命令供应用程序执行来滥用此应用程序。他们可以要求应用程序从更敏感的文件中读取数据,而不是使用grep
搜索 中的条目
命令注入的种类
盲注
盲注(Blind Injection)是一种 SQL 注入的变体,它与常规的 SQL 注入略有不同。盲注通常发生在应用程序对用户输入进行了过滤或防御措施,导致攻击者无法直接看到数据库返回的错误信息或数据。攻击者利用盲注漏洞,通过分析应用程序的响应时间、返回页面内容等间接的方式来判断是否存在漏洞,并最终执行恶意的 SQL 查询。
盲注又可细分为两种类型:
基于布尔的盲注(Boolean-Based Blind Injection):
这种类型的盲注利用了应用程序对于数据库查询结果的处理方式。攻击者通过构造恶意的 SQL 查询,使得应用程序返回不同的页面内容或响应时间,从而推断出数据库中数据的真假或特定的信息。攻击者可以利用这种方式逐渐推断出数据库中的数据,或执行一系列特定的查询操作。
基于时间的盲注(Time-Based Blind Injection):
这种类型的盲注利用了应用程序对于 SQL 查询执行时间的处理方式。攻击者通过构造恶意的 SQL 查询,在查询条件为真或假时,使得应用程序的响应时间产生明显的差异。通过分析响应时间的差异,攻击者可以推断出数据库中的数据或执行其他恶意操作
明注
明文注入通常会导致应用程序返回明显的错误消息或者异常,从而使攻击者能够直接利用这些信息来推断数据库结构、执行恶意操作或者获取敏感数据。与盲注不同,明文注入通常不需要通过分析响应时间或者页面内容来判断注入的成功与否。
命令注入实践
打开虚拟机,发现一个用于测试ping的网站
尝试输入
127.0.0.1 & whoami
爆出用户
继续输
127.0.0.1 & cat /home/tryhackme/flag.txt
爆出flag
成功
网友评论