51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2409|回复: 0

代码安全测试中OS命令注入漏洞

[复制链接]
  • TA的每日心情
    开心
    2021-4-25 14:19
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    发表于 2021-4-15 10:22:20 | 显示全部楼层 |阅读模式

    一、什么是OS命令注入?

    软件在构造OS命令时使用了外部输入的数据,如果没有对外部输入中可能影响OS命令的特殊元素进行过滤,或是过滤不充分/不正确,就有受到OS命令注入攻击的风险。

    OS命令注入缺陷允许攻击者直接在操作系统执行各种命令,当缺陷存在于网页应用等无法直接访问操作系统的软件中时,会造成一些脆弱性问题。而当该缺陷存在于有高级权限的软件中时,攻击者可通过缺陷获得高级权限,从而造成极大的危害。


    二、OS命令注入两种常见的子类型有哪些?

    ①应用程序通过用户输入的参数来构造OS命令。

    例如,程序可能使用system(“nslookup [HOSTNAME]”)来运行nslookup命令,其中的HOSTNAME由用户输入。由于没有检查HOSTNAME中是否存在命令分隔符,攻击者可将想执行的命令通过分隔符加在HOSTNAME中,当系统执行完nslookup后就会执行攻击者的命令;

    ②应用程序将输入的整个字符串作为一个OS命令。

    例如,通过exec([COMMAND])来执行命令,其中COMMAND由用户输入,此时攻击者可以通过命令分隔符注入命令。


    三、OS命令注入漏洞会造成哪些后果?

    关键词:执行未经授权的代码或命令; DoS:崩溃,退出或重启; 读取文件或目录; 修改文件或目录; 读取应用数据; 修改应用数据; 隐藏活动。

    攻击者可以执行未经授权的命令,然后可以使用这些命令来禁用软件,或者读取和修改攻击者无权直接访问的数据。由于目标应用程序直接执行命令而不是攻击者,因此任何恶意活动似乎都来自应用程序或应用程序的所有者。


    四、如何防范修补OS命令注入漏洞?

    从架构和设计的角度来说:

    ①要用最小权限去运行程序,不要给予程序多余的权限,最好只允许在特定的路径下运行,可以通过明确的路径运行命令;

    ②尽可能使用库或框架:使用不允许此弱点出现的经过审核的库或框架,或提供更容易避免此弱点的构造。尽可能地使用库调用,而不是调用外部进程来完成所需功能。

    ③减少被攻击面:对于那些被用于生成待执行命令的数据,尽可能避免其被外部可控的数据污染。

    从实现的角度来说:

    ①虽然使用动态生成的查询字符串,代码或命令将控制和数据混合在一起是有风险的,但有时它可能是不可避免的。正确引用参数并转义这些参数中的任何特殊字符。最保守的方法是转义或过滤所有未通过极其严格的白名单的字符(例如不是字母数字或空格的所有内容)。如果仍然需要一些特殊字符,例如空格,则在转义/过滤步骤之后将每个参数包装在引号中;

    ②如果只允许运行有限的命令,使用白名单方式过滤。


    五、OS命令注入漏洞样例:



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 13:12 , Processed in 0.068504 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表