0x01 漏洞描述
命令执行是系统使用了可以执行命令的危险函数,但是调用这些函数的参数可控,并没有做过滤或过滤不严格,使攻击者可以通过构造特殊命令字符串的方式将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源。
0x02 审计要点
1、参数是否用户可控,如用户输入的外部数据是否拼接到可执行命令函数的参数内?
2、是否配置了全局过滤器?检查过滤器的配置,是否所有命令的执行都经过过滤器处理,过滤器的过滤规则是否符合安全要求。
3、定位关键函数
l${}执行代码
leval
lassert
lpreg_replace
lcreate_function()
larray_map()
lcall_user_func()/call_user_func_array()
larray_filter()
lusort()/uasort()
lsystem()
lpassthru()
lexec()
lshell_exec()
l`反引号
lob_start()
0x03 典型漏洞代码
此时cmd.exe使用了/K参数,将后续传入的参数用户命令执行,这里拼接的参数从前段中获取,对参数未作任何过滤,导致命令注入。
0x04 防御方案
-
1.所有需要执行的系统命令,需由开发人员定义好,不允许接收用户传来的参数,加入到系统命令中去。任何一个执行系统命令的代码,都必须经过安全工程师确认。
-
2.执行代码的参数或文件名,禁止和用户输入相关,只能由开发人员定义代码内容,用户只能提交“1、2、3”参数,代表相应代码。
点赞,转发,在看
点击关注
学习技术
反入侵实验室
原文始发于微信公众号(反入侵实验室):0基础入门代码审计-8 命令执行
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论