CN114780398A - 面向Cisco IOS-XE的Web命令注入漏洞检测方法 - Google Patents
面向Cisco IOS-XE的Web命令注入漏洞检测方法 Download PDFInfo
- Publication number
- CN114780398A CN114780398A CN202210392201.5A CN202210392201A CN114780398A CN 114780398 A CN114780398 A CN 114780398A CN 202210392201 A CN202210392201 A CN 202210392201A CN 114780398 A CN114780398 A CN 114780398A
- Authority
- CN
- China
- Prior art keywords
- command
- request
- command injection
- parameter
- api
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于漏洞检测技术领域,具体涉及一种面向Cisco IOS‑XE的Web命令注入漏洞检测方法。该方法分别从前端请求和后端Lua程序中生成初始种子,优化种子生成策略,从后端程序中提取出较为完整的API信息,然后对种子进行参数属性标记,并应用变异规则,生成测试用例;随后模拟Web UI向路由设备发起请求,并接收响应,监测路由设备状态,并在每次测试后还原测试环境。该方法能够发现系统中存在的隐藏API,同时基于两种命令注入漏洞的基本特征进行脆弱代码筛选,提高了模糊测试的效率。
Description
技术领域
本发明属于漏洞检测技术领域,具体涉及一种面向Cisco IOS-XE的Web命令注入漏洞检测方法。
背景技术
代码注入是Web应用中常见的安全漏洞,也是网络安全面临的主要威胁之一,在OWASP 2021年发布的十大网络安全威胁中排名第三。其中,命令注入是攻击者利用应用程序对不可信数据的不恰当处理,在输入中插入恶意构造的系统命令,从而导致计划外的执行行为,造成拒绝服务(Denial of Service,DoS)或权限逃逸等。命令注入漏洞不仅存在于托管在服务器上的Web应用程序中,也存在于网络核心设备及物联网设备的Web管理服务中。
Cisco IOS-XE(简称IOS-XE)是Cisco公司新型操作系统(IOS-XE、IOS-XR和NX-OS)之一,广泛应用于Cisco企业级交换机、聚合服务路由器、分支路由器,工业级路由器、以太网交换机,无线局域网控制器和云虚拟路由器等平台。其中,Web UI作为用户查看路由设备信息和修改设备配置的交互接口,同样存在命令注入漏洞。攻击者利用这些安全漏洞,可以实现权限逃逸,以Read-Only权限登录的用户,可以提升至管理员权限,进而获取敏感数据信息,或篡改路由设备的配置。攻击者甚至能够实现更高级别的逃逸,进入到设备底层的Linux系统,以root权限执行任意命令,如读取或篡改系统文件,下载并运行恶意程序等,实现对路由设备的完全控制。
然而,目前没有针对IOS-XE的漏洞检测方法,由于IOS-XE特有的系统架构和命令模式,现有针对传统Cisco IOS或IoT设备的漏洞检测方法在IOS-XE上效果不佳。Cisco IOS的漏洞检测极度依赖于Dynamips对固件进行模拟运行,而目前没有模拟器支持IOS-XE系统。针对IoT的漏洞检测方法中,模糊测试被认为是发现漏洞最为简单和高效的方法。但现有IoT模糊测试方法,要么仅通过分析前端或参考官方及第三方API文档来生成初始种子,容易造成漏报,且没有明确的测试目标范围,漏洞检测效率较低;要么依赖于QEMU等模拟器对设备进行仿真,无法适用于IOS-XE。
而设计一种有效的模糊测试方法对IOS-XE进行安全漏洞检测。需要解决如下难点:
(1)缺乏反馈信息。目前没有工具或方法可以在不利用漏洞的情况下,对IOS-XE系统内部的执行信息进行监测,导致模糊测试无法基于代码覆盖率等反馈信息来优化变异策略。
(2)严格的参数格式。Web服务的前端和后端程序都对参数格式有严格的语法要求,大部分随机变异生成的测试用例将会被服务端直接拒绝。此外,后端处理请求的函数中,可能会为一些参数附加特殊字符(如引号),将其变为不可执行的字符串。
(3)存在隐藏API。由于跨平台的IOS-XE系统之间存在大量的代码复用,或部分功能需要额外配置,使得IOS-XE系统中存在一些API,前端Web UI中没有相应的配置接口或配置接口不可用。若仅从前端分析生成初始种子,容易造成漏报。
发明内容
针对目前模糊测试针对IOS-XE的漏洞检测方法存在易漏报、漏洞检测效率较低以及依赖于QEMU等模拟器对设备进行仿真无法适用于IOS-XE的缺陷和问题,本发明提供一种针对Cisco IOS-XE的Web的命令注入漏洞检测方法。
本发明解决其技术问题所采用的方案是:一种面向Cisco IOS-XE的Web命令注入漏洞检测方法,包括以下步骤:
步骤一、种子生成:从前端Web请求和后端Lua程序中提取API信息,结合命令注入漏洞的基本特征,对后端Lua程序进行筛选,获取可能存在漏洞的脆弱代码段,生成模糊测试的初始种子;
步骤二、测试用例生成:对初始种子进行参数属性标记,并根据命令注入漏洞类型应用对应的变异规则,生成测试用例;所述命令注入漏洞类型包括底层系统型命令注入漏洞和用户权限型命令注入漏洞;
步骤三、模拟请求:模拟Web UI的登录操作向路由设备发起请求并接收响应;所述请求包括GET请求和POST请求;
步骤四、异常监测与测试环境恢复:监测路由设备状态,利用IOS-XE系统Web服务的CLI Command API查看或修改路由器配置信息,以判断命令注入是否成功,并将设备配置恢复到初始状态。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤一中从前端Web请求提取API信息,在提取过程中,解析并存储请求的头部和参数信息。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤一中从后端Lua程序提取API信息,根据函数中数据的引用来识别请求中的具体参数,生成相应的初始种子,其中参数识别流程为:
(1)识别程序对请求参数的解析获得初始参数名称;
(2)根据对参数元素的访问方式,识别第一层参数,记录参数名与对应的变量名称;
(3)根据提取到的变量名称,继续识别第二层参数;
(4)识别程序中的固定字符串;
(5)根据(2)、(3)、(4)的记录生成API信息。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤二中对于前端请求生成的初始种子进行参数属性标记方法为:首先识别文本类型并进行标记,然后对标记为字符串的参数进行数次差异较大的变异,根据反馈结果判断是否为常量字符串。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤二中对于后端程序生成的初始种子进行参数属性标记方法为:首先依据参数名称进行常量化推断,然后依次对剩下的空字符进行属性变异,生成新的种子,并通过模拟客户端生成请求数据发送到路由设备,根据反馈的结果信息推断参数的实际属性。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤二中针对底层系统型命令注入漏洞的种子变异时对特殊字符串补齐,使注入的命令可以成功执行;针对用户权限型命令注入漏洞进行种子变异时采用查看配置和修改配置两种规则。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤四中异常监测时,针对底层系统型命令注入漏洞,在生成的测试用例中,注入的命令为在bootflash中创建文件,判断命令是否注入成功,以管理员用户登录,向CLI Command API发送一个查看bootflash存储内容的命令,检查返回结果中是否含有所创建的文件名。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤四中异常监测时,针对用户权限型命令注入漏洞根据相应的变异规则分别对响应数据和设备配置进行监测;若测试用例的响应数据中,包含预先配置的管理员用户及其密码,则表明获取敏感数据成功;以管理员用户登录,向CLI Command API发送查看路由器配置的命令,若返回结果包含所添加的管理员用户和密码,则表明修改设备配置成功。
上述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,步骤四中进行测试环境回复时,针对底层系统型命令注入漏洞,利用CLI Command API删除bootflash中所创建的文件;针对用户权限型命令注入漏洞,仅考虑注入的命令对设备的影响,若注入的命令为查看敏感数据,则不需要进行测试环境恢复,若注入的命令为添加管理员用户,则利用CLICommand API删除所添加的用户。
本发明的有益效果:本发明提出的一种针对IOS-XE系统Web管理服务的模糊测试框架CRFuzzer,用以检测命令注入漏洞。与现有模糊测试方法不同,该方法结合Web前后端分析优化种子生成策略,通过对前端请求进行分析来解析参数的属性,对后端程序进行分析来发现隐藏的API,进而完善种子的生成,提高了模糊测试的漏洞检测能力。
本发明的测试方法能够基于漏洞特征筛选出可能存在命令注入漏洞的脆弱代码,缩小测试范围,提高了模糊测试的效率。该框架根据常量值参数为单个后端端点生成多个初始种子,能提高模糊测试的代码覆盖率。
本发明对在实体路由器ISR 4000系列及云虚拟路由器CSR1000v上,对31个不同版本共124个固件进行了测试,共计检测出11个命令注入漏洞,其中2个为未公开漏洞。
附图说明
图1为Cisco IOS-XE Web UI的通信架构。
图2为模糊测试框架CRFuzzer系统结构图。
图3为从后端提取参数示例图。
图4为API信息与脆弱代码数量结果。
图5为测试时间对比结果。
具体实施方式
在对本发明进行详细介绍之前,先对相关内容进行简单介绍。
1.Cisco IOS-XE Web UI通信架构
IOS-XE基于Linux构建,传统的IOS作为一个独立进程IOSd运行于Linux内核之上,而Web UI的服务端Nginx同样作为一个独立进程运行。服务端请求处理采用Lua-Nginx的模式,后端由Lua程序进行请求数据解析、命令构建和响应数据过滤。Web UI的通信架构如图1所示。
用户使用浏览器登录IOS-XE的Web界面,通过Web UI对路由设备进行信息查看和配置修改,将在前端生成相应的请求数据发送到服务端。在Web UI的服务端,Nginx将请求数据传递给baseHandler程序,进行用户权限校验,随后在URLMap中搜索相应的uri,找到对应的请求处理程序,完成请求参数解析和命令构建。最后在底层Linux系统中执行命令,或调用WSMAGetData或WSMAApplyCmd函数将生成的命令传递到IOSd执行。
在后端的处理过程中,Lua程序负责解析请求数据并构建相应的命令。其中,部分参数将被用于生成最终的命令,如果缺乏对此类参数的校验,或者对参数校验的方式不正确,便可能会发生命令注入。攻击者可以在参数中附加恶意构造的命令,使系统产生计划外的执行行为,以获取敏感数据信息或篡改设备配置。
2.Cisco IOS-XE命令注入漏洞
与传统Cisco IOS的单片化结构不同,IOS-XE采用模块化设计,以Linux为底层系统,将部分功能模块移出了IOS,改为Linux上的独立进程。余下的IOS部分同样作为独立进程IOSd运行于Linux之上,与传统IOS享有相同的命令模式。
根据IOS-XE特有的系统架构和不同的命令执行层级,将IOS-XE Web服务中的命令注入漏洞分为两类:在底层Linux系统中执行的底层系统型命令注入漏洞,和在IOSd的命令行接口(Command Line Interface,CLI)中执行的用户权限型命令注入漏洞。其中:
(1)底层系统型:这类漏洞允许用户进入IOS-XE的底层Linux系统,在Linux中以root权限执行任意命令。攻击者利用这类漏洞,可以读取或删改底层Linux系统的文件,获得对路由设备的完全控制。
(2)用户权限型:这类漏洞允许Read-Only权限的用户,在IOSd的CLI中执行管理员权限用户才能执行的命令。攻击者利用这类漏洞,可以在Read-Only权限下,获取设备敏感数据信息,甚至修改路由设备的配置。
网络核心设备和IoT设备广泛应用于工业生产或日常生活中,给人们带来便利的同时,设备的安全漏洞也使网络空间面临严重的安全威胁。研究人员尝试利用模糊测试、符号执行、污点分析等多种方法对嵌入式设备固件进行安全分析,检测其中存在的安全漏洞。而IOS-XE与常见的嵌入式设备存在较大差异,目前没有针对IOS-XE的模糊测试方法,因此本文选取了较为接近的技术,即针对嵌入式设备的模糊测试方法,进行相关工作的介绍。对嵌入式设备的模糊测试根据测试对象可以分为基于模拟仿真和针对实体设备两种研究路线。
在基于模拟仿真的方法中,RPFuzzer基于修改后的Dynamips对路由器固件进行模拟运行,而FIRM-AFL、FirmFuzz和FIRMADYNE基于QEMU对IoT设备进行仿真,并在其中嵌入模糊测试工具。在固件缺少BootLoader的情况下,FIoT根据调用流图将固件代码进行切片,然后对切片后的代码进行动态执行并应用模糊测试。ReLink将模糊测试与动态数据流追踪相结合,根据请求对设备上存储的数据依赖,检测需要多步请求才能触发的命令注入漏洞。上述方法使用模拟器对固件进行模拟运行,主要目的在于获取系统运行时的CPU及内存等状态信息,以便进行异常监测。同时,这些状态信息可以作为反馈,引导变异策略。然而,研究人员很难对各种CPU架构进行完全模拟,此外,Dynamips或QEMU等模拟器也不支持对IOS-XE进行模拟运行。
在针对实体设备的方法中,主要工作体现在优化种子生成和变异策略方面。SRFuzzer是针对实体SOHO路由器的自动化模糊测试框架,通过捕获设备运行时的Web请求来生成初始种子,对请求中的参数进行语义分析和属性标记以优化变异策略。IoTFuzzer则通过分析用于连接和配置设备的App来获取初始种子,在变异规则中主要针对堆栈溢出、整数溢出或越界访问、空指针或数据类型错误三种内存错误漏洞。Snipuzz的初始种子来源于官方或第三方API文档或测试用例,Snipuzz提出了一种message的元素属性推断机制,基于response归类推断message中各字节之间的关系。上述方法均建立在固件及系统运行时状态无法获取的前提下,仅从前端提取API信息,用以生成初始种子,忽略了对后端程序的分析,容易造成漏报,无法解决本文所提到的隐藏API问题。
虽然部分方法结合了对后端程序的分析,例如Jiang Yikun等人将程序静态分析与动态模糊测试相结合,从固件解包得到的程序中提取字符串信息用以生成初始种子,但该方法仍然依赖于QEMU对固件的模拟运行。Chen Libo等人指出前后端程序变量通常共享相同的keyword,据此可以建立前端输入和后端程序的关联性,但在后续工作中,使用的是静态污点分析方法。
其次,上述所列举的模糊测试方法,测试目标没有导向性,多为“地毯式”测试,漏洞检测效率较低。
综合来看,当前没有针对IOS-XE系统Web管理服务的模糊测试框架,现有方法没有结合IOS-XE命令注入漏洞的特征,无法检测出Read-Only权限提升到管理员权限这一类型的漏洞。
针对上述问题,本发明提供一种针对Cisco IOS-XE系统Web管理服务的模糊测试框架CRFuzzer,用以检测命令注入漏洞。下面结合附图和实施例对本发明进一步说明。
实施例1:本实施例提供一种面向Cisco IOS-XE的Web命令注入漏洞检测方法,该方法是利用针对Cisco IOS-XE系统Web管理服务的模糊测试框架CRFuzzer来进行漏洞检测,CRFuzzer系统结构如图2所示。该方法主要包括以下内容:
1、种子生成:从前端Web请求和后端Lua程序中提取API信息,结合命令注入漏洞特征发现可能存在漏洞的脆弱代码段,生成模糊测试的初始种子;
1.1API信息提取
(1)从前端请求提取API:
与一些现有的IoT模糊测试方法相同,CRFuzzer从前端请求中提取API信息。在提取过程中,CRFuzzer解析并存储请求的头部和参数信息。头部中的URL及其结构信息(如Content-Type、Cookie结构、X-Csrf-Token等)将用于请求模拟器的构建,而参数则是命令注入漏洞触发的必要条件,将用于后续的变异操作。
IOS-XE的Web服务中,也存在CONF-READ通信模式。例如,在User Administration功能中,Add或Delete均以POST方法发起请求,执行增加或删除用户的操作,为CONF请求。而在执行完配置修改后,会以GET方式发起请求,获取当前所有用户信息,为READ请求。但CRFuzzer针对的两种命令注入漏洞,其触发只需要单个请求,不涉及多个请求形成的序列操作,因此CRFuzzer对不含参数的请求不做考虑。
(2)从后端Lua程序提取API:
Lua程序接收到请求数据,在用户权限校验通过后获取请求中的参数信息,然后调用相关函数进行命令构建。参数解析和命令构建示例程序如图3左半部分所示。
程序中dataTable为前端请求中传递的参数,数据格式为Lua语言中的table,CRFuzzer根据函数对dataTable中数据的引用,来识别请求中的具体参数,生成相应的初始种子。其中,参数可能存在多层嵌套,从前端收集的种子中观察到,嵌套关系最多只有两层,因此CRFuzzer仅考虑至多两层嵌套关系的参数形式。参数识别流程如下:
1)识别程序对请求参数的解析,获得初始参数名称;
2)根据对参数元素的访问方式,识别第一层参数,记录参数名与对应的变量名称;
3)根据第二步中提取到的变量名称,以相同的方法识别第二层参数;
4)识别程序中的固定字符串;
5)根据第2)、3)、4)步的记录,生成API信息。
从后端提取API信息示例如图3所示,其中,根据参数名称识别参数所含元素的方法如算法1所示。
在API信息提取过程中,部分参数的值是常量字符串,这类参数如果随意赋值,将生成无效测试用例。此外,常量字符串通常用于分支条件判断,常量字符串的不同取值对应不同的执行路径。因此,CRFuzzer为常量字符串的每个取值生成一个初始种子,使其尽可能覆盖更多的代码执行路径。
算法1参数元素识别
输入:参数名称列表paramList,Lua程序luaFile
输出:参数所含元素及其对应的变量名,形式为字典paramDict
执行过程:
1.2脆弱代码发现
现有针对嵌入式设备的模糊测试技术,偏向于黑盒测试,对所提取到的API接口进行“地毯式”测试,漏洞检测效率不高。CRFuzzer基于两种命令注入漏洞的特征,通过给定的规则对后端程序进行脆弱代码发现,缩小模糊测试的目标范围。
IOS-XE的Web管理服务中,后端由Lua程序对请求数据进行解析,构建指定的命令并执行。如果此命令中包含用户输入的参数,而Lua程序对该参数缺乏校验或校验方式错误,攻击者便可以通过在请求的参数中注入恶意命令,实现计划外的执行行为。因此,命令注入漏洞具备两个基本特征:1)相应的请求含有用户输入的参数;2)用户输入的参数被用于命令构建并被调用执行。
例如下方底层系统型脆弱代码,在底层系统型命令注入漏洞中,构建的命令将在底层Linux系统中被execute函数调用执行。通过“;”、“&”等shell命令连接符号,在用户输入的参数中附加构造的命令,可以实现在底层Linux系统中以root权限执行任意命令。
而如果构建的命令为IOS-XE的CLI类型,则调用WSMAGetData或WSMAApplyCmd函数将命令传递到IOSd执行,获取原始的响应结果。其中,WSMAGetData将在特权模式(privileged EXEC mode)下执行命令,而WSMAApplyCmd将在全局配置模式(globalconfiguration mode)下执行命令,两者都需要具备管理员权限。如下用户权限型脆弱代码示例,如果后端程序对用户输入的参数缺乏校验或校验方式错误,攻击者便可以将恶意命令附加在参数中,获取路由设备敏感数据信息,甚至篡改路由器配置。
在命令构建前,baseHandler会对用户权限进行初步校验,其中GET请求允许所有用户发起,而POST请求仅允许管理员用户执行。在已经具备管理员权限的条件下,进行命令注入以获取敏感数据信息或修改路由设备配置,这种注入并不涉及权限逃逸,不具备实际意义。因此,用户权限型命令注入漏洞的请求只能通过GET方法发起。
基于以上两种命令注入漏洞的基本特征,对后端Lua程序进行筛选,获取可能存在安全漏洞的脆弱代码段,作为CRFuzzer后续测试的目标。
2、测试用例生成:从初始种子进行参数属性标记,并根据命令注入漏洞类型应用对应的变异规则,生成测试用例;
2.1种子初始化策略
由于嵌入式设备对用户输入的参数都有严格的格式要求,在对种子中的参数进行变异时,如果采用随机变异,生成的大部分测试用例在服务端参数格式校验时便会出错,导致服务端直接拒绝该请求。例如,如果将一个字符串传递给整型的参数,或是对一个常量字符串参数进行变异,都将生成无效测试用例。
为了减少无效测试用例的生成,在应用变异策略之前,需要先对种子的参数进行属性标记。在进行种子变异时,将不再考虑常量字符串的变异,而其他参数将根据其标记的属性进行相关变异,不进行跨属性变异操作。基于发现的脆弱代码对应的API信息,从种子集合中挑选出相应的初始种子,并对这些种子进行请求测试,标记参数属性。
对于前端请求生成的初始种子,其参数格式比较准确,参数属性的识别与标记相对简单。首先识别文本类型(字符串、数字),然后对于其中标记为字符串的参数进行数次差异较大的变异,根据反馈结果判断是否为常量字符串。
对于基于后端程序分析生成的初始种子,CRFuzzer首先依据参数名称进行常理化推断,例如参数ipaddress的属性将会被标记为IP地址。然后,依次对剩下的空字符进行属性变异,变异的属性主要包括可变字符串、数字等,生成新的种子,并通过模拟客户端生成请求数据发送到路由设备,根据反馈的结果信息推断参数的实际属性。
2.2种子变异规则
(1)底层系统型命令注入漏洞:
IOS-XE的文件系统中,bootflash目录存储于底层Linux的根目录下,可以在Linux中访问bootflash中的文件。为方便后续监测注入的命令是否成功执行,CRFuzzer选择在种子的可变字符串后附加在bootflash中创建文件的命令,IOS-XE可能会为参数附加特殊字符(如引号,转义符等),将其变为不可执行的字符串,因此CRFuzzer在变异时考虑对特殊字符的补齐,使注入的命令可以成功执行。
(2)用户权限型命令注入漏洞:
CRFuzzer致力于发现可以实现用户权限逃逸的命令注入漏洞,使Read-Only权限的用户能够以管理员权限执行命令,获取敏感数据或修改设备配置。为此,本文针对用户权限型命令注入漏洞设计了两种变异规则:
1)查看配置。这种注入方式较为简单,尝试获取管理员的用户名和密码。但由于后端的Lua程序可能会对原始响应进行过滤,使得注入的命令即便成功执行,最终客户端收到的响应数据中也没有路由设备的配置信息。
2)修改配置。注入的命令为添加管理员用户。这种命令注入方式涉及到特权模式和全局配置模式的切换,需要附加conf t命令,适用的固件版本具有局限性。
(3)变异优化
在对种子进行变异以生成测试用例时,只需要保证Lua程序能够执行到相应的分支,而不要求原始命令能够正确执行。因此,CRFuzzer尽可能使前缀命令执行错误,而直接执行所注入的命令,一方面可以减少对路由设备配置的修改,便于恢复测试环境;另一方面,可以节约测试用例的执行时间,例如涉及到install命令时,CRFuzzer在变异过程中会将package的路径设置为错误路径,避免进行package的传输与安装。
3、模拟请求:模拟Web UI的登录操作向路由设备发起请求,并接收响应;CRFuzzer模拟IOS-XE系统Web UI的登录操作、GET请求和POST请求。其中,GET请求在登录后可以直接发起,而POST请求需要先获取CSRF-Token。
4、异常监测与测试环境恢复:监测路由设备状态,并在每次测试后还原测试环境(利用IOS-XE系统Web服务的CLI Command API查看或修改路由器配置信息,以判断命令注入是否成功,并将设备配置恢复到初始状态)。
4.1异常监测
(1)底层系统型命令注入漏洞
IOS-XE的Web UI,以管理员用户登录时,可以执行配置查看命令。在生成的测试用例中,注入的命令为在bootflash中创建文件。因此,判断命令是否注入成功,只需要以管理员用户登录,向CLI Command API发送一个查看bootflash存储内容的命令,检查返回结果中是否含有所创建的文件名。
(2)用户权限型命令注入漏洞
根据用户权限型命令注入漏洞相应的变异规则,CRFuzzer分别对响应数据和设备配置进行监测。若测试用例的响应数据中,包含预先配置的管理员用户及其密码,则表明获取敏感数据成功。以管理员用户登录,向CLI Command API发送查看路由器配置的命令,若返回结果包含所添加的管理员用户和密码,则表明修改设备配置成功。
4.2测试环境恢复
为证明测试用例中注入的命令成功执行,需要在每次发起请求之前,保证路由器的各项配置一致。本文根据命令注入漏洞的类型,分别设计了轻量级的测试环境恢复方案。
(1)底层系统型命令注入漏洞
IOS-XE的Web UI,以管理员用户登录时,可以执行修改设备配置的命令。在测试用例中,注入的命令为在bootflash中创建文件,并不会触发设备崩溃或重启,而通过对变异规则的优化,前缀命令无法成功执行,因而不会改变路由器的配置。因此,只需要利用CLICommand API删除bootflash中所创建的文件。
(2)用户权限型命令注入漏洞
此类漏洞测试时也不会触发设备崩溃或重启,且GET请求多为查看信息的命令,不会造成设备配置的改变。因此,CRFuzzer仅考虑注入的命令对设备的影响。若注入的命令为查看敏感数据,则不需要进行测试环境恢复,若注入的命令为添加管理员用户,则利用CLICommand API删除所添加的用户。
试验例:本试验例从API信息提取与脆弱代码发现、对命令注入漏洞的检测能力以及检测效率方面对CRFuzzer进行评估,并与现有模糊测试方法SRFuzzer进行对比。此外,由于SRFuzzer在命令注入漏洞方面,仅检测对Linux系统的注入,本文为SRFuzzer加入针对用户权限型命令注入漏洞的变异规则,并增加对特殊字符的补齐策略,形成SRFuzzer+用于对比实验。
1.实验设置
实验所用设备为ISR 4000系列实体路由器(包括ISR 4221、ISR4321和ISR 4331),以及云虚拟路由器CSR 1000v,4个设备的固件均使用16.5.x-16.11.x这31个版本,共计124个不同的固件。预先在路由器中配置用户名与密码均为admin的管理员用户,和用户名与密码均为guest,权限为Read-Only的用户。
2.实验结果
2.1API信息提取与脆弱代码发现
本实验以16.5.1、16.6.1、16.7.1、16.8.1、16.9.1、16.10.1和16.11.1这7个版本的固件为例,分别进行前后端API信息提取和基于漏洞特征的脆弱代码发现。实验中仅考虑含有参数的API,且将一条API信息定义为一个URL和一种请求方式组成的二元组,形如<URL,method>。实验结果如图4所示,图中一个单元从左至右分别代表ISR Front-end API、ISR Back-end API、ISR Vulnerable Code、CSR Front-end API、CSR Back-end API、CSRVulnerable Code。
从图4中可以看出,前后端提取出的API信息存在数量上的差异,后端多于前端。表明在IOS-XE系统的Web管理服务中,存在隐藏API。通过查看前后端提取出的API信息,发现前端所缺少的API主要分为如下两种:(1)前端没有相应的功能接口,如Threat Defense、VPN、Application Visibility和Custom Application等,测试的固件不支持相应的功能;(2)前端无法直接使用相应的功能接口,如Python Sandbox和troubleshooting audit,前者需要在路由器上预先配置Guestshell,而后者需要思科公司账号在线认证。但其后端同样存在相应的请求处理程序,可以通过模拟发送请求的方式,调用对应的API并执行相关代码。
如图4所示,从ISR 4000和CSR 1000v后端程序提取出的API信息基本一致,而从ISR 4000和CSR 1000v前端提取出的API信息,数量上少于后端API。这是由于跨平台的IOS-XE系统间存在大量的代码复用,ISR 4000系列的路由设备不支持Threat Defense、VPN等功能,Application Visibility和Custom Application功能只存在于部分版本的固件中。这导致ISR 4000的前端缺少上述两种隐藏API,而CSR 1000v前端则主要缺少第二种隐藏API。CRFuzzer分别从前端请求和后端程序中提取API信息,实验结果表明,CRFuzzer可以提取到更为完整的API信息,有助于生成更完整的初始种子库,覆盖更多的程序执行路径。
此外,本实验基于底层系统型和用户权限型两种命令注入漏洞的基本特征,进行脆弱代码发现,筛选出可能存在漏洞的API。如图4所示,筛选出的脆弱代码对应的API数量远少于后端提取出的API总数。IOS-XE系统的Web UI,是用户查看信息和修改配置的接口,前者主要通过GET请求,允许所有权限的用户发起,而后者则主要为POST方式,仅允许管理员用户执行。由于在参数解析和命令构建之前,会先对用户权限进行校验,因此请求方法为POST的API,不存在用户权限型命令注入漏洞。此外,仅有少量API需要在底层Linux中执行构建的命令,即仅有少量API可能存在底层系统型命令注入漏洞。因此,3.1节中提出的漏洞特征相对较弱,其主要目的是在尽可能减少漏报的前提下,过滤部分不存在命令注入漏洞的API。实验结果表明,尽管此方法无法准确定位漏洞位置,但可以大幅缩小模糊测试的目标范围。
2.2漏洞检测能力
为验证CRFuzzer的漏洞检测能力,本文选取SRFuzzer和添加变异规则后形成的SRFuzzer+进行对比实验。实验在ISR 4000和CSR1000v路由器上各自对16.5.1-16.11.1这31个版本的固件进行命令注入漏洞检测。实验结果如表1所示。
表1漏洞检测效果对比
由表1可知,CRFuzzer共检测出11个命令注入漏洞,其中5个为底层系统型,可实现以root权限在底层Linux系统中执行任意命令;6个为用户权限型,可实现以权限为Read-Only的用户登录,执行需要管理员权限的命令,获取敏感数据或修改路由器配置。这11个漏洞中9个CVE漏洞为已知漏洞,思科官方披露了部分漏洞信息和临界版本(首次修复或首个不受影响的版本),但未公开漏洞位置和漏洞触发方式;2个CNVD漏洞为CRFuzzer发现的未公开漏洞。
SRFuzzer不具备对用户权限型命令注入漏洞的检测能力,因为Linux与IOSd使用的是两套不同的命令。若不增加特殊字符补齐策略,5个底层系统型命令注入漏洞中,SRFuzzer仅能检测出1个。SRFuzzer+增加了针对用户权限型命令注入漏洞的变异规则,及对特殊字符的补齐策略,但仍然仅从前端请求中提取API信息用以生成初始种子,因此只能检测出非隐藏API相关的安全漏洞。SRFuzzer+在CSR 1000v上比在ISR 4000上表现更好,是因为CSR 1000v功能更加齐全,具有一些ISR 4000不支持的功能接口,可以从前端请求中提取出更多API信息。CRFuzzer结合前端请求和后端程序分析,可以提取出更为完整的API信息,具有更好的漏洞检测能力。实验结果表明,CRFuzzer可以有效检测出IOS-XE系统Web管理服务中的底层系统型和用户权限型两种命令注入漏洞。
2.3漏洞检测效率
为测试CRFuzzer的漏洞检测效率,记录了SRFuzzer+和CRFuzzer在ISR 4000与CSR1000v每个固件上进行测试所消耗的时间。SRFuzzer通过“;”、“&”或“||”等shell字符在可变参数中注入在底层Linux系统中执行的命令,如果参数被用于构建在IOSd中执行的命令,将无法被CLI命令解析模块识别,直接返回Error。由于SRFuzzer不会有命令执行的时间开销,因此本实验不再对比SRFuzzer的测试时间。以16.5.1、16.6.1、16.7.1、16.8.1、16.9.1、16.10.1和16.11.1这7个版本的固件为例,测试时间如图5所示,图中一个单元从左至右分别代表SRFuzzer+on ISR、CRFuzzer on ISR、SRFuzzer+on CSR、CRFuzzer on CSR。CRFuzzer在ISR4000和CSR 1000v中提取出的API信息,及基于命令注入漏洞的特征筛选出的脆弱代码对应的API数量基本一致,在两种类型的路由设备上的测试时间也基本相同。而SRFuzzer+从CSR 1000v的前端请求中,能提取出更多API信息,因而在CSR 1000v上的测试时间大于ISR 4000。
从图5可以看出,对于同一版本的固件,CRFuzzer所消耗的时间小于SRFuzzer+。CRFuzzer结合前端请求和后端程序,提取出更多的API信息,生成了更多初始种子。但CRFuzzer基于底层系统型和用户权限型两种命令注入漏洞的基本特征,进行脆弱代码筛选,仅对可能存在漏洞的API进行测试。如图4所示,筛选出的脆弱代码对应的API数量远小于API总数。实验结果表明,该方法可以大幅缩小模糊测试的目标范围,提高漏洞检测效率。
以上所述仅为本发明的较佳实施例,并不限制本发明,凡在本发明的精神和原则范围内所做的任何修改、等同替换和改进,均应包含在本发明的保护范围之内。
Claims (9)
1.一种面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:包括以下步骤:
步骤一、种子生成:从前端Web请求和后端Lua程序中提取API信息,结合命令注入漏洞的基本特征,对后端Lua程序进行筛选,获取可能存在漏洞的脆弱代码段,生成模糊测试的初始种子;
步骤二、测试用例生成:对初始种子进行参数属性标记,并根据命令注入漏洞类型应用对应的变异规则,生成测试用例;所述命令注入漏洞类型包括底层系统型命令注入漏洞和用户权限型命令注入漏洞;
步骤三、模拟请求:模拟Web UI的登录操作向路由设备发起请求并接收响应;所述请求包括GET请求和POST请求;
步骤四、异常监测与测试环境恢复:监测路由设备状态,利用IOS-XE系统Web服务的CLICommand API查看或修改路由器配置信息,以判断命令注入是否成功,并将设备配置恢复到初始状态。
2.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤一中从前端Web请求提取API信息,在提取过程中,解析并存储请求的头部和参数信息。
3.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤一中从后端Lua程序提取API信息,根据函数中数据的引用来识别请求中的具体参数,生成相应的初始种子,其中参数识别流程为:
(1)识别程序对请求参数的解析获得初始参数名称;
(2)根据对参数元素的访问方式,识别第一层参数,记录参数名与对应的变量名称;
(3)根据提取到的变量名称,继续识别第二层参数;
(4)识别程序中的固定字符串;
(5)根据(2)、(3)、(4)的记录生成API信息。
4.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤二中对于前端请求生成的初始种子进行参数属性标记方法为:首先识别文本类型并进行标记,然后对标记为字符串的参数进行数次差异较大的变异,根据反馈结果判断是否为常量字符串。
5.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤二中对于后端程序生成的初始种子进行参数属性标记方法为:首先依据参数名称进行常量化推断,然后依次对剩下的空字符进行属性变异,生成新的种子,并通过模拟客户端生成请求数据发送到路由设备,根据反馈的结果信息推断参数的实际属性。
6.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤二中针对底层系统型命令注入漏洞的种子变异时对特殊字符串补齐,使注入的命令可以成功执行;针对用户权限型命令注入漏洞进行种子变异时采用查看配置和修改配置两种规则。
7.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤四中异常监测时,针对底层系统型命令注入漏洞,在生成的测试用例中,注入的命令为在bootflash中创建文件,判断命令是否注入成功,以管理员用户登录,向CLI CommandAPI发送一个查看bootflash存储内容的命令,检查返回结果中是否含有所创建的文件名。
8.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤四中异常监测时,针对用户权限型命令注入漏洞根据相应的变异规则分别对响应数据和设备配置进行监测;若测试用例的响应数据中,包含预先配置的管理员用户及其密码,则表明获取敏感数据成功,
以管理员用户登录,向CLI Command API发送查看路由器配置的命令,若返回结果包含所添加的管理员用户和密码,则表明修改设备配置成功。
9.根据权利要求1所述的面向Cisco IOS-XE的Web命令注入漏洞检测方法,其特征在于:步骤四中进行测试环境回复时,针对底层系统型命令注入漏洞,利用CLI Command API删除bootflash中所创建的文件;针对用户权限型命令注入漏洞,仅考虑注入的命令对设备的影响,若注入的命令为查看敏感数据,则不需要进行测试环境恢复,若注入的命令为添加管理员用户,则利用CLI Command API删除所添加的用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210392201.5A CN114780398A (zh) | 2022-04-14 | 2022-04-14 | 面向Cisco IOS-XE的Web命令注入漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210392201.5A CN114780398A (zh) | 2022-04-14 | 2022-04-14 | 面向Cisco IOS-XE的Web命令注入漏洞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780398A true CN114780398A (zh) | 2022-07-22 |
Family
ID=82428388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210392201.5A Pending CN114780398A (zh) | 2022-04-14 | 2022-04-14 | 面向Cisco IOS-XE的Web命令注入漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780398A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115879115A (zh) * | 2022-12-13 | 2023-03-31 | 北京水木羽林科技有限公司 | 一种Web应用安全漏洞的检测方法及系统 |
-
2022
- 2022-04-14 CN CN202210392201.5A patent/CN114780398A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115879115A (zh) * | 2022-12-13 | 2023-03-31 | 北京水木羽林科技有限公司 | 一种Web应用安全漏洞的检测方法及系统 |
CN115879115B (zh) * | 2022-12-13 | 2024-03-29 | 北京水木羽林科技有限公司 | 一种Web应用安全漏洞的检测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10243679B2 (en) | Vulnerability detection | |
US11363061B2 (en) | Runtime detection of injection attacks on web applications via static and dynamic analysis | |
Maji et al. | An empirical study of the robustness of inter-component communication in android | |
US10505966B2 (en) | Cross-site request forgery (CSRF) vulnerability detection | |
US8646088B2 (en) | Runtime enforcement of security checks | |
Li et al. | WebShield: Enabling Various Web Defense Techniques without Client Side Modifications. | |
Wang et al. | A new cross-site scripting detection mechanism integrated with HTML5 and CORS properties by using browser extensions | |
Hou et al. | A dynamic detection technique for XSS vulnerabilities | |
CN112671605A (zh) | 一种测试方法、装置及电子设备 | |
Cao et al. | Learning state machines to monitor and detect anomalies on a kubernetes cluster | |
Auricchio et al. | An automated approach to web offensive security | |
CN114780398A (zh) | 面向Cisco IOS-XE的Web命令注入漏洞检测方法 | |
Xie et al. | JTaint: finding privacy-leakage in chrome extensions | |
Drakonakis et al. | ReScan: A Middleware Framework for Realistic and Robust Black-box Web Application Scanning | |
Azad et al. | {AnimateDead}: Debloating Web Applications Using Concolic Execution | |
Zhao et al. | Large-scale detection of privacy leaks for BAT browsers extensions in China | |
CN112287349A (zh) | 安全漏洞检测方法及服务端 | |
Deng et al. | {NAUTILUS}: Automated {RESTful}{API} Vulnerability Detection | |
Vernotte | A pattern-driven and model-based vulnerability testing for web applications | |
Caseirito | Attacking web applications for dynamic discovering of vulnerabilities | |
Nunes | Blended security analysis for web applications: Techniques and tools | |
Jnena | Modern Approach for WEB Applications Vulnerability Analysis | |
Kilaru | Improving techniques for SQL injection defenses | |
Kosuga | A Study on Dynamic Detection of Web Application Vulnerabilities | |
Antunes | Monitoring web applications for vulnerability discovery and removal under attack |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |