破壳分析:Linksys设备多个0-day漏洞

一、前言 Linksys E8450是销量较高的一款多功能路由器。本文会讲解下该目标的攻击面选取策略,以及如何结合逆向分析和破壳平台,对目标进行漏洞发现。最终提交至CNVD漏洞平台,并获得12个漏洞编号。 固件下载 https://www.linksys.com/us/support-article?articleNum=317332 版本:Ver. 1.2.00.273012 二、攻击面分析 2.1 固件解压 最新版本固件进行了加密,通过分析Ver. 1.1.01.272918 (Unsigned)固件中的升级流程,在其upgrade.cgi文件中可以得知固件解密流程如下: 在arm架构设备中,chroot到其根目录后,如上执行gpg命令,可以得到最新版固件解密后的版本,名为raw.bin。 2.2 分析目标选择 解压后直接进入_raw.bin.extracted/squashfs-root-0/etc目录查看其可能使用的web服务器,发现了lighttpd文件夹,由此可以判断系统使用的web服务器是lighttpd。 一般来说直接分析开源的web服务器如lighttpd不是我们的首要选择,我们更关心Linksys自定义的一些功能。比如cgi程序(公共网关接口,是外部扩展应用程序与Web 服务器交互的一个标准接口)。 从下图大致就是cgi与web服务的关系,并且对于cgi程序环境变量及标准输入 是用户的输入。 根据lighttpd配置文件可知服务器的文件目录在www目录下 server.modules = ( ) server.document-root = "/www" server.upload-dirs = ( "/tmp" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" 由下面的文件可知.cgi文件会被直接访问解析 server.modules += ( "mod_cgi" ) ## ## Plain old CGI handling ## ## For PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini. ## cgi.assign = ( "....

2024年01月10日 · 2 分钟 · w00d