## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-J4K0M-CVE-2019-5420
# CVE-2019-5420
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΡΠ³Π°Π΄Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Ruby-on-Rails ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠ³Π°Π΄Π°ΡΡ ΠΊΠ»ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΡΠ΅ΡΡΠΈΠΉ.
# Π Π°ΡΡΠΈΡΡΠΎΠ²ΠΊΠ°:
## ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ°:
Rails ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 3 ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (development, test, production), ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³Π°Π΄Π°ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡ.
ΠΠ»ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΡΠ΅ΡΡΠΈΠΈ, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ:
root@kitploit:~
rails new Jakom
Jakom: ΠΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΠΊΠ»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ:
root@kitploit:~
PKDF2_HMAC_SHA1[ MD5 [ APPNAME + "::Application" ] , salt: "authenticated encrypted cookie" , iterations: 1000 , key's length: 32 ]
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π·Π΄Π΅ΡΡ:
root@kitploit:~
key = pbkdf2_hmac("sha1", md5_name.encode("utf-8"), "authenticated encrypted cookie".encode("utf-8"), 1000, 32)
## Π Π°ΡΡΠΈΡΡΠΎΠ²ΠΊΠ° ΡΠ΅ΡΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ°:
Π Rails ΡΠ΅ΡΡΠΈΠΈ ΡΠΈΡΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ AES-265-GCM, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ»ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΡ/ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡΠΈΠΈ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, ΡΡΠΎ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ΡΡΠΈΠΈ:
root@kitploit:~
BASE64 [ DATA ] -- BASE64 [ IV ] -- BASE64 [ AUTH_TAG ]
## ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π·Π΄Π΅ΡΡ:
root@kitploit:~
data = binascii.hexlify(base64.b64decode(base64_data.split("--")[0])).decode("utf-8")
iv = binascii.hexlify(base64.b64decode(base64_data.split("--")[1])).decode("utf-8")
tag = binascii.hexlify(base64.b64decode(base64_data.split("--")[2])).decode("utf-8")
ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΊΡΠΊΠΈ ΡΠ΅ΡΡΠΈΠΈ β ΡΡΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ β IV, ΡΡΠ΅ΡΡΡ ΡΠ°ΡΡΡ β GCM-ΡΠ΅Π³ (ΡΠ΅Π³ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ). ΠΠ±Π»Π°Π΄Π°Ρ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ ΡΠ΅ΡΡΠΈΠΈ Π½Π°ΠΏΡΡΠΌΡΡ: 
### ΠΡΠΈΠΌΠ΅Ρ:
