13 KiB
Padding Oracle
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
{% embed url="https://websec.nl/" %}
CBC - Cipher Block Chaining
In CBC mode the previous encrypted block is used as IV to XOR with the next block:
To decrypt CBC the opposite operations are done:
Notice how it's needed to use an encryption key and an IV.
Message Padding
As the encryption is performed in fixed size blocks, padding is usually needed in the last block to complete its length.
Usually PKCS7 is used, which generates a padding repeating the number of bytes needed to complete the block. For example, if the last block is missing 3 bytes, the padding will be \x03\x03\x03
.
Let's look at more examples with a 2 blocks of length 8bytes:
byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | 6 | 0x02 | 0x02 |
P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | 0x03 | 0x03 | 0x03 |
P | A | S | S | W | O | R | D | 1 | 2 | 3 | 0x05 | 0x05 | 0x05 | 0x05 | 0x05 |
P | A | S | S | W | O | R | D | 0x08 | 0x08 | 0x08 | 0x08 | 0x08 | 0x08 | 0x08 | 0x08 |
Note how in the last example the last block was full so another one was generated only with padding.
Padding Oracle
рдЬрдм рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдЧрд╛; рдлрд┐рд░ рдпрд╣ рдкреИрдбрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдкреИрдбрд┐рдВрдЧ рдХреА рд╕рдлрд╛рдИ рдХреЗ рджреМрд░рд╛рди, рдпрджрд┐ рдПрдХ рдЕрдорд╛рдиреНрдп рдкреИрдбрд┐рдВрдЧ рдПрдХ рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреИрдбрд┐рдВрдЧ рдУрд░реЗрдХрд▓ рднреЗрджреНрдпрддрд╛ рд╣реИред рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рддреНрд░реБрдЯрд┐, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдХрдореА, рдпрд╛ рдПрдХ рдзреАрдореА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
How to exploit
You could use https://github.com/AonCyberLabs/PadBuster to exploit this kind of vulnerability or just do
sudo apt-get install padbuster
рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рдХреБрдХреА рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
Encoding 0 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ base64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдорджрдж рдореЗрдиреВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ)ред
рдЖрдк рдЗрд╕ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХреБрдХреА рдХреА рд╕рд╛рдордЧреНрд░реА "user=MyUsername" рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ "_user=administrator_" рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ paduster
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ -plaintext рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
рдпрджрд┐ рд╕рд╛рдЗрдЯ рдХрдордЬреЛрд░ рд╣реИ padbuster
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдХрд┐ рдкреИрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХрдм рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк -error рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рднреА рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
рд╕рд┐рджреНрдзрд╛рдВрдд
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдк рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рдкреИрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рд╣реА рдорд╛рдиреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдХрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, рдкреИрдбрд┐рдВрдЧ рдСрд░реЗрдХрд▓ рдЕрдЯреИрдХ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рд╕рд╣реА рдорд╛рди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реБрдП рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ рдЬреЛ 1, 2, 3, рдЖрджрд┐ рдХреА рдкреИрдбрд┐рдВрдЧ рдмрдирд╛рддрд╛ рд╣реИред
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреЗрдХреНрд╕реНрдЯ рд╣реИ рдЬреЛ 2 рдмреНрд▓реЙрдХреНрд╕ рдореЗрдВ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИ рдЬреЛ E0 рд╕реЗ E15 рддрдХ рдХреЗ рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдмрдирд╛ рд╣реИред
рдЕрдВрддрд┐рдо рдмреНрд▓реЙрдХ (E8 рд╕реЗ E15) рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░рд╛ рдмреНрд▓реЙрдХ "рдмреНрд▓реЙрдХ рд╕рд┐рдлрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдордзреНрдпрд╡рд░реНрддреА рдмрд╛рдЗрдЯреНрд╕ I0 рд╕реЗ I15 рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдордзреНрдпрд╡рд░реНрддреА рдмрд╛рдЗрдЯ рдХреЛ рдкрд┐рдЫрд▓реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдмрд╛рдЗрдЯреНрд╕ (E0 рд╕реЗ E7) рдХреЗ рд╕рд╛рде XORed рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ:
C15 = D(E15) ^ E7 = I15 ^ E7
C14 = I14 ^ E6
C13 = I13 ^ E5
C12 = I12 ^ E4
- ...
рдЕрдм, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдк E7
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдЬрдм рддрдХ C15
0x01
рди рд╣реЛ, рдЬреЛ рдПрдХ рд╕рд╣реА рдкреИрдбрд┐рдВрдЧ рднреА рд╣реЛрдЧреАред рддреЛ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ: \x01 = I15 ^ E'7
рддреЛ, E'7 рдХреЛ рдЦреЛрдЬрдХрд░, I15 рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ: I15 = 0x01 ^ E'7
рдЬреЛ рд╣рдореЗрдВ C15 рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7
C15 рдХреЛ рдЬрд╛рдирдХрд░, рдЕрдм C14 рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдкреИрдбрд┐рдВрдЧ \x02\x02
рдХреЛ рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рдХрд░рддреЗ рд╣реБрдПред
рдпрд╣ BF рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдЯрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ E''15
рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдорд╛рди 0x02 рд╣реИ: E''7 = \x02 ^ I15
рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ E'14
рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ C14
рдХреЛ 0x02
рдХреЗ рдмрд░рд╛рдмрд░ рдмрдирд╛рддрд╛ рд╣реИред
рдлрд┐рд░, C14 рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рдХрджрдо рдЙрдард╛рдПрдВ: C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6
рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЬрдм рддрдХ рдЖрдк рдкреВрд░реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рди рдХрд░ рд▓реЗрдВред
рднреЗрджреНрдпрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛
рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕ рдЦрд╛рддреЗ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдк рдХрдИ рдмрд╛рд░ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдХреБрдХреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реИред рдХреБрдХреА рд╣рд░ рдмрд╛рд░ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╕рдордп рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреБрдХреА рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реА рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╣рдореЗрд╢рд╛ рдорд╛рдиреНрдп рд╣реЛрдЧреА рдФрд░ рдЗрд╕реЗ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЕрдм, рдпрджрд┐ рдЖрдк рдХреБрдХреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдкреИрдбрд┐рдВрдЧ рдХреЛ BF рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП padbuster рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП) рддреЛ рдЖрдк рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдХреБрдХреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп padbuster рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред
рд╕рдВрджрд░реНрдн
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
- рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдБ рдЬрд╛рдВрдЪреЗрдВ!
- ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ Twitter рдкрд░ рд╣рдореЗрдВ рдлреЙрд▓реЛ рдХрд░реЗрдВ ЁЯРж @hacktricks_live.**
- рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░ HackTricks рдФрд░ HackTricks Cloud рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ PR рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред