操作系统命令注入(OS command injection)学习笔记

笔者burpsuite在线安全学院的OS command injection学习笔记。限于本人水平,笔记质量不是很高,假如有看到的大佬轻喷,很多地方是Google翻译的,还请多多包涵。


操作系统命令注入
在本节中,我们将解释什么是OS命令注入,描述如何检测和利用漏洞,为不同的操作系统拼写一些有用的命令和技术,并总结如何防止OS命令注入。

什么是OS命令注入?

操作系统命令注入(也称为shell注入)是一个Web安全漏洞,它使攻击者可以在运行应用程序的服务器上执行任意操作系统(OS)命令,并且通常会完全破坏该应用程序及其所有数据。攻击者通常可以利用OS命令注入漏洞来破坏托管基础结构的其他部分,利用信任关系将攻击转移到组织内的其他系统。

操作系统命令注入

执行任意命令

考虑一个购物应用程序,该应用程序使用户可以查看特定商店中是否有库存商品。该信息可通过如下网址访问:

https://insecure-website.com/stockStatus?productID=381&storeID=29

为了提供库存信息,应用程序必须查询各种旧系统。由于历史原因,该功能是通过使用产品和存储ID作为参数调用shell命令来实现的:

stockreport.pl 381 29

此命令输出指定项目的库存状态,并返回给用户。
由于该应用程序无法防御OS命令注入,因此攻击者可以提交以下输入以执行任意命令:

& echo aiwefwlguh &

如果此输入是通过productID参数提交的,则应用程序执行的命令为:

stockreport.pl & echo aiwefwlguh & 29

该echo命令仅使提供的字符串在输出中回显,并且是测试某些类型的OS命令注入的有用方法。该&字符是一个shell命令分隔符,因此执行的实际上是一个接一个的三个独立命令。结果,返回给用户的输出为:

Error - productID was not provided
aiwefwlguh
29: command not found

输出的三行表明:

  • stockreport.pl执行 原始命令时没有预期的参数,因此返回了错误消息。
  • echo执行 注入的命令,并在输出中回显提供的字符串。
  • 原始参数29作为命令执行,从而导致错误。
    &通常, 将附加命令分隔符放在注入命令之后是有用的,因为它会将注入命令与注入点后面的内容分开。这减少了随后发生的事件阻止注入的命令执行的可能性。
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值