## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-J4K0M-CVE-2018-0114
# 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": "some-email@example.com",
"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":"some-email@example.com",
"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