6.3 KiB
Injeção de Unicode
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
-
Descubra A Família PEASS, nossa coleção exclusiva de NFTs
-
Adquira o swag oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Introdução
Dependendo de como o back-end/front-end está se comportando quando recebe caracteres Unicode estranhos, um invasor pode ser capaz de burlar proteções e injetar caracteres arbitrários que poderiam ser usados para explorar vulnerabilidades de injeção como XSS ou SQLi.
Normalização Unicode
A normalização Unicode ocorre quando os caracteres Unicode são normalizados para caracteres ASCII.
Um cenário comum desse tipo de vulnerabilidade ocorre quando o sistema está modificando de alguma forma a entrada do usuário depois de tê-la verificado. Por exemplo, em alguns idiomas, uma simples chamada para tornar a entrada maiúscula ou minúscula pode normalizar a entrada fornecida e o Unicode será transformado em ASCII gerando novos caracteres.
Para mais informações, consulte:
{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}
\u
para %
Os caracteres Unicode são geralmente representados com o prefixo \u
. Por exemplo, o caractere 㱋
é \u3c4b
(verifique aqui). Se um back-end transforma o prefixo \u
em %
, a string resultante será %3c4b
, que decodificada por URL é: <4b
. E, como você pode ver, um caractere <
é injetado.
Você pode usar essa técnica para injetar qualquer tipo de caractere se o back-end for vulnerável.
Verifique https://unicode-explorer.com/ para encontrar os caracteres de que você precisa.
Essa vulnerabilidade na verdade vem de uma vulnerabilidade que um pesquisador encontrou, para uma explicação mais detalhada, verifique https://www.youtube.com/watch?v=aUsAHb0E7Cg
Injeção de Emoji
Os back-ends às vezes se comportam de maneira estranha quando recebem emojis. Foi o que aconteceu neste writeup onde o pesquisador conseguiu alcançar um XSS com um payload como: 💋img src=x onerror=alert(document.domain)//💛
Neste caso, o erro foi que o servidor, após remover os caracteres maliciosos, converteu a string UTF-8 de Windows-1252 para UTF-8 (basicamente a codificação de entrada e a conversão de codificação não correspondiam). Então, isso não dá um < apropriado, apenas um Unicode estranho: ‹
``Então eles pegaram essa saída e converteram novamente agora de UTF-8 para ASCII. Isso normalizou o ‹
para <
e é assim que o exploit poderia funcionar nesse sistema.
Isso é o que aconteceu:
<?php
$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";
$str = iconv("Windows-1252", "UTF-8", $str);
$str = iconv("UTF-8", "ASCII//TRANSLIT", $str);
echo "String: " . $str;
Listas de emojis:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
-
Descubra A Família PEASS, nossa coleção exclusiva de NFTs
-
Adquira o swag oficial do PEASS & HackTricks
-
Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
-
Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.