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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2018-0114 — Cisco의 node-jose에서의 취약점 악용, JWT 관리를 위해 생성된 JavaScript 라이브러리. | Kitploit
도구/GitHubGitHub/j4k0m/cve-2018-0114
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationCryptographyPenetration Testing
GitHubj4k0m/cve-2018-0114

CVE-2018-0114

Cisco의 node-jose에서의 취약점 악용, JWT 관리를 위해 생성된 JavaScript 라이브러리.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2018-0114

Cisco의 node-jose(JWT를 관리하기 위해 만들어진 JavaScript 라이브러리)의 취약점 악용.

이 Cisco node-jose 취약점을 통해 공격자는 악의적인 토큰을 위조할 수 있습니다.

JWT는 사용자가 토큰 헤더에 공개 키(jwk 값 사용)를 포함할 수 있도록 허용합니다. 그러나 애플리케이션은 이러한 키를 절대 신뢰해서는 안 됩니다. 공격자가 자신의 키를 제공하고 해당 개인 키로 메시지에 서명할 수 있기 때문입니다.

검토

이 문제는 0.11 이전 버전에 영향을 미칩니다.

이 문제를 해결하기 위해 도입된 변경 사항(https://github.com/cisco/node-jose/commit/959a61d707ed2c8cf6582139a5605119283e4acb)을 살펴보면, 특히 한 파일(test/fixtures/jws.embedded_jwk.json)이 흥미롭습니다:

root@kitploit:~
 "signing": {
    "protected": {
      "alg": "PS256",
      "jwk": {
        "kty": "RSA",
        "kid": "[email protected]",
        "use": "sig",
        "n": "n4EPtAOCc9AlkeQHPzHStgAbgs7bTZLwUBZdR8_KuKPEHLd4rHVTeT-O-XV2jRojdNhxJWTDvNd7nqQ0VEiZQHz_AJmSCpMaJMRBSFKrKb2wqVwGU_NsYOYL-QtiWN2lbzcEe6XC0dApr5ydQLrHqkHHig3RBordaZ6Aj-oBHqFEHYpPe7Tpe-OfVfHd1E6cS6M1FZcD1NNLYD5lFHpPI9bTwJlsde3uhGqC0ZCuEHg8lhzwOHrtIQbS0FVbb9k3-tVTU4fg_3L_vniUFAKwuCLqKnS2BYwdq_mzSnbLY7h_qixoR7jig3__kRhuaxwUkRz5iaiQkqgc5gHdrNP5zw",
        "e": "AQAB"
      }
    },
    "protected_b64u": "eyJhbGciOiJQUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJraWQiOiJiaWxiby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUiLCJ1c2UiOiJzaWciLCJuIjoibjRFUHRBT0NjOUFsa2VRSFB6SFN0Z0FiZ3M3YlRaTHdVQlpkUjhfS3VLUEVITGQ0ckhWVGVULU8tWFYyalJvamROaHhKV1REdk5kN25xUTBWRWlaUUh6X0FKbVNDcE1hSk1SQlNGS3JLYjJ3cVZ3R1VfTnNZT1lMLVF0aVdOMmxiemNFZTZYQzBkQXByNXlkUUxySHFrSEhpZzNSQm9yZGFaNkFqLW9CSHFGRUhZcFBlN1RwZS1PZlZmSGQxRTZjUzZNMUZaY0QxTk5MWUQ1bEZIcFBJOWJUd0psc2RlM3VoR3FDMFpDdUVIZzhsaHp3T0hydElRYlMwRlZiYjlrMy10VlRVNGZnXzNMX3ZuaVVGQUt3dUNMcUtuUzJCWXdkcV9telNuYkxZN2hfcWl4b1I3amlnM19fa1JodWF4d1VrUno1aWFpUWtxZ2M1Z0hkck5QNXp3IiwiZSI6IkFRQUIifX0",
    "sig-input": "eyJhbGciOiJQUzI1NiIsImp3ayI6eyJrdHkiOiJSU0EiLCJraWQiOiJiaWxiby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUiLCJ1c2UiOiJzaWciLCJuIjoibjRFUHRBT0NjOUFsa2VRSFB6SFN0Z0FiZ3M3YlRaTHdVQlpkUjhfS3VLUEVITGQ0ckhWVGVULU8tWFYyalJvamROaHhKV1REdk5kN25xUTBWRWlaUUh6X0FKbVNDcE1hSk1SQlNGS3JLYjJ3cVZ3R1VfTnNZT1lMLVF0aVdOMmxiemNFZTZYQzBkQXByNXlkUUxySHFrSEhpZzNSQm9yZGFaNkFqLW9CSHFGRUhZcFBlN1RwZS1PZlZmSGQxRTZjUzZNMUZaY0QxTk5MWUQ1bEZIcFBJOWJUd0psc2RlM3VoR3FDMFpDdUVIZzhsaHp3T0hydElRYlMwRlZiYjlrMy10VlRVNGZnXzNMX3ZuaVVGQUt3dUNMcUtuUzJCWXdkcV9telNuYkxZN2hfcWl4b1I3amlnM19fa1JodWF4d1VrUno1aWFpUWtxZ2M1Z0hkck5QNXp3IiwiZSI6IkFRQUIifX0.SXTigJlzIGEgZGFuZ2Vyb3VzIGJ1c2luZXNzLCBGcm9kbywgZ29pbmcgb3V0IHlvdXIgZG9vci4gWW91IHN0ZXAgb250byB0aGUgcm9hZCwgYW5kIGlmIHlvdSBkb24ndCBrZWVwIHlvdXIgZmVldCwgdGhlcmXigJlzIG5vIGtub3dpbmcgd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4",
    "sig": "XslzHQKM0UogsxugMxj0vmFhNijnmCksPyQ0x8SQ5xC9rEg4_3n_22bdJkM6CQWiTSDUuBCgXo3eqb6GhoPnYgnlGouDy0dIeaihl5Nr85uncW29I39OEZel8UtVGTfOxwssibymheBjKVp0_umkQANicz2_JTLGJQ42BgDVq6L2ZyrqIu7onr9B1XC-O9uzN2xoDfRwK7jCJjH1TPH09W9Pi1iLiXuf7liKH5dBDFzfjCqS4p3PQ6KtdT_gMTOg35PErxFfoi_53cr4l-rUv5ZkdcmIadGjMHDBVpfKSHhkZRVrvR0q6Go6TyvzL5l_hONYKKn09pkhFDjN9JvZeQ"

특히 sig-input 값이 중요합니다. 이 값을 디코딩하면 다음과 같은 데이터를 얻을 수 있습니다:

root@kitploit:~
{
  "alg":"PS256",
  "jwk":  {
          "kty":"RSA",
          "kid":"[email protected]",
          "use":"sig",
          "n":"n4EPtAOCc9Alke...........rNP5zw",
          "e":"AQAB"
          }
}

이것이 우리가 페이로드가 작동하도록 올바른 헤더를 얻기 위해 따라야 할 형식입니다.

Exploitation

  • openssl을 사용하여 개인 RSA 키를 생성합니다.
  • 방금 생성한 개인 키의 공개 구성 요소에서 n과 e를 추출합니다.
  • 동일한 개인 키를 사용하여 페이로드에 서명합니다.
  • 페이로드에서 n과 e 값을 변경하여 사용 중인 개인 키와 일치하도록 해야 합니다.
  • 토큰 본문에 대한 올바른 페이로드를 생성해야 합니다.
  • 알고리즘 alg가 서명에 사용하는 알고리즘인지 확인해야 합니다. 대부분 RS256으로 값을 변경해야 할 것입니다.

예시:

  • https://github.com/zi0Black/POC-CVE-2018-0114/blob/master/jwk-node-jose.py

리소스:

  • https://nvd.nist.gov/vuln/detail/CVE-2018-0114
  • https://blog.pentesteracademy.com/hacking-jwt-tokens-jws-standard-for-jwt-666810809323
도구 다운로드