Kodlardaki Zafiyeti Bul! #2

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

'Herodot

Asistan Moderatör
30 Eyl 2017
423
275
Kuvâ-yi Milliye
Merhaba Türk Hack Team Ailesi;

Yeteneklerinizi test etme fırsatı sunacak yeni bir etkinlik ile karşınızdayım.


Aşağıda görselini paylaştığım kod bloğunda potansiyel bir zafiyet var, peki bu zafiyet tam olarak
nerede ?




Alıntı - İNTİGRİTİ

Not - Zafiyeti bulduğunuzda açıklayıcı bir şekilde sebep ve sonuç olarak yazmanızı rica ediyorum.

Hepinize başarılar dilerim

Saygılarımla,

['Herodot]
 

Safak-Bey

Uzman üye
9 Ara 2021
1,795
1,988
Gereken Yerde
Get metodu ile alınan 'search_string' adındaki parametre preg_replace fonksiyonu ile kullanıcının girdiği değer filitrelenmeye çalışılmış. Aşağıda preg_replace fonksiyonunun çalışma mantığı mevcut:

$search_query = preg_replace('/(javascript|svg|iframe|img|onerror)/', ' ', $search_query); ---> Burada yapılmak istenin $search_query değişkenindeki değer de (yani kullanıcının aradığı kelime) javascript, svg, iframe, img, onerror kelimelerini algılarsan bunları ' ' yani boşluk ile değiştirerek yeni değeri $search_query değişkenine ver. Aynı şekilde tekrar bu mantık kullanılarak özel karakterler filitrelenmiş. Böylelikle eğer kullanıcı <script>alert(123);</script> şeklinde basit bir xss paylodı kullanırsa preg_replace fonksiyonu script kelimesini algılayarak boşluk ile değiştirecektir ve payload çalışmayacaktır.

Fakat kaçırılan nokta javascript, svg, iframe, img, onerror kelimeleri olmadan da xss paylodı çalıştırılabilir. Çözüm ise preg_replace() veya preg_match() gibi fonksiyonları kullanmak yerine -çünkü bu fonksiyonlarda yasaklı kelimeleri kendimiz seçtiğimiz için payloadlarda kullanılan kelimeleri eksik yazabiliriz ve sürekli yeni çıkan payloadları incelemek gerekir.- htmlspecialchars(), htmlentities() gibi fonksiyonları kullanmaktır.

Oldukça güzel ve geliştirici bir konu eline sağlık :)
 

ACE Veen

Uzman üye
4 Şub 2023
1,111
563
Belirsiz
Merhaba Türk Hack Team Ailesi;

Yeteneklerinizi test etme fırsatı sunacak yeni bir etkinlik ile karşınızdayım.


Aşağıda görselini paylaştığım kod bloğunda potansiyel bir zafiyet var, peki bu zafiyet tam olarak
nerede ?




Alıntı - İNTİGRİTİ

Not - Zafiyeti bulduğunuzda açıklayıcı bir şekilde sebep ve sonuç olarak yazmanızı rica ediyorum.

Hepinize başarılar dilerim

Saygılarımla,

['Herodot]
filtreleme işlemleri yetersiz olduğu için bypass edilip xss açığı sömürülebilir
 

yosabe06

Üye
19 Ağu 2016
73
33
Güvenlik için PHP en son tercih edilecek dil zaten.
bunun yerin node js, rust,ruby veya python kullanılabilirsin.
 

xezua

Katılımcı Üye
4 Tem 2023
338
97
Misconfiguration
Merhaba Türk Hack Team Ailesi;

Yeteneklerinizi test etme fırsatı sunacak yeni bir etkinlik ile karşınızdayım.


Aşağıda görselini paylaştığım kod bloğunda potansiyel bir zafiyet var, peki bu zafiyet tam olarak
nerede ?




Alıntı - İNTİGRİTİ

Not - Zafiyeti bulduğunuzda açıklayıcı bir şekilde sebep ve sonuç olarak yazmanızı rica ediyorum.

Hepinize başarılar dilerim

Saygılarımla,

['Herodot]

Xss zaafiyeti vardır search_query değişkeni doğrudan HTML içine yazdırılıyor, bu yüzden kullanıcıların gönderdiği değerler potansiyel olarak kötü amaçlı betikler içerebilir. Örneğin, bir kullanıcı search_string parametresine <script>alert('XSS attack!');</script> gibi bir değer gönderirse bu kod tarayıcıda çalışabilir ve saldırganın istediği işlemleri gerçekleştirebilir.

Diğer olarak preg_replace işlevi, kötü amaçlı kodların çalışmasını engellemek için bazı özel karakterleri kaldırmak için kullanılmış gibi görünüyor ancaak ama ancak bu yaklaşım eksik kalabilir ve bazı saldırı vektörlerini filtrelemez. Örneğin bu kod SQL enjeksiyonu için yeterli koruma sağlamayabilir😁

Kod kullanıcı girişlerini doğrulamak veya filtrelemek için
Fazlasıyla yetersiz evet sadece basit yazılmış fakat🥺 Kullanıcıların girdileri doğrudan işleniyor ve bu kötü amaçlı kullanım için bir fırsat sunuyor

Alttaki kod biraz daha iyileştirilmiştir eline sağlık konu için.

PHP:
<?php

$search_query = isset($_GET['search_string']) ? $_GET['search_string'] : '';

$search_query = htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8');

$search_query = preg_replace('/\b(script|svg|iframe|img|onerror)\b/i', '', $search_query);

$search_query = preg_replace('/\(\s*1\s*\)`/', '', $search_query);

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Search Catalogue</title>
</head>
<body>
<p>Search query: "<?php echo $search_query ?>"</p>
</body>
</html>
 

'Box-Boy

Üye
18 Ağu 2007
140
193

yosabe06

Üye
19 Ağu 2016
73
33
sen orada ki her harfi büyük küçük hepsini kafanda nasıl tuttucan. orada önemli olan nereden buldugu değil buldugu şey dogrumu ?
echo "onload='alert();'" de yazabilirdi :) bu çalma huyu bu forumda çok var hava atacaksınız ya illa githubdan veya diğer forumlardan konuları alıp geliyorsunuz...
 

Lihtg

Moderatör
15 Mar 2022
1,905
812
lihtgTHT.php
Get metodu ile alınan 'search_string' adındaki parametre preg_replace fonksiyonu ile kullanıcının girdiği değer filitrelenmeye çalışılmış. Aşağıda preg_replace fonksiyonunun çalışma mantığı mevcut:

$search_query = preg_replace('/(javascript|svg|iframe|img|onerror)/', ' ', $search_query); ---> Burada yapılmak istenin $search_query değişkenindeki değer de (yani kullanıcının aradığı kelime) javascript, svg, iframe, img, onerror kelimelerini algılarsan bunları ' ' yani boşluk ile değiştirerek yeni değeri $search_query değişkenine ver. Aynı şekilde tekrar bu mantık kullanılarak özel karakterler filitrelenmiş. Böylelikle eğer kullanıcı <script>alert(123);</script> şeklinde basit bir xss paylodı kullanırsa preg_replace fonksiyonu script kelimesini algılayarak boşluk ile değiştirecektir ve payload çalışmayacaktır.

Fakat kaçırılan nokta javascript, svg, iframe, img, onerror kelimeleri olmadan da xss paylodı çalıştırılabilir. Çözüm ise preg_replace() veya preg_match() gibi fonksiyonları kullanmak yerine -çünkü bu fonksiyonlarda yasaklı kelimeleri kendimiz seçtiğimiz için payloadlarda kullanılan kelimeleri eksik yazabiliriz ve sürekli yeni çıkan payloadları incelemek gerekir.- htmlspecialchars(), htmlentities() gibi fonksiyonları kullanmaktır.

Oldukça güzel ve geliştirici bir konu eline sağlık :)
Teşekkürler güzel cevap için, konunun doğru cevabı bu. Diğer cevap atan arkadaşlara da emekleri için teşekkürler. Önümüzdeki günlerde serinin devamı gelecektir.

İlgili sorunun doğru cevabı verildiği ve konu tartışmaya kaymaya başladığı için tarafımca konu sahibi isteği üzerine kilit getirildi.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.