CVE-2019-17621 dlink-822 命令注入漏洞复现
前言
第一次成功仿真一个固件并成功访问web并成功复现漏洞的exp ……
期间用 firmware-analysis-toolkit 和 firmware-analysis-plus (包括它的docker)在不同的操作系统(kali2020.4,kali2022.4)上来回实验了各种各样的固件,最终的成功目前看来只是一个偶然(因为遇到了太多我目前无法解释的问题)特此记录一下😪
环境
kali2020.4 (同样的固件,同样版本的fap,但是在kali2022.4上运行这个固件时,会Internal Error 500(但起码能访问到这个ip……😅)
固件下载地址:http://support.dlink.com.cn:9000/ProductInfo.aspx?m=DIR-822
就这一个版本1.03B03
fap使用的是2.3版本 https://github.com/liyansong2018/firmware-analysis-plus/tree/v2.3
使用的exp来源 https://www.jianshu.com/p/409106be87b7
运行
exp
1 |
|
坑
这是第一次仿真固件,一开始用的是firmware-analysis-toolkit(fat,https://github.com/attify/firmware-analysis-toolkit),首先它安装的时候就一堆问题。包括它的setup.sh里,要安装个lsb-core,但是apt找不到这个包,上网找了半天没找到一个能成功安装的,然后在他的issue里发现有人说这个不是必要的,可以删掉😅,然后setp.sh里还有个qt5base-dev的包,在kali上实际应该是qtbase5-dev😅,我不知道其他系统是啥样,还有一个坑是因为git clone不稳定,我手动下载的zip包,但实际上这个clone是要recursive的😅,直接运行fat.py他是用pexpect去开启另一个进程,然后新启动的这个进程并不会把输出显示过来,看源码调试半天才发现是少文件,当时还很纳闷😅为啥会少(过于nc)
相对来说firmware-analysis-plus(fap,https://github.com/liyansong2018/firmware-analysis-plus)比较友好(和fat基本一样,只不过细节上做了一些修改),首先,其他项目的文件统一放在了库里(没有那个递归了😅)然后还做了一个docker,但是这个docker没有装jefferson,仿真不了jffs的文件系统,只能继续自己配环境😅。fat.py后面要加一个-q qemu-path的参数,否则network interface列表会为空(nc如我还跑去人家issue底下问,还好人家没过几分钟就回复了😅)
然后exp部分一开始我用的这个帖子的exp :http://www.manongzj.com/blog/28-tkbcqqitdf.html,跑不通,后来换成了前文用的exp,居然好使了。。。我没看出来这俩exp有啥区别,不想管了😅,第一次固件仿真到此结束,漏洞是啥原理暂时不想管了