it-swarm-tr.com

Bir oturumu nasıl ele geçiririm?

Sorunun açık başlığına rağmen, bu aslında gerçek bir amaç içindir.

Sitem PHP kodu şöyle kullanıyor:

    $select="select id from tableA where user_id='".$_SESSION['sess_user_id']."'";

Gerçekten bir hacker gibi düşünmeye ve bu değeri nasıl değiştirebileceğimi anlamaya çalışıyorum. Oturum kaçırma "hakkında", ancak bunun nasıl yapılabilir hakkında belirsiz olmak makaleleri okudum ...

25
Steve

Temelde birileri oturumu kaçırmak kendi sessionID almak ve kendi gibi davran. Genellikle sessionID çerez içine aktarılır, yani diğer tarafların çerezine erişebiliyorsanız sadece kendi çerezinize koyabilirsiniz ve oturumlarını çaldınız.

Bu çeşitli yollarla yapılabilir, örneğin kablosuz ağı koklayarak ve aktarılan HTTP paketlerine bakarak veya XSS saldırısı .

Sorunuzda açıkladığınız örneğin SQL-Injection'a karşı savunmasız olabileceğini belirtmek isterim. Çerezimin sessionID değerini olarak değiştirirsem

asdf' OR 1=1-- 

Muhtemelen geçerli bir kullanıcı olarak kimlik doğrulamam olur. Bunu önlemek için, verileri herhangi bir şey için kullanmadan önce müşterilerinizden gelen kirli veriler üzerinde uygun bir dezenfekte ettiğinizden emin olmalısınız.

10
Chris Dale

Gösteriyle ilgileniyorsanız, Twitter bunun ne kadar kolay yapıldığının çok iyi bir örneğidir. İhtiyacın olacak:

  • İki Bilgisayar
  • Firebug ile Firefox (açıkçası başka seçenekler de var, ancak bunlar popüler ve kolay elde edilebilir)
  • Gelişmiş Çerez Yöneticisi gibi bir Çerez Düzenleyici (yine Firefox üzerinden kolayca kurulabilir eklenti)

Firefox ve kundakçı ile A bilgisayarında, https olmayan sitede Twitter hesabınıza giriş yapın. Giriş yaptıktan sonra Firebug'u açın ve "GET Twitter.com" satırına bakın. Genişlettiğinizde Yanıt Başlıkları bölümünün altına bakın ve Set-Cookie'yi bulun. Orada _Twitter_sess adında bir çerez bulacaksınız. Değeri vurgulayın ve kopyalayın (noktalı virgülün sonuna kadar).

Şimdi Firefox'u B bilgisayarındaki gelişmiş çerez yöneticisi ile açın ve Twitter giriş sayfasına gidin. Gelişmiş Çerez Yöneticisi'ni açın ve Twitter.com için filtreleyin. Twitter.com alan adını ve çerez listesini bulduktan sonra, _Twitter_sess adında bir çerez görürsünüz. Silin. Şimdi diğer bilgisayardan "_Twitter_sess", "/" yolu "ve" Value "adında yeni bir çerez oluşturun. Çerezi kaydedin.

Şimdi çerez yöneticisini kapatın ve Twitter giriş sayfasına geri dönün, sayfayı yenileyin ve bam, işte buradasınız.

Şimdi sadece bir başkasının oturumu (açık wifi, xss) almak için bazı akıllıca bir yol tasarlayın ve bu oturum kaçırma nasıl yapılır bir yoludur.

7
Safado

Karrax'ın kodu, bir oturum ele geçirme saldırısı değil, bir SQL Enjeksiyon saldırısıdır (kodunuzun savunmasız olduğu - bunun düzeltilmesi gerekir).

$select="select id from tableA where user_id='"
    .mysql_real_escape_string($_SESSION['sess_user_id'], $db_handle)
    ."'";

Oturum ele geçirme işleminde Bob, Alice'e atadığınız oturum kimliği değerini çalar. Bu, HTML akışına yapılan bir MITM saldırısı, ağ koklaması, sitenize bazı JavaScript dosyaları yerleştirmesine izin veren bir CSS hatası veya diğer yöntemlerin bir sonucu olabilir.

Oturum sabitleme sorunlarını gözden kaçırmamak önemlidir - SSL ve HTTP yalnızca bir çereze işaretler ayarlasanız ve Bob'un sitenize erişmeden ve belirli bir değer için Bob'un Alice'in bilgisayarına saldırdığı sorunu çözmeyen use_only_cookies'i ayarlayın oturum kimliği. Bob daha sonra bilgisayarında aynı değeri ayarlayabilir ve istekleri Alice ile aynı oturuma bağlanır. Bu nedenle, kimlik doğrulaması yaptığınızda yeni bir oturum kimliği oluşturmanız gerekir - session_regenerate_id () işlevine bakın.

4
symcbean

Oturum ele geçirme genellikle bir kullanıcıdan bir çerez çalmayı içerir. Örneğin Firesheep, Firefox için güvenli olmayan Wifi üzerinden oturumları çalan bir eklentidir. HTTP durum bilgisi olmayan bir protokoldür, bu yüzden insanları doğrulamak için yapabileceğimiz en iyi şey çerezlerdir.

Sorunuzda bulunan PHP kodu, olabilir SQL enjeksiyonuna karşı duyarlı olan bir kod örneğidir. böyle bir sorgu.

2
WalterJ89