51 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Unicode Injection
{{#include ../../banners/hacktricks-training.md}}
## 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 girdiğini** **kontrol ettikten sonra** bir şekilde **değiştirmesi** durumunda ortaya çıkar. Örneğin, bazı dillerde **girdiyi büyük veya küçük harfe dönüştürmek** için yapılan 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:
{{#ref}}
unicode-normalization.md
{{#endref}}
## `\u` to `%`
Unicode karakterleri genellikle **`\u` ön eki** ile temsil edilir. Örneğin, `㱋` karakteri `\u3c4b`dir ([buradan kontrol edin](https://unicode-explorer.com/c/3c4B)). 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/](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](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**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) 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 girdi kodlaması ve kodlamadan dönüştürme uyuşmazlığı). Bu, düzgün bir < vermez, sadece garip bir unicode verir: ``\
``Bu çıktıyı alıp **şimdi UTF-8'den ASCII'ye 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:
- [https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv)
- [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
{{#include ../../banners/hacktricks-training.md}}