Bir dvwa ortamı oluşturun ve MySql'den GetShell'e enjekte etmeyi öğrenin

Giriş

Göz açıp kapayıncaya kadar, güvenlik ile ilgili temel kitapları ilk okuduğumdan bu yana on ay geçti ve sızma testine olan ilgim de artıyor.Başta işimin ihtiyaçları nedeniyle, bazı yaygın güvenlik açıklarının temel ilkelerini okuyacak vaktim vardı ve takip etmeye başladım. Öğretmen sızma testi çalışmalarına başladı. Xss heyecanını ilk bulduğum zamanı hala hatırlıyorum. Usta kapıyı açtı ve çok bilgi öğrendim. Daha sonra iş nedeniyle güvenlik hizmeti projesine gittim. Mart ayındaki kaba penetrasyon testi yeteneği, projedeki iyi uygulamayı desteklemek için yeterli değildi. Ve proje diğer sızma testi uzmanları tarafından binlerce kez vaftiz edildiği için, dışarıdaki projelerde ciddi güvenlik açıkları pek yaygın değil.

Bir gün önce, ustam size sızmaya yardımcı olacak bir web sitesi vermenizi söyledi, bu yüzden bazı testlerden sonra, kaba kuvvet kırılması ve doğrulama baypasında bazı mantıksal boşluklar buldum.Raporu aceleyle yazdım ve usta bunu övdü. Kendisinin getshell enjekte ederek aynı C segmenti olan bir web sitesini kendisinin enjekte ettiğini, C segmentini tararken bu IP'yi bulamadığımı söyledim (hayal kırıklığı bahanesi) Sonra bu sistemi bulabilirsem kabuğunu alabileceğimi söyledim. Ustadan bir kelime bana biraz dokundu (sanıyorsunuz ki getshell'i mysql aracılığıyla enjekte etmeyeceksiniz).

Evet, projedeki sistem her hafta onlarca kez filtrelendi. Genellikle gönderilen parametreleri gördüğüm her yerde sqlmap çalıştırdım. En temel manuel enjeksiyonla ilgili sağlam bir anlayışa sahip değildim, bu yüzden karar verdim Bir ortamı nasıl kuracağınızı bilin ve mysql'i kullanarak kabuğunu nasıl kullanacağınızı öğrenin.

Bilgileri kontrol ettikten sonra bu makaleyi özetledim, yeni başlayanlar ile düşüncelerimi yazıp paylaştım ve büyük ineklerden düzeltmeler almayı umuyorum.İşte giriş seviyesi oyuncuların birbirlerini daha fazla öğrenme ortamı yaratmaya ve daha fazla düşünmeye teşvik etmelerini umuyorum.

Ortamı kurun

Öğrenmeye ilk başladığımda, DVWA, sql injection, xss, dosya yükleme vb. Oluşturarak çeşitli güvenlik açıklarını öğrendim. Bu yüzden enjeksiyonun olduğu bir ortamı nasıl inşa edeceğimi düşündüğümde hemen aklımda bu fikir vardı ve gördük Öğreticiler genellikle yalnızca yüksek, orta ve düşük güvenlik seviyelerinde güvenlik açıklarının nasıl yeniden üretileceğini anlatır, öyleyse neden enjeksiyon yoluyla kabuğundan kurtulamıyorum? Bu yüzden denemek için hemen bir ortam kurdum.

AŞAMA 1 Çevrimiçi olarak ücretsiz olarak indirilebilecek gerekli belgeleri hazırlayın

1) Xampp entegre ortamı

2) Dvwa sıkıştırılmış paket

ADIM 2 Kur ve xampp'i başlat'ı tıklayın. Apache'yi açarken bir hata olabilir. Şu anda, bağlantı noktasını kullanılmayan bir bağlantı noktası olarak değiştirmek için yapılandırma dosyasını değiştirmeniz gerekir. Burada 4433 ve 8081 olarak değiştirdim.

Dvwa dosyasını açın ve xampp dizininin altındaki htdoc dizinine koyun

AŞAMA 3 Şu anda ortam kuruldu, ziyaret edin ve oturum açın, çeşitli güvenlik açığı ortamlarını görebilirsiniz.

referans: Sitede ve İnternette ortam oluşturma hakkında ayrıntılı tanıtımlar vardır. Yukarıdaki adımları izleyerek başarılı bir şekilde inşa edemezseniz, sorunu kendiniz arayabilir ve çözebilirsiniz.

bağlantı:

Güvenlik Açığı Sömürü-El Kitabı

Getshell fikirlerine manuel olarak enjekte edildi:

1) Enjeksiyonun bir karakter tipi mi yoksa bir sayı tipi mi olduğunu, enjeksiyon olup olmadığını belirleyin;

2) Daha sonra disk dosyasını çalıştırmak için sql ifadesini kullanın (mysql veritabanı disk dosyasını okur, çünkü mysql, load_file () gibi işlevler sağlar, veritabanı ve web sitesi aynı sunucuya kurulursa, yazmak kolaydır web kabuğu).

İstismar

ADIM 11 girin, sorgu başarılı

1ve '1 = 2 girin, sorgu başarısız olur ve dönüş boştur

1 veya 1234 = 1234 girin, sorgu başarılı olup enjeksiyon olduğunu gösterir

Veritabanı sorgusunun düşük seviyede nasıl yapıldığını görmek için kaynak kod fonksiyonuna bakıyoruz.

Başarıyla enjekte edilen ifadeyi analiz için SQL sorgu ifadesine ekledik

Prensip aslında çok basittir.Koşullu bir önermeyle yargılanır.Ardından koşullu ifade doğruysa, sorgulayabilirsiniz.Koşul yargı yanlışsa, yanlıştır ve hiçbir sonuç döndürülmez. Lisede koşullu cümleleri incelediğimizde, icra ederken veya işlem yaparken kuralları biliyorduk:

ADIM 2 Yalnızca SQL ifadesi birleşim sorgusu

Çoğu SQL sorgusu yalnızca bir veya daha fazla tablodan veri döndüren tek bir SELECT deyimi içerir (örneğin, id alanına 1 girersek, bir sonuç döndürülür), ancak SQL aynı zamanda birden çok sorguya da izin verir (birden çok SELECT deyimi) ) ve sonucu bir sorgu sonuç kümesi olarak döndürür. Bu birleşik sorgulara genellikle birleşim veya bileşik sorgular denir. Genel olarak, ortak veritabanları UNION sorgularını destekler. UNION kullanmak çok basittir.Tek yapmanız gereken her SELECT deyimini vermek ve ardından her SELECT deyiminin arasına UNION anahtar sözcüğünü eklemektir. , Böylece verilen SELECT sonuç kümesi bir sonuç kümesinde birleştirilebilir ve döndürülebilir.

Örneğin

1) id'ye 1 giriyoruz ve bir sonuç döndürüyoruz

2) id alanına 1'union select 1,2 'girin, veritabanında iki adet select sorgusu yaptığımız görülebilir.

Ve aynı anda iki sonuç döndürdü

ADIM 3 Disk dosyalarında çalışmak üzere mysql'de bulunan işlevleri sorgulamak ve yürütmek için birleşmeyi kullanın

1) 1 "union select 1" giriyoruz < ? php @eval ($ _ POST)? > 'Dosya dışına' C: /xampp/htdocs/dvwa/1.php '# Tek cümlelik bir Truva atı yazmak için outfile'ı kullanın, dosya adı 1.php'dir ve bir hata bulunur, nedenini bulun.

2) Hata mesajından bunun tek tırnak işareti kapatma problemi olduğunun söylenmesi gerektiğini görebilirsiniz.Bir süre önce python öğreniyor olduğum için Truva atındaki tek tırnak işaretini denemek için çift tırnak işaretine dönüştürmeye karar verdim

1 union select 1, < ? php @eval ($ _ POST)? > 'into outfile'C: /xampp/htdocs/dvwa/1.php' # (sql ifadelerinde tek tırnak içinde çift tırnak işareti kullanılması gerektiğini bilmiyordum, bu sadece işkence. Kapatmak için her türlü tek tırnak işareti kullanılıyor ve çeşitli hatalar rapor ediliyor. Çeşitli denemelerden sonra, bunun dosya yazma iznim olmadığı ve hayattan yanlış bir şekilde şüphe duyduğum için olduğunu bile düşündüm.)

3) Hata mesajı yok, başarılı mıydı? Dizini kontrol edin ve bir 1.php dosyam var, bu yüzden acele edin ve mutfak bıçağını kullanın (rahat, gerçek ortam kadar mutlu olmasa da, sonuçta başarılı kabul edilir)

Manuel test burada bitti Benim gibi bir alet köpeği bunu aletlerle çözmenin bir yolunu bulmalı.

Güvenlik Açığı Sömürü Araçları

SQL enjeksiyonunu bulmanın en yaygın yolu sqlmap'dir Sızma testini yapan kişinin bir kopyası vardır, SQL enjeksiyonu olduğunu bilir ve sonra alır ve çalıştırır.

ADIM 1: Enjeksiyonu keşfedin ve uygulayın

URL: wow X, sonuç beklenmedik bir şekilde başarısız oldu.İlerlemeyi aşağıdaki sqlmap'de bildirilen 302 bilgisinden görebilirsiniz. Test sırasında, giriş arayüzüne atladım.Orijinal sqlmap testi giriş yapmayı gerektiriyor.

Bazı işlemlerden sonra, test için bir çerez eklemek istediğimi biliyorum ve başarılı oldu.

ADIM 2: Saldırıya devam etmek için sqlmap'teki os-shell parametresini kullanın (os-shell, enjeksiyon noktasından etkileşimli bir kabuk elde etmektir, bu da bize belirli sistem komutlarını yürütmek için bir ortam sağlar. Açıkça söylemek gerekirse, Windows altındakine benzer Cmd).

AŞAMA 3: Özel sistem ortamına göre dili seçin.Dvwa php kullanır, bu nedenle doğal olarak php'yi seçin ve sonra yükleme konumunu özelleştirmek için 2'yi seçin. Buraya bir kabuk almak için web sitesinin mutlak yolunu bilmeniz gerekir. (C: \ xampp \ htdocs \ dvwa içindeki yol ayırıcı \ 'nın pencerelerin altına \ eklenerek çevrilmesi gerekir).

ADIM 4 : Os-shell'i edindiğinizi ve web sitesi dizinine iki php formatlı dosya yüklediğinizi görebilirsiniz.Bu iki dosyaya erişiyoruz ve Truva atı dosyalarının indirilebileceği yükleme noktalarının sağlandığını görüyoruz. Yükle.

ADIM 5: 2.php'yi yüklemek için bu yükleme noktasını kullanın, içerik php tek cümlelik bir Truva atıdır (php'ye aşina iseniz kendiniz yazabilirsiniz veya aşina değilseniz Baidu) ve ardından bir kabuk almak için bir kıyıcı aracılığıyla bağlanın.

sonuç olarak

Benim kendi öğrenme ve keşif sürecim bundan çok daha fazlasıdır, çünkü güvenlik açıklarından yararlanma da dahil olmak üzere ortamı kurarken çeşitli sorunlar ortaya çıkacaktır ve bunların manuel enjeksiyon veya hatta tek alıntılar gibi sürekli keşif yoluyla çözülmesi gerekir. Çince mi yoksa İngilizce mi? Tek tırnakla nasıl kapatılır? Sqlmap saldırılarında çerez eklemeniz gerekir, os-shell aldığınızda çeviri için ters eğik çizgi eklemeniz gerekir, vb ... her seferinde bir hata, Sorunu tek tek çözün, sorunu çözmek için sakinleşmekten vazgeçmeyin. Öğrenme süreci, her zamanki penetrasyon da dahil olmak üzere bu şekildedir. Sabırlı olmanız ve yavaşça keşfetmeniz gerekir ve keşfetme sürecinde, teknolojinizi geliştirmeye ve büyümeye devam edersiniz. Ne de olsa Daniel bir günde eğitilmedi.

Dezavantaj

1) Çevre, yüksek yetkiye sahip inşa edilmiş bir ortamdır ve güvenlik duvarları, waf ve diğer güvenlik cihazları için hiçbir koruma yoktur ve herhangi bir müdahale olmayacaktır.Gerçek ortam çoğu zaman birden fazla korumadan kaçmak zorundadır.

2) Makale, Linux altındaki saldırı ve sömürü yöntemlerini kapsamıyor, çünkü os-shell her zaman bir şikayet konusu olmuştur.Bu, enjekte etmek için ne kadar izin gerekiyor? Bu izinle, bu işleme hala ihtiyacım var mı? Bunların arasında Linux'ta izinler sorunu çözülmediği için başarılı bir şekilde kullanılamadı, aynı zamanda Daniel'in ribaund kabuğunu izleme hakkındaki makalesini okumak da biraz kafa karıştırıcı.

Bu yüzden acemiler bu makaleyi okuduktan sonra deneyebilecekleri bir sanal makine kurabilirler. Mesele ne kadar öğrenebileceğiniz değil. Daha da önemlisi, her zamanki öğrenme fikirlerinizi özetlemek, kendiniz için bir ortam yaratmak, daha fazla sanal makine kullanmak ve daha fazla bilgiye sahip olduğunuzda daha fazlasını anlayacaksınız. Umarım Daniel daha fazlasını da anlatabilir. Fikirler acemilere yer ve büyüme fırsatları verir.

* Yazar: zhengpengfei, FreeBuf.COM'dan yeniden basılmıştır.

Efsanevi ihtiyar Chu Shijian gitti, 516266717484 bu sayı dizisi hayatını geçirdi ...
önceki
SAIC, Roewe VISION-E konsept otomobilinin yorumuyla 18 yıl içinde piyasaya sürülecek gelecek arabaları piyasaya sürdü
Sonraki
Zafer Kralı: Vahşi alanın yalnızca suikastçıya ait olabileceğini, büyücülerin vahşi doğada yanlara doğru yürüyebileceğini kim söyledi?
Lime RAT: Çok işlevli kötü amaçlı yazılım analizi
Veya Xiaomi'nin listelemesine hazırlanın? Lei Jun, Cheetah Mobile'ın başkanlığından resmen istifa etti
Üst düzey şefkat gösterHeteroseksüel erkeklerin kanserini protesto etmek için bu çocuklar, kadınların oylarına karşı bir "intikam" operasyonu başlattı, işin sırrı...
Şangay Otomobil Fuarı Pavyonu: En güzel tırıs Mazda MX-5 RF (üstü açık üstü açılır)
Tsinghua Üniversitesi matematik profesörü, düşündürücü nedenlerle kızını Matematik Olimpiyatı okumayı bırakmaya çağırdı
Allegro çalın ve Lei Feng'i söyleyin, gönüllülük pazarı çok canlı
King of Glory: Efsanevi bir düzine iki denemek istemez misin? Bu kahramanlar seni uçurur
"Balkonda" Shanghai Roadshow izleyicileri, yönetmen Zhang Meng'i Şangay hikayelerini rahatlattığı için övdü ve Wang Qiang'ın rolü yorumlaması patlayıcı oyunculuk için övüldü
Xilinx, 7nm ACAP hızlandırma platformu Versal'ı ve veri merkezi AI hızlandırıcı kartı Alveo'yu yayınladı
8.0'ı doğrudan atlayın! Resmi olarak Android 8.1'de kullanılan Temel Telefon
Bu yıl sadece bir çift kopya basketbol ayakkabısı satın alabiliyorsanız, Zhan Huang'ın Nike Air Zoom Üretimi başlamalı!
To Top