Unicode Injection

Reading time: 3 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Introduction

Arka uç/ön uç nasıl davranıyorsa, bir saldırgan garip unicode karakterleri aldığında korumaları atlayabilir ve rastgele karakterler enjekte edebilir. Bu, XSS veya SQLi gibi enjeksiyon zafiyetlerini kötüye kullanmak için kullanılabilir.

Unicode Normalization

Unicode normalizasyonu, unicode karakterlerinin ascii karakterlerine normalleştirildiği durumlarda gerçekleşir.

Bu tür bir zafiyetin yaygın bir senaryosu, sistemin kullanıcının girişini kontrol ettikten sonra bir şekilde değiştirmesi durumunda ortaya çıkar. Örneğin, bazı dillerde girişi büyük veya küçük harfe dönüştürmek için basit bir çağrı, verilen girişi normalleştirebilir ve unicode ASCII'ye dönüştürülecek yeni karakterler üretebilir.
Daha fazla bilgi için kontrol edin:

Unicode Normalization

\u to %

Unicode karakterleri genellikle \u ön eki ile temsil edilir. Örneğin, karakteri \u3c4bdir (buradan kontrol edin). Eğer bir arka uç \u ön ekini %'ye dönüştürürse, ortaya çıkan dize %3c4b olacaktır, bu da URL çözüldüğünde: <4b olur. Ve, görebileceğiniz gibi, bir < karakteri enjekte edilmiştir.
Eğer arka uç zayıfsa, bu tekniği herhangi bir tür karakteri enjekte etmek için kullanabilirsiniz.
Gerekli karakterleri bulmak için https://unicode-explorer.com/ adresini kontrol edin.

Bu zafiyet aslında bir araştırmacının bulduğu bir zafiyetten gelmektedir, daha derin bir açıklama için https://www.youtube.com/watch?v=aUsAHb0E7Cg adresine bakın.

Emoji Injection

Arka uçlar, emoji aldıklarında tuhaf bir şekilde davranır. Bu, araştırmacının 💋img src=x onerror=alert(document.domain)//💛 gibi bir yükle XSS elde etmeyi başardığı bu yazıda olan durumdur.

Bu durumda, hata, sunucunun kötü niyetli karakterleri kaldırdıktan sonra UTF-8 dizesini Windows-1252'den UTF-8'e dönüştürmesiydi (temelde giriş kodlaması ve kodlamadan dönüştürme uyuşmazlığı). Bu, düzgün bir < vermez, sadece tuhaf bir unicode verir:
``Bu çıktıyı aldılar ve şimdi UTF-8'den ASCII'ye tekrar dönüştürdüler. Bu, 'yi `<'ye normalleştirdi, bu da bu sistemdeki istismarın nasıl çalışabileceğidir.
İşte olanlar:

php
<?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;

Emoji listeleri:

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin