前几天drivertom大佬披露了一个存在于Immunity Canvas7.26 d2sec_unssh模块中的一个漏洞,成功利用该漏洞可导致命令执行,即被控端反制。
d2sec_unssh模块是用来爆破失陷主机中的 known_hosts 文件的,有漏洞的代码存在于
Canvas/3rdparty/D2SEC/exploits/d2sec_unssh/d2sec_unssh.py的第 454 行。
第 454 行中的 `os.popen` 方法通过格式化输出的方式传递了两个变量,而其中的 "i" 参数是通过循环self.ips 变量进行赋值的。
self.ips变量的值是通过make_list_ip方法中的一系列方法获取的,这些方法都是通过相关命令或文件获取跟该主机相关的IP地址,并放置在self.ips中。
比如etc_hosts方法是通过/etc/hosts获取的、list_who方法是使用`w`命令获取的、list_last使用`last`等等。
查看一些相关代码可以看到,从获取数据到调用`ssh-keygen`都没对获取的数据进行过滤处理,我们可在以上相关的一些获取数据的地方插入命令,如/etc/hosts中:
使用Canvas中的BuildCallbackTrojan模块生成一个木马,在靶机中运行后等待上线。
靶机上线后双击d2sec_unssh模块,填写相关参数后运行,调试可以看到ips变量包含有我们设置的代码。
单步执行后可以看到弹出了计算器,命令成功被执行。
虽然能命令执行,但需要控制端运行d2sec_unssh这个"冷门"模块,也挺鸡肋的了; 漏洞的逻辑比较简单,能让我这种小白用来学习,也足够了。
原文始发于微信公众号(云黑客):Immunity Canvas-命令执行漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论