Soru-Cevap

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
0x56559020 pust got adresi bir de diğer önceki resimde de gözüktüğü gibi 0x56559021 var hemen altındaki satır. Bakın şimdi 0x56559020 adresine integer yazdırmaya çalışıyorum.

f0c75d0f0dbc7bc6e341641ed79f11d8a5d38bd6.png


Fakat yazmıyor… Görüldüğü gibi… Şimdi de onun bir alt satırında olan adrese aynı şekil yazdırmaya çalışıyorum.

ccf167a6e2ddeff748e87322978003847bcdec32.png


Görüldüğü gibi yazmış.

Adresin kendisi 4byte bir de - “tire” işareti var. Haliyle 5 bytelık bir veri uzunluğu söz konusu. Bilmeyenler için.

Neden yazmadı çünkü sonu 0 ile bitiyor. Sonu 0 ile bitince ne yapmak gerek ??
 
Moderatör tarafında düzenlendi:

ozanpy

Üye
.net asp ile yazılan sitelerde rce rfı gibi açıkların mantığı nasıl işler. Bir de xss aradığım bir sitede <> işaretleri tersine döndürülerek güvenlik sağlanıyor veya ’ " işaretleri silinerek vs… Bunları nasıl bypass edebilirim var mı sağlam döküman
 
Son düzenleme:

sef

0xffffffxxxxxx
0x56559020 pust got adresi bir de diğer önceki resimde de gözüktüğü gibi 0x56559021 var hemen altındaki satır. Bakın şimdi 0x56559020 adresine integer yazdırmaya çalışıyorum.

f0c75d0f0dbc7bc6e341641ed79f11d8a5d38bd6.png


Fakat yazmıyor… Görüldüğü gibi… Şimdi de onun bir alt satırında olan adrese aynı şekil yazdırmaya çalışıyorum.
index-of.es/ şu pdf daha detaylı anlamana yardımcı olacaktır mevzuları, her halükarda @nethunt3r zaten gerekli açıklamayı yapmış hem sorunun detayı hem cevabın sadeliği gayet ilgi çekici olmuş ellerinize sağlık.
.net asp ile yazılan sitelerde shell upload mantığı nasık işler. Bir de xss aradığım bir sitede <> işaretleri tersine döndürülerek güvenlik sağlanıyor veya ’ " işaretleri silinerek vs… Bunları nasıl bypass edebilirim var mı sağlam döküman
Merhabalar, bildiğim kadarıyla brutelogic denen bir eleman var bu XSS işleriyle pek bir haşır neşir onu takip edebilirsin ama olayları hazır payload mantığı ile değilde biraz daha yazılım kafasıyla düşünmekte fayda var diye düşünüyorum ama sana bir fikir olması açısından şöyle bir mevzu önerebilirim; waf(web application firewall) bulunan serverlarda burp suite intruder ile html tag denemesi yapabilirsin bu sayede neye kızdığını ya da neye yumuşak davrandığını anlayarak payload üretebilirsin ```\<input xxx=alert()>\\ gibi yani input kizmiyorsa input bazli \<title> kizmiyorsa title bazli gibi. .NET ile yazılan yerlerde ne gibi bir upload mantığından bahsediyorsun orayı tam anlayamadım diğer arkadaşlarda sanırım bu yüzden cevap verememiş olabilirler.
 
bug bounty alanında yeniyim web güvenlik açıklarını orta derecede biliyorum ve denemelerim hep lab ortamlarda oldu ancak pratikte bulmaya gelince bulamıyorum. ve bunu geçmek için kendimi geliştirmek için için bol zafiyetli bir web application arıyorum. ne önerirsiniz?
 

Cezeri

Yönetici
bug bounty alanında yeniyim web güvenlik açıklarını orta derecede biliyorum ve denemelerim hep lab ortamlarda oldu ancak pratikte bulmaya gelince bulamıyorum. ve bunu geçmek için kendimi geliştirmek için için bol zafiyetli bir web application arıyorum. ne önerirsiniz?
Lab ortamları genellikle basit düzeyde hazırlanmış 8-10 sayfalık küçük scriptlerden oluşuyor, ondan dolayı küçük çaplı bir site analiz etmiş oluyorsun ve genellikle basit yerlerde kolay sömürülecek açıklar bırakılıyor. O nedenle lab ortamında çalışmak ile reel siteler üzerinde çalışmak aynı olmuyor.

İllegale yönlendirmek istemem ama bu işleri öğrenmenin en iyi yolu reel siteler üzerinde çalışmaktır.

Reel siteler dışında denemeler yapabileceğin ortam istersende vulnhub ve hackthebox da bulunan makineleri tavsiye edebilirim.
 
Moderatör tarafında düzenlendi:

roro

Üye
Sevgili arkadaşım, bitişi bilmeye gerek olduğunu söylemiyoruz zaten ! Sen başlangıç ve bitiş adreslerine yazamazsın diyoruz bak tutarsız konuşuyorsun çünkü ezber mantığına sahipsin.
  1. Yeni bir adres oluşturmak diye bir şey yok sen overwrite ediyorsun zaten metotun ismi GOT Overwrite sen kafana göre öyle gelişigüzel yazamazsın ya da yeni bir offset tanımlayamazsın physical ve virtual memory denen bir şey var, aslr, dep, nx önlemleri var vs. devam ediyor ayrıca sen sadece x86 üstünde işlem yapıyorsun modern sistemelerde x86 görebilmen imkan dahlinde değil ! Öğrenmek istiyorsan önce kabullenmen gerekiyor.
  2. gdb’da manual set etmek dediğin şey ile @nethunt3r sana bahsettiği mevzu arasında bir bağlantı kuramadım ezber mantıkla ilerleme lütfen, orada manual olarak bp atarsın sonra next instruction ile offsetleri kontrol edersin set ile register ya da offset seçersin anlayacağınız gibi söyleyim karakter tanımlarsın ama ben gittim direkt şu offset set ediyorum dersen ezber yapmış olursun önce offset kontrol etmek gerek anlaman gerek bunun için breakpoint gibi fonksiyonlarla çalışman şart. Ek olarak gidip offset’in başına yazamazsın eğer böyle yaparsan binary’nin dinamik bağlantısını bozarsın ! Terimler ile yapacakların arasında tutarsızlık var ve burada herkes bunları düzeltmek için bulunuyor lütfen alınma ya da gücenme.
Benim sana naçizane tavsiyem, Understanding the Linux Kernel (D. P. Bovet, M. Cesati) adlı kitabı okuman iyi çalışmalar.
 
Son düzenleme:
Niye bu kadar kızdınız anlamadım, biraz sakin olalım. Madem adresin başlangıcına yazdığım için problem oluyor, attığım blog yazısında nereye yazıyorum bakabilir misiniz ? Yine başlangıca yazıyorum aslında… Başlangıç adresine integer bir değer neden yazamayayım anlamış değilim. Debuggerda da herhangi bir adrese (var olan) integer değer set edebiliyorsunuz. manual setten kastım oydu.

set {int}0x56559020 = 5

Modern sistemlerde x86 görülmez demişsiniz, evet doğru fakat x86 ile x64 arasında ahım şahım bir fark yok. Yani 8 byte adres yerine 4 byte adres görmeyi tercih ettim aslında niye 64 bitten yargıladıysanız beni.

Başlangıca yazamazsın olayını hala anlamış değilim aynı şeyden mi bahsediyoruz, bilmiyorum. Başlangıç adresine yazamıyoruz olayını kanıtlayabilir misiniz ? Sorun uyguladığım metottaki adresin sonu 0 ile bitiyor olma sorunu ama henüz sorunu kabul ettiremedim canınız sağolsun. Yani adres 0 ile bittiği için sanırım 8 bitlik adresi 7 bit kabul ediyor gibi tam anlamadım o kısmı. Yani sanki adresin sonu 0 ile bittiği için şey gibi oluyor >> 0123 gibi mesela bu kaç basamaklı desek 4 demeyiz, 3 deriz. Little Endian mı problem yaratıyor tam orasını çözemedim maalesef, ne desem yalan olur. Cevaplar için teşekkür ederim kaynakları okumaya çalışacağım.
 

ozanpy

Üye
Hedef sitede hiçbir şekilde id=1,2 vs gibi bir url gözükmüyor her yer klasik dizin site. com/dizin
/Kullanıcı vs vs

İd olmayınca ’ işareti koyup SQL var mı yok mu test edemiyorum. Ne yapabilirim? İd olmayan sitelerde SQL inj nasıl , nereden denenir?
@Bozkurt @Cezeri
 

Cezeri

Yönetici
alt
ozanpy:
Hedef sitede hiçbir şekilde id=1,2 vs gibi bir url gözükmüyor her yer klasik dizin site. com/dizin
/Kullanıcı vs vs

İd olmayınca ’ işareti koyup SQL var mı yok mu test edemiyorum. Ne yapabilirim? İd olmayan sitelerde SQL inj nasıl , nereden denenir?
@Bozkurt @Jonturk

  • Derinlemesine site haritası çıkarın, varsa gizli dosyaları detaylıca bulmaya çalışın.
  • GET-POST tüm istekleri gözden geçirin.
  • Gizli parametrelerin varlığını kontrol edin.
  • Search Engine Friendly (SEF) URL denemeleri yapın.
  • Database ile iletişim halinde olabilecek istekleri mantıken bulmayı deneyin.
Yukarıda yazdığım maddelerin herbiri birbirinden uzun süreçler olabilir. Fakat temel manada bunlara dikkat ederseniz sonuca ulaşabilirsiniz.
 
Son düzenleme:

ozanpy

Üye
Sorun SQL injection Hakkında.

Bir sitede login ve password kısmında ’ - + gibi karakterler yazıp enterleyinca hata veriyor örneğin username ’
Password da ’

Bi şekilde benzer şeyler yazınca bu hatayi alıyorum SQL injection olabilir mi anlayabilir miyim? Bu arada sitede id yok sadece inputa bunu yazarak error alıyorum

‘1’ yakınındaki sözdizimi yanlış.(select tarih,ceza,sekil,id,durum from ceza_tablosu where kim_cezali=’ ‘1’='1python ‘1’=‘1’ order by id desc)

Tarzı bir kod örneğin bypass vs denemistim 🙂
 

Cezeri

Yönetici
'-convert(int,@@version)-'

payloadı ile error based injection yapabilirsin.

'; if (1=1) waitfor delay '0:0:15'--+

payloadı ile time based işlem gerçekleştirebilirsin.
 
HTTP Headerlarından Content-Type özelliği ile ilgili bir şey sormak istiyorum. XSS ve File upload Injection zafiyetleri için örnek senaryolarda sorumu belirtiyim.

XSS için;

Bir web uygulamasında Stored XSS bulduk diyelim. Javascript kodu çalıştırabildiğimizden eminiz. Stored’ın tetiklendiği sayfada weblab.vvhack.org/storedxss olsun. Ben bu URL’e gittiğimde zafiyetin çalışmadığını görüyorum. Sayfaya istek attığımızda dönen cevapta Content-type headerı javascripti yorumlayacak tipte değil. örneğin content:type: xml (tam syntaxı bilmiyorum) XML de javascripti göstermesin. Sorum burada böyle bir şey mümkün mü? Yani content-type ile xss e engel olunabilir mi?

Daha iyi anlatmak için birde file upload injection örneği veriyorum.

örnek olarak weblab.vvhack.org/upload adresine php kodu yükleyebiliyoruz. fakat web uygulaması asp.net dilinde yazılmış. biz yüklediğimiz zararlı php kodunu tetiklemek istediğimizde tetiklenmediğini görüyoruz. burada content-type asp.net e göre düzenlenmiş. Bu şekilde engellemek mümkün mü? Bu iyi bir koruma şeklimi. Bunu bypass etmenin yolu var mı? ve burada anlattığım şey mantıklımı bilmiyorum.
 

Cezeri

Yönetici
Öncelikle bir yanlışı düzelteyim, content-type XML olması durumunda XSS gerçekleştirilebilir.

Örnek Kod ;
Kod:
<html>
    <body>
            <something:script xmlns:something="http://www.w3.org/1999/xhtml">alert('jonturk @ vvHack.Org')</something:script>
            <a:script xmlns:a="http://www.w3.org/1999/xhtml">alert(2)</a:script>
            <info>
              <name>
                <value>Jonturk @ JRBops</value>
              </name>
            </info>
    </body>
8eb46af362f154d0d4bfd6968957c79f174c8214.png



Soruyu tam olarak doğru anladığımdan emin değilim fakat sanırım örneğin ".txt dosyasıyla “plain/text” content-type üzerinden XSS gerçekleştirilebilir mi ?" gibi bişey sormak istiyorsun.

Bu şekilde bir güvenlik önlemi almak kısmen mantıklı olabilir fakat tam anlamıyla doğru bir önlemdir diyemeyiz. Çünkü bu önlem bazı durumlarda bypass edilebilir.

Bazı tarayıcılar bilinmeyen içerik türlerinde “Content-Type” başlığını görmezden gelerek, kendisine gelen içeriğin türünü inceleyerek uygun Content-Type kendisi belirliyor. Bu durum sunucu yapılandırmalarında ki hatalardan da kaynaklanabilir. Bu durumda Content-Type güvenilir bir önlem olmaz.

Bu duruma benzer örnek olarak CVE-2010-1420 zafiyetine göz atabilirsiniz.

Detaylı araştırmak isterseniz “Mime Sniffing” şeklinde araştırma yapabilirsiniz Fakat bu durum genellikle güncel olmayan eski version tarayıcılardan kaynaklanıyor. Ayrıca Mime Sniffing olayının önüne geçmek adına “X-Content-Type-Options” adında bir HTTP Header bulunmakta. X-Content-Type-Options: nosniff olarak ayarlandığında bu problemin önüne geçilebilmekte.

Ayrıca CSP ile önlem alınmış bir siteye ait senaryo düşünürseniz, “test.txt” dosyasının yüklenmesini Content-Type esas alarak izin veren bir sitenin CSP ile aldığı güvenlik önlemi <script src="https://target.com/text.txt" ></script> şeklindeki bir payload ile bypass edilebilir. Bu nedenle Content-Type yerine dosya içeriğinin incelenerek yüklenemeye izin verilmesi daha mantıklı bir önlem olur.

Bir saldırgan olarak bakarsanız, kullanmak istediğimiz kodları farklı Content-Type tanımlanmış dosyalar olsa bile test etmek gerekiyor. Mime Sniffing ile XSS veya WebShell elde etmeniz mümkün.

Sormak istediğiniz tam olarak bu değilse, daha detaylı açıklayarak sorarsanız yardımcı olabilirim.
 
Moderatör tarafında düzenlendi:
Sorularıma fazlasıyla cevap aldım emeğinize sağlık. teşekkürler 🙂

Mime sniffing’i duymamıştım. Araştıracağım. Webi biraz detaylandırmaya çalışınca gerçekten karmaşıklaşıyor.
 
Herkese merhaba. ASLR ve PIE hakkında anlamadığım birkaç nokta var. 32 bit mimarili linux sistemlerde gcc hello.c -o hello veya gcc -fPIE -pie hello.c -o hello ile derlediğimiz zaman iki türlü de PIE koruması aktif geliyor ve aynı exploit ile ikisinde de shell alabiliyorum. Buraya kadar pek bi sıkıntı yok. Ancak 64 bit mimariye geçince işler biraz değişiyor sanırım. gcc -fPIE -pie hello.c -o hello ile derleyip incelediğimizde bir de stack smashing detected hatasını alıyorum ki buda stack canary aktif olduğunu gösteriyor.

Bu konu hakkında bir bilgisi olan var mı ? Aynı şekilde derlememe rağmen neden 64 bit mimaride stack smashing detected hatası ile karşılaşıyorum ? Ve 32 bit mimaride -fPIE -pie parametresini vermesem de PIE koruması neden aktif olarak geliyor ?
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst