Security Assertion Markup Language (SAML) is an XML-based standard commonly used in Web Single Sign-On (SSO) [1]. In SAML, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 confidentiality of transferred aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication statements against intermediaries can be provided using XML Encryption [2]. However, implementing XML Encryption in a secure way can be tricky and several attacks on XML Encryption have been identified in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past [3] [4]. Therefore, when auditing a SAML endpoint, one should always consider testing for vulnerabilities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML Encryption implementation.
This blog post introduces our latest addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML Attacker of our BurpSuite extension EsPReSSO: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encryption Attack tab. The new tab allows for easy manipulation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted parts within intercepted SAML responses and can, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365refore, be used to quickly assess whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML endpoint is vulnerable against certain XML Encryption attacks.
[...]
[...]
Once a SAML response which contains an EncryptedAssertion has been intercepted, open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML tab, select cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Attacks pane, and choose Encryption from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dropdown menu. This works in Burp's Proxy, as well as in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Repeater tool, and is depicted below.
The payload in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text area labeled XML data can now be entered. Any update in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML data field will also be reflected in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hexadecimal representation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 payload (found on right of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML data field). Note that this is automatically padded to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blocklength required by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric algorithm selected below. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 payload and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding can be manually adjusted in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hex editor field.
Eventually, click cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encrypt content button to generate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted payload. This will apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 changes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 manipulated message using Burp's Forward or Go button can now be forwarded, as usual.
To determine whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r or not a SAML endpoint is vulnerable to Bleichenbacher's Attack, we simply need to check if we can distinguish those responses received when submitting ciphertexts that are decrypted into invalidly formatted PKCS1 v1.5 plaintexts, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responses we receive when sending ciphertexts that are decrypted into validly formatted plaintexts.
Recall that PKCS1 v1.5 mandates a certain format of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted plaintext, namely a concatenation of a BlockType 00 02, a randomized PaddingString (PS) that includes no 00 bytes, a 00 (NULL-byte) as delimiter, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual plaintext message. The whole sequence should be equal in size to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 modulus of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA key used. That is, given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 byte length k of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA modulus and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message length |m|, PS has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 length |PS| = k - 3 - |m|. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, PKCS1 v1.5 demands that |PS| to be at least eight bytes long [5].
In SAML, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recipient's public key is usually known because it is published in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 metadata, or even included in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptedAssertion. For this reason, we do not need to fiddle around with manipulated ciphertexts. Instead, we simply submit a validly formatted RSA-PKCS1 v1.5 encrypted message and an encrypted message which deciphers into an invalidly formatted plaintext. As an example, assume an RSA public key of 2048 bits which we want to use to encrypt a 16 byte session key `01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10` (hexadecimal representation). |PS|$ is $2048/8 - 3 - 16 = 237, so a valid PKCS1 v1.5 plaintext, ready to be encrypted using `AA` for all 237 padding bytes, could look like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 listing shown below.
00 02 AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 00
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
Next, repeat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 steps outlined above, but this time submit an invalid PKCS1 v1.5 message. For example, consider using an invalid BlockType of `12 34` instead of `00 02`, or replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 `00` delimiter so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor is unable to determine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual message after decrypting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext. If you are able to determine from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recieved responses whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r or not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 submitted ciphertext decrypted into a valid PKCS1 v1.5 formatted plaintext, chances are high that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor can be used as a Bleichenbacher oracle. Don't forget to take into account cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual XML data, i.e., cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 assertion encrypted with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new session key; by submitting valid or invalid XML, or by removing signatures from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML message or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 assertion you may increase your chances of detecting differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 returned responses.
In order to determine if a particular SAML service provider is vulnerable to this attack, we can avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cumbersome ciphertext manipulation, if we are in possession of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor's public key:
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encryption Attacker tab of EsPReSSO, add cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key certificate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Certificate field (if necessary) and insert a symmetric key of your own devising into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Symmetric Key text field. Select an appropriate RSA encryption method and click cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encrypt button to apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new EncryptedKey element to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original SAML message.
An XML message can now be inserted into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML data text field. Select a CBC mode encryption algorithm and click Encrypt to apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 changes. As in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 example above, press Burp's Go or Forward button to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message and carefully inspect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response. Try sending invalid XML, e.g., by not closing a tag or using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 `&` character without a valid entity and keep an eye open for differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 returned responses. To manipulate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text field on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right side shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hexadecimal representation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plaintext, including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CBC padding. If you send a single block and set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last byte, which indicates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding length to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blocksize, i.e. 16 or 0x10 for AES, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext should decrypt into an empty string and is generally considered "valid" XML.
Please refer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original paper for more details, tips, and tricks for performing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual attack [3].
In case you wonder how XML Encryption can be used in a secure fashion, here are some considerations [6]:
This blog post introduces our latest addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML Attacker of our BurpSuite extension EsPReSSO: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encryption Attack tab. The new tab allows for easy manipulation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted parts within intercepted SAML responses and can, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365refore, be used to quickly assess whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML endpoint is vulnerable against certain XML Encryption attacks.
Weaknesses of XML Encryption
Implementations of XML Encryption can be vulnerable to adaptive chosen ciphertext attacks. This is a class of attacks in which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker sends a sequence of manipulated ciphertexts to a decryption oracle as a way to gain information about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plaintext content.
Falsely implemented XML Encryption can be broken using:
- an attack against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CBC-mode decryption (quite similar to a padding oracle attack) [3] or
- a Bleichenbacher attack against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA-PKCS#1 encryption of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 session key [4].
SAML makes use of XML Encryption and its implementations could, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365refore, also be vulnerable to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se attacks.
XML Encryption in SAML
To support confidential transmission of sensitive data within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML Assertion, assertions can be encrypted using XML Encryption. An EncryptedAssertion is shown in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 abridged example below.
[...]
[...]
The EncryptedAssertion contains an EncryptedData element, which in turn is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parent of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptionMethod, KeyInfo, and CipherData elements. SAML makes use of what is referred to as a hybrid encryption scheme. This is done using a session key which symmetrically encrypts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 payload data (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 example uses AES-128 in CBC mode), resulting in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext contained in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptedAssertion/EncryptedData/CipherData/CipherValue child element. The session key itself is encrypted using an asymmetric encryption scheme. In our example, RSA-PKCS#1.5 encryption is used with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recipient, allowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptedKey child element to be derived from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 KeyInfo element.
Encryption Attacker
Our BurpSuite extension EsPReSSO can help detect vulnerable implementations with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newly integrated Encryption Attacker within EsPReSSO's SAML module.
Once a SAML response which contains an EncryptedAssertion has been intercepted, open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML tab, select cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Attacks pane, and choose Encryption from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dropdown menu. This works in Burp's Proxy, as well as in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Repeater tool, and is depicted below.
As sketched out above, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric session key is encrypted using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recipient's public key. Since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key is public, anybody can use it to encrypt a selected symmetric key and submit a valid encryption of arbitrary messages to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recipient. This is incredibly helpful because it allows us to produce ciphertexts that decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chosen plaintexts. To accomplish this, one can purposefully send invalidly padded messages, or messages containing invalid XML, as a method to trigger and analyze cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 different reactions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption endpoint (i.e, turning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 endpoint into a decryption oracle). To facilitate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se investigations, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new Encryption Attacker makes this process dead simple.
The screenshot above shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 essential interface of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new encryption tab:
At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 top, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate used to encrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric session key can be pasted into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text field. This field will be pre-filled automatically if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message includes a certificate in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 KeyInfo child element of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptedData element. The Update Certificate checkboxes above cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text area can be used to include cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 manipulated SAML message.
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Symmetric Key text field, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hexadecimal value of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric session key can be set. Choose cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 asymmetric algorithm from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dropdown menu and click Encrypt key -- this will update cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding KeyInfo elements of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message.
At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 top, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate used to encrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric session key can be pasted into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text field. This field will be pre-filled automatically if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message includes a certificate in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 KeyInfo child element of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptedData element. The Update Certificate checkboxes above cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text area can be used to include cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certificate in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 manipulated SAML message.
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Symmetric Key text field, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hexadecimal value of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric session key can be set. Choose cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 asymmetric algorithm from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dropdown menu and click Encrypt key -- this will update cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding KeyInfo elements of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message.
The payload in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text area labeled XML data can now be entered. Any update in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML data field will also be reflected in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hexadecimal representation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 payload (found on right of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML data field). Note that this is automatically padded to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blocklength required by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 symmetric algorithm selected below. However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 payload and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding can be manually adjusted in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hex editor field.
Eventually, click cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encrypt content button to generate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted payload. This will apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 changes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 manipulated message using Burp's Forward or Go button can now be forwarded, as usual.
Probing for Bleichenbacher Oracles
Bleichenbacher's attack against RSA-PKCS1 v1.5 encryption abuses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malleability of RSA to draw conclusions about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plaintext by multiplying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext with adaptively chosen values, and observing differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 received responses. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (error-) responses differ for valid and invalid PKCS1 v1.5 ciphertexts, Bleichenbachers' algorithm can be used to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext without knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private key [6].
To determine whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r or not a SAML endpoint is vulnerable to Bleichenbacher's Attack, we simply need to check if we can distinguish those responses received when submitting ciphertexts that are decrypted into invalidly formatted PKCS1 v1.5 plaintexts, from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responses we receive when sending ciphertexts that are decrypted into validly formatted plaintexts.
Recall that PKCS1 v1.5 mandates a certain format of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted plaintext, namely a concatenation of a BlockType 00 02, a randomized PaddingString (PS) that includes no 00 bytes, a 00 (NULL-byte) as delimiter, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual plaintext message. The whole sequence should be equal in size to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 modulus of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA key used. That is, given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 byte length k of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA modulus and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message length |m|, PS has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 length |PS| = k - 3 - |m|. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, PKCS1 v1.5 demands that |PS| to be at least eight bytes long [5].
In SAML, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recipient's public key is usually known because it is published in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 metadata, or even included in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EncryptedAssertion. For this reason, we do not need to fiddle around with manipulated ciphertexts. Instead, we simply submit a validly formatted RSA-PKCS1 v1.5 encrypted message and an encrypted message which deciphers into an invalidly formatted plaintext. As an example, assume an RSA public key of 2048 bits which we want to use to encrypt a 16 byte session key `01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10` (hexadecimal representation). |PS|$ is $2048/8 - 3 - 16 = 237, so a valid PKCS1 v1.5 plaintext, ready to be encrypted using `AA` for all 237 padding bytes, could look like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 listing shown below.
00 02 AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 00
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encryption attack pane of EsPReSSO, ensure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct public key certificate has been added to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Certificate field. Insert a valid plaintext, such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one above, into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Symmetric Key field and select Plain RSA encryption from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Algorithm drop down menu. Click cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encrypt button to compute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RSA transformation and apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new EncryptedKey element to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 intercepted SAML message. Now, submit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message by clicking Burp's Go or Forward button and carefully inspect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response.
Next, repeat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 steps outlined above, but this time submit an invalid PKCS1 v1.5 message. For example, consider using an invalid BlockType of `12 34` instead of `00 02`, or replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 `00` delimiter so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor is unable to determine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual message after decrypting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext. If you are able to determine from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recieved responses whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r or not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 submitted ciphertext decrypted into a valid PKCS1 v1.5 formatted plaintext, chances are high that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor can be used as a Bleichenbacher oracle. Don't forget to take into account cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual XML data, i.e., cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 assertion encrypted with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new session key; by submitting valid or invalid XML, or by removing signatures from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML message or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 assertion you may increase your chances of detecting differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 returned responses.
Probing for Oracles in CBC-Mode Decryption
Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r known attack on XML Encryption is aimed at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Cipher Block Chaining (CBC) mode, which can be used with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 block ciphers AES or 3DES [2]. The attack is described in detail in this referenced paper [3] and is quite similar to Padding-Oracle attacks on CBC mode; cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malleability of CBC mode encryption enables cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker to perform a bytewise, adaptive manipulation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext blocks which are subsequently sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor. In most cases, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 manipulated ciphertext will not decrypt to valid XML and an error will be returned. Sometimes, however, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plaintext will be parsed as valid XML, in which cases an error is thrown later on at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application layer. The attacker observes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responses in order to turn cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor into a ciphertext validity oracle which can be used to break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encryption. Due to some particularities of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML format, this attack can be very efficient, enabling decryption with about 14 requests per byte, and it is even possible to fully automate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process [7].
In order to determine if a particular SAML service provider is vulnerable to this attack, we can avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cumbersome ciphertext manipulation, if we are in possession of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor's public key:
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encryption Attacker tab of EsPReSSO, add cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key certificate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Certificate field (if necessary) and insert a symmetric key of your own devising into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Symmetric Key text field. Select an appropriate RSA encryption method and click cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Encrypt button to apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new EncryptedKey element to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original SAML message.
An XML message can now be inserted into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML data text field. Select a CBC mode encryption algorithm and click Encrypt to apply cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 changes. As in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 example above, press Burp's Go or Forward button to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message and carefully inspect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response. Try sending invalid XML, e.g., by not closing a tag or using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 `&` character without a valid entity and keep an eye open for differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 returned responses. To manipulate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 text field on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right side shows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hexadecimal representation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plaintext, including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CBC padding. If you send a single block and set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last byte, which indicates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 padding length to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blocksize, i.e. 16 or 0x10 for AES, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ciphertext should decrypt into an empty string and is generally considered "valid" XML.
Please refer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original paper for more details, tips, and tricks for performing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual attack [3].
Summary
The new XML Encryption attacker included in EsPReSSO can help security auditors to quickly assess if a SAML endpoint is vulnerable to known attacks against XML Encryption. To this end, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryptor's public key is used in order to send suitable test vectors that can be provided in plaintext. Ciphertext manipulation is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365refore, not required. The actual process of decrypting an intercepted SAML message is, however, considered out of scope and not implemented in EsPReSSO.
In case you wonder how XML Encryption can be used in a secure fashion, here are some considerations [6]:
- Always use an aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated encryption mode such as AES-GCM instead of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CBC-mode encryption.
- Using RSA-PKCS1 v1.5 within XML Encryption is particularly difficult to do in a secure manner, and it is recommended to use RSA with Optimal Asymmetric Encryption Padding (OAEP) instead [2].
- Apply a digital signature over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole SAML response, and ensure it is properly validated before attempting to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 assertion. This should thwart cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack as a manipulated response can be recognized as such and should be rejected.
----------
[1] https://www.oasis-open.org/standards#samlv2.0
[2] https://www.w3.org/TR/xmlenc-core/
[3] https://www.nds.ruhr-uni-bochum.de/research/publications/breaking-XML-Encryption/
[4] https://www.nds.ruhr-uni-bochum.de/research/publications/breaking-XML-Encryption-pkcs15/
[5] https://link.springer.com/chapter/10.1007%2FBFb0055716
[6] http://www.w3.org/2008/xmlsec/papers/xmlEncCountermeasuresW3C.pdf
[7] https://web-in-security.blogspot.com/2015/05/how-to-attack-xml-encryption-in-ibm.html
[2] https://www.w3.org/TR/xmlenc-core/
[3] https://www.nds.ruhr-uni-bochum.de/research/publications/breaking-XML-Encryption/
[4] https://www.nds.ruhr-uni-bochum.de/research/publications/breaking-XML-Encryption-pkcs15/
[5] https://link.springer.com/chapter/10.1007%2FBFb0055716
[6] http://www.w3.org/2008/xmlsec/papers/xmlEncCountermeasuresW3C.pdf
[7] https://web-in-security.blogspot.com/2015/05/how-to-attack-xml-encryption-in-ibm.html