命令执行测试
测试原理和方法
在应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的承数。如PHP中的svstem、exec、shell exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。测试中如果没有对参数(如cmd=、command、excute=等) 进行过滤,就可以直接造成命令执行漏洞或配合绕过及命令连接符(在操作系统中,“&、、1、:”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令) 等进行命令执行漏洞测试。'
测试过程
攻击者发现疑似存在命令执行的漏洞链接,添加命令执行payload,确认漏洞,如图 所示。
以某网络安全审计系统为例,由于未对register key参数进行过滤可能存在命令执行漏洞,抓包并对其进行测试,构造命令执行语句并执行成功,证明此参数未经严格过滤造成命令执行漏洞,如图 所示。