D-Link系列家用路由器漏洞分析总结
⚡ 尚未了解清楚
❗ 已编写好完整POC
❓ 未能编写完整POC
❌ 暂时不能实际验证
DCS-2530L
CVE-2020-25078 ❗ 敏感信息泄露
D-Link DCS-1100 || DCS-1130
CVE-2017-8416 ⚡
DIR-850L
cgi动态web服务器
CVE-2017-3193 ❗ 认证前栈溢出
CVE-2017-14421 ❗ 路由器后门
DIR-816
独立web服务器
CVE-2021-27114 ❓ 认证后栈溢出
CVE-2021-27113 ❗ 认证后命令注入
CVE-2019-10040 ❗ 认证后命令注入
CVE-2019-10039 ❗ 认证绕过
CVE-2019-10041 ❗ 认证绕过
DSL-2640B
独立web服务器
CVE-2020-9279 ❌ 弱口令
CVE-2020-9278 ❓ 未授权访问
CVE-2020-9277 ❗ 认证绕过
CVE-2020-9276 ❓ 认证后栈溢出
CVE-2020-9275 ❓ 信息泄露
DIR-878
cgi动态web服务器
CVE-2021-30072 ❓ 认证前栈溢出
CVE-2019-9125 ❗ 认证前栈溢出
CVE-2020-8863 ❗ 认证绕过
CVE-2019-9124 ❗ 认证绕过
CVE-2019-8319 ❓ 认证后命令注入
上述家用路由器设备,整体功能单一,路由器功能实现往往依赖于嵌入式linux系统
提供对硬件的管理,在此之上厂商为了用户友好往往会在问年间系统中实现一个C/S
结构的管理端(往往回事WEB服务器对浏览器的B/S结构),本质上对这类设备的漏洞挖
掘实际就是集中在对文件系统中的厂商实现的WEB服务器漏洞的挖掘。
参考OWASP TOP10 IOT 2018 其主要问题基本就集中在弱密码,可猜测密码或硬编码
密码,不安全的网络服务上
这里的不安全网络服务,大致上基本就只有厂商自己开发的WEB服务,少数型号可能还会
有一些特殊服务
对于WEB服务的漏洞挖掘可以部分参考OWASP对于WEB的总结,同时在固件有办法提取的情
况下甚至可以直接灰盒审计厂商在文件系统给中实现的WEB服务器。
上述型号的设备对web服务器的实现大致只有两种,考虑到嵌入式设备硬件平台的局限性,
不会像常规PC平台那样使用形如nginx,apache这样的开源服务器或是脚本编程语言,大部分
都是一个c语言实现的web服务进程,也有使用轻量开源web服务器+自行设计cgi程序这样的开
发方式。
基本上只要理清楚,WEB服务器的工作流程,就能对这类设备的安全问题做一个完整的分析,
这类WEB服务器也不会特别复杂,我认为在分析程序做漏洞挖掘时,比较重要的点应该是把握那些
位置有比较大概率会出现问题,重点关注应该能有所发现。
漏洞类型总结
对这些型号的固件分析下来发现,很多严重的问题都会集中在认证逻辑过程中,以下面几个CVE为例
CVE-2019-9125
CVE-2019-9125是DIR-878上的认证前栈溢出,此漏洞出现在服务器对HNAP认证协议的处理过程中
由于处理过程中一个例程使用strncpy失当,将用户输入直接拷贝到栈上,从而导致栈溢出。
溢出点是明显的,但要实际了解是否可以有外部用户引发,需要详细跟踪参数传递,跟踪交叉引用
来看看为什么这里会被执行
这段代码实际出现在prog.cgi这个程序中,DIR-878 web的部署方式是使用lighthttp + 自己编写的cgi
程序完成的。对于大部分请求基本都交付给prog.cgi完成