物联网安全从零开始-BIG-IP CVE漏洞分析

本环境是蛇矛实验室基于火天网演攻防演训靶场进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现验证工作。火天网演中,内置大量固件设备,包含大型网络设备及物联网设备,可以灵活选取进行测试验证。
背景
2022年11月16日,f5官方公布了f5 big-ip和big-iq设备中的多个安全漏洞。其中高危漏洞(cve-2022-41622,cvss评分8.8)是icontrol soap跨站点请求伪造,可允许未经身份验证的远程代码执行攻击。高危漏洞(cve-2022-41800,cvss评分8.7)为icontrol rest远程代码执行漏洞,允许经过身份验证的管理员用户通过rpm注入执行任意代码。
受cve-2022-41622影响的版本为:
big-ip:17.0.0big-ip:16.1.0-16.1.3big-ip:15.1.0-15.1.8big-ip:14.1.0-14.1.5big-ip:13.1.0-13.1.5big-iq:8.0.0-8.2.0big-iq:7.1.0  
    受cve-2022-41800影响的版本为:
big-ip:17.0.0big-ip:16.1.0-16.1.3big-ip:15.1.0-15.1.8big-ip:14.1.0-14.1.5big-ip:13.1.0-13.1.5
big-ip 设备默认有俩个用户(终端用户和web用户),在配置设备信息时由于系统对web端用户的密码没有什么严格要求(如必须数字、字母组合、特殊符号等等),可能会导致攻击者可以爆破出web端用户密码,加上今年5月刚爆出的cve-2022-1388未授权绕过漏洞几乎为同型号设备,这就使得俩个web用户导致的pre-auth漏洞很容易被利用。
环境搭建
    本小节使用的漏洞环境固件为big-ip,漏洞版本号为16.1.0。在靶场中调用big-ip后,big-ip会自动分配出mgmt口的ip地址。
在浏览器端使用(admin/admin)登录后,如下图所示:
漏洞分析
big-ip的管理模式有多种,包括web页面,tmsh命令行,rest api,以及soap api。soap api数据交换格式为soap/xml。rest api数据交换格式使用http/json。soap api为比较旧的技术,在版本11.6中已经放弃维护,目前支持正常使用,rest api目前官方一直在推荐用户使用和开发。cve-2022-41622为csrf漏洞,漏洞本身危害不大,但是由于在漏洞利用过程中可以使用soap api接口进行操作从而rce。cve-2022-41800为icontrol rest容易受到rpm注入攻击导致rce。
明白了漏洞利用的方法,下面我们开始分析。进入big-ip终端,big-ip默认开启ssh服务,我们可以使用scp -r root@ip:/* ./命令将big-ip的所有文件拷贝到本地进行分析。big-ip中程序运行的httpd服务为apache
cve-2022-41800
    我们在etc目录简单查看一下,在init.d目录下发现了httpd启动服务的httpd脚本,脚本注明为apache server并且配置文件的位置为/etc/httpd/conf/httpd.conf。
查看一下配置文件,我们发现httpd接受请求,并将请求转发到不同端口的服务上完成对应的处理。下图中authpam开启,说明调用了httpd的某个.so 文件进行预先的认证,并且将所有向 /mgmt 发送的请求都转发到了 http://localhost:8100/mgmt/。
在16.1.0的官方文档中,简单翻阅我们得知所有rest api的uri中都是含有 mgmt 的。
查看一下8100端口的服务,发现有java服务在监听
查看一下pid信息,发现java的-classpath参数后为usr/share/java/rest和usr/share/java/rest/libs目录下的所有jar包,且--port参数为8100。
如果要动态调试java程序,我们可以修改etc/bigstart/scripts/restjavad,在jvm_options后附加-agentlib:jdwp=transport=dt_socket,address=1043,server=y,suspend=n选项,并且使用idea配置好ip、port后进行远程调试。
    注意:防火墙默认策略为禁止,动态调试需要放行调试端口
restserverservlet 是整个 icontrole rest 的入口,在其service方法中restserverservlet 异步执行,注册了一个 readlistener。而且会在处理请求时,为每一个请求创建了一个 restoperation,并且后续处理将以回调的方式执行。
这里会检测请求中是否包含相关认证,并将其设置到 restoperation 中。
调用setidentityfrombasicauth方法后,并且basic认证的value不为空便会进入setidentitydata,在比较username和userreference都不为空时,最后在completeevaluatepermission中比较完成后完成身份认证过程。
随后trysendinprocess 中会根据请求端口来寻找相关的 restworker 。在 findworker() 方法中,将以请求路径为查询条件,匹配 restserver 的 pathtowarkermap 。之后便会执行 worker.onrequest() 方法,将worker添加到 restserver.readyworkerset 中。后面会以该 set 为消费者队列,并执行各个worker。
restserver 中主要工作是维护队列,并执行相关的worker。入口点为其构造方法:
processqueuerequests后面运行到 callderivedrestmethod 方法,这里便会调用对应worker的处理方法并完成对应的链调用。
在官方文档中,有开发编写worker的例子,流程如下,在worker中我们发现worker_uri_path为uri中/mgmt/后面的的地址。
根据worker_uri_path字符串,我们可以简单搜索一下系统中的worker,结果如下图所示。这里worker_uri_path为shared/iapp/rpm-spec-creator就是生成spec文件的worker
打开iapprpmspecfilecreatorworker.jsworker的文件,发现加载了../infrastructure/specfilecreator模块,并使用specwriter变量调用,随后new了一个specwriter
java中的onpost方法传进来的restoperation,先getbody获取内容,并且调用_validate进行判断,随后使用specwriter.render进行格式化,最后调用getfs().writefile生成.spec文件
生成spec文件的名字如下。
_validate对传进来的内容进行判断,如判断body是否为空,header是否存在application/json,取出specfiledata的json内容并进行判断,判断是否有name、summary、version、release、description、srcbasepath字符等等。这里便是漏洞点,漏洞成因便是没有对用户传来的json数据进行判断,导致攻击者可以通过 特殊字符进行绕过。
在进行格式化时,使用specfilecreator.js模块。这里使用了dot.js模板,模板path为./resources。dot.js 灵感来源于搜寻基于 v8 和 node.js ,强调性能,最快速最简洁的 javascript 模板函数。它在 node.js 和浏览器两端都彰显出卓越的性能。下图中specfiledata调用spectemplate格式化json数据
dot.js模板如下,当攻击者传来的数据description后面跟着 是,spec文件就变得攻击者可控,可随意添加恶意数据,如调用%check 'command'执行系统命令。
当我们再次通过rest api进行build-package 时,就会执行spec文件中的恶意命令
cve-2022-41622
    cve-2022-41622为csrf漏洞,csrf漏洞的成因是网站的已认证通过信息在浏览器中一段时间内不会过期,以后只要是访问这个网站,会默认用你已经通过的认证信息来进行,所以不用再次登录。如果攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,管理者点击后可能会执行恶意操作(比如是添加账号、获取信息等)。
    漏洞程序为 /icontrol/icontrolportal.cgi,并且该程序为suid权限。
csrf漏洞本身的成因比较简单,没有对content-type以及referer进行验证,以及token机制不完善。
下面说一下漏洞利用。在前面我们已经分析了cve-2022-41800漏洞,这里的cve-2022-41622与前面的利用过程类似,这里只不过是利用soap api进行发送soap请求。当我们在http中用soap方式发送xml数据去调用一个服务时,我们只知道通用的http协议的传参方式还是不够的,我们仍然需要知道目标服务的接口文档。在soap中每个服务都有的接口文档就是一个用wsdl规范编写的wsdl文档,当程序接收到soap请求后根据wsdl文档进行解析执行。
下图为添加用户请求的wsdl文件为management.usermanagement.wsdl
这样我们在pre-auth的情况下就可以发送创建用户的请求来创建用户,当然我们也可以构造其他的请求(如上传文件)
漏洞复现
cve-2022-41800
    使用rest api调用rpm-spec-creator创建spec文件并查看。
使用nc -lvp 4444命令监听4444端口
使用rest api调用build-package 构建package包裹。
此时已经获到shell,并且是root权限。
cve-2022-41622
    将csrf.html目录使用python启动http服务
假设管理员使用账号密码登录big-ip web管理页面,此时点击了我们启动http服务的链接,链接自动跳转到https://192.168.141.152/icontrol/icontrolportal.cgi并提交soap请求
用户已经添加成功
使用我们设置好的用户名和密码进行登录。
总结
这一小节,我们简单分析了f5设备的俩个pre-auth漏洞,了解了rpm注入和csrf漏洞产生原因。并且在此过程中我们简单学习f5设备中 soap接口和rest接口的区别以及利用。
    蛇矛实验室成立于2020年,致力于安全研究、攻防解决方案、靶场对标场景仿真复现及技战法设计与输出等相关方向。团队核心成员均由从事安全行业10余年经验的安全专家组成,团队目前成员涉及红蓝对抗、渗透测试、逆向破解、病毒分析、工控安全以及免杀等相关领域。


sysRq键的使用方法
乐鑫打造智能语音设备开发平台 飞荣达荣登新兴产业“领航企业50强”
三星146英寸MicroLED电视9月开始量产,设备寿命将达到10万小时
ADI与现代汽车公司合作推出业界首个全数字路噪降噪系统
几个在工业领域数据驱动价值创造的案例
物联网安全从零开始-BIG-IP CVE漏洞分析
共射极放大电路的静态分析步骤 静态工作点调整方法
消防疏散系统中应急照明灯的功效是什么
谷歌助力医疗:将打造机器人辅助手术平台
华为手机支持微信人脸支付
基于CNN的汽车视觉识别系统应用介绍
DP83TC811S-Q1的优点及在T-BOX的应用中的优势
河套IT TALK 67: (原创) 基于深度学习的超分技术(万字长文)
英特尔Mobileye始终如一 引领自动驾驶行业进行变革
基于AT89C51单片机的算术运算计算器系统设计
Twilio与谷歌云合作建立完全可编程的云联络中心平台
MIT工程师开发通过离子实现对大脑学习过程节能模拟的AI系统
小型发电机的基本知识
无人机视觉导航国内外研究现状以及存在的问题
NDI入川之旅 | 千视受邀参加四川广播电视技术年会