我这几天看了个D-Link DIR 645的漏洞,花了一段时间看PoC,这里简单分享下。遗憾的是我想用binwalk提取这个路由器的文件系统,总是提取失败。漏洞是通过构造对路由器serviec.cgi的POST请求中的data段来达到远程执行命令的目的。这个漏洞据说在615和815中也能实现,但是我试了几台都没有成功,只有645中成功复现了。Cr0n1c最早给出了PoC。链接在这里。
fd6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3y4C8k6i4c8K6N6r3!0J5L8i4y4W2j5%4g2J5K9i4c8&6i4K6u0W2j5$3!0E0i4K6u0r3k6X3W2D9k6i4y4Q4x3V1j5I4y4o6f1^5y4e0W2Q4x3V1k6V1L8r3W2F1K9%4u0G2N6i4c8W2M7Y4y4K6k6i4u0$3K9h3y4W2i4K6u0V1k6i4S2W2j5#2)9J5k6i4c8^5N6l9`.`.
我们来看看这个代码具体做了什么。
首先,它利用了一个比较旧的漏洞获得了路由器的管理员密码。这个漏洞编号是CWE-200。链接在这里。
796K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6$3N6h3I4V1j5W2)9J5k6h3y4G2L8g2)9J5c8W2)9K6c8X3W2V1i4K6u0W2y4K6R3@1x3H3`.`.
这个漏洞就是说我们向路由器上的 /getcfg.php发出请求时,路由器会回复一个包含密码的页面。相关代码如下:
我找到了一个D-Link DIR 645 并且试了下。
我们还可以通过这样的命令行指令获得密码。
不过,值得一提的是,这款路由器的user用户登陆是不需要密码的。第二个漏洞就是我们的远程命令执行了。要利用这个漏洞,首先得用刚刚获得的密码来创建一个session。
我尝试了下,可以成功。
原来的PoC有一些小问题,我改进了下,可以在python2.7下运行。有兴趣的朋友可以去我的github下载。链接在这里。
a93K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6j5h3#2G2K9s2W2W2M7#2)9J5c8V1g2^5M7r3I4G2K9i4c8S2N6r3W2G2L8W2)9J5c8Y4c8J5k6h3g2Q4x3V1k6E0j5i4y4@1k6i4u0Q4x3V1k6p5i4K6u0V1e0r3W2F1K9#2)9#2k6V1c8u0f1W2)9#2k6U0j5@1y4b7`.`.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课