# Sqlmap A'dan Z'ye #

xNovem

Üye
9 Tem 2023
150
128
mai667w.png


Merhaba TurkHackTeam. Bugün konumuz SQLMAP

cymeut5.png

SQL Enjeksiyon Nedir?

SQL enjeksiyon, kötü niyetli kişilerin bir web uygulamasına, veritabanı sorgularını manipüle ederek izinsiz erişim sağlama tekniğidir. Bu tür saldırılar, uygulamanın güvenlik açığı sayesinde gerçekleştirilir ve sıklıkla kullanıcı tarafından sağlanan giriş verilerinin doğru bir şekilde filtrelenmediği durumlarda ortaya çıkar.

SQLMap Temel İşlevleri

  1. Otomatik Algılama: SQLMap, hedeflenen web uygulamasındaki potansiyel SQL enjeksiyon noktalarını otomatik olarak algılayabilir. Bu sayede güvenlik testi uzmanları, potansiyel zayıf noktaları manuel olarak aramak yerine SQLMap'i kullanarak bu noktaları hızla tespit edebilirler.
  2. Veritabanı Keşfi: SQLMap, hedeflenen veritabanının yapısal bilgilerini (tablo isimleri, sütunlar, ilişkiler vb.) otomatik olarak keşfedebilir.
  3. Veri Çekme: SQLMap, hedeflenen veritabanından veri çekmek için kullanılabilir. Bu sayede saldırganlar, kullanıcı adları, şifreler ve diğer hassas bilgileri ele geçirebilirler.
  4. Veritabanı Erişimi ve Yetki Yükseltme: SQLMap, hedeflenen veritabanına erişim sağlama ve gerektiğinde kullanıcı yetkilerini yükseltme yeteneğine sahiptir.
  5. Dosya Sistemi Erişimi: SQLMap, hedeflenen sunucunun dosya sistemi üzerinde gezinme yeteneğine sahiptir. Bu, saldırganların hassas sistem dosyalarına erişim sağlayabileceği anlamına gelir.
  6. Komut İstemi Oluşturma: SQLMap, hedef sunucuda komut çalıştırma yeteneğine sahiptir. Bu sayede saldırganlar, hedef sistemi ele geçirmek için kullanabilecekleri komutları çalıştırabilirler.
  7. Tam Özelleştirme: SQLMap, kullanıcıların hedeflenen saldırı senaryolarını ve istekleri tamamen özelleştirmelerine olanak tanır. Bu, daha karmaşık saldırıları gerçekleştirmek isteyen uzmanlar için önemlidir.
  8. Raporlama: SQLMap, tespit edilen güvenlik açıkları hakkında detaylı raporlar oluşturabilir. Bu raporlar, güvenlik testi sonuçlarını yönetim veya geliştirme ekibiyle paylaşmak için kullanılabilir.

SQLMap Kullanımı

İlk olarak, bazı basit parametrelerin kullanımına dair örneklerle başlayalım.(Temeli biliyorsanız bu kısmı geçebilirsiniz)
Hedef URL belirtme
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4”
-u ya da --url parametresi yukarıdaki kullanımda da görüldüğü üzere sqlmap’e hedef sitenin URL’ini tanıtır

Mevcut veri tabanlarının listesine bakma

Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” --dbs
Yukarıdaki örenekde görüldüğü üzere --dbs parametresini ekleyerek mevcut veri tabanlarının listesini ekrana getirebiliriz.

Tablo,Kolon ve Kayıtlar
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME --tables
Yukarıda -D "DataBaseName" belirtip --tables parametresi ilede tabloları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME --columns
Yukarıda -T "TabloName" belirtip --columns parametresi ile kolonları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME -C "KOLONNAME" --dump
Yukarıda -C "KolonName" belirtip --dump parametresi ilede veriyi çektik -C kullanırken örnek kullanıcıadı,parola şeklinde aralarını virgül ile ayırarak birden fazla kolonu aynanda çekebiliriz
-D: Bu parametre ile veri tabanı adını belirtmiş olduk.
--tables: Belirttiğimiz veri tabanındaki tablo isimlerini getirmek için bu parametre kullanılır.
-T: Tablo isimleri de alındıktan sonra kolonlarına ulaşılması istenen tablo adı bu parametre ile birlikte yazılır.
--columns: Adı belirtilen tablodaki kolonlar getirilir.
-C: İstenilen kolon adı yazılır.
--dump: Kolonlarda yer alan veriler ekrana yansıtılır.

Birden Fazla Hedefi Tarama

Sqlmap’in -m parametresiyle birden fazla URL’in taratılması mümkündür.
Öncelikle herhangi bir isimli txt dosyası oluşturuyoruz örneğin link.txt
txt dosya içeriği aşşağıdaki gibi olmalıdır

Kod:
http://php.testsparker.com/artist.php?id=2
http://aspnet.testsparker.com/blog/what-are-the-advantages-of-bitcoin-62/
http://192.168.1.38/index.php?action=gallery_view&gallery_id=1
http://localhost/index.php?action=test

Ardından path’i belirtilir
Kod:
qlmap -m "C:\Users\[USER]\Desktop\link.txt"

İstek Dosyası Yüklme

Bu işlemi gerçekleştirebilmek için -r parametresini kullanmak gerekir.
Herhangi bir proxy yazılımıyla araya girerek, yaptığımız isteği kopyalıyor ve bir metin dosyasına kaydediyoruz. Örneğin istek.txt adlı dosyaya ait içeriğin aşağıdaki gibi olduğunu varsayalım


Kod:
GET http://aspnet.testsparker.com/blog/how-does-bitcoin-work-63/ HTTP/1.1
Host: aspnet.testsparker.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=zpuu4rzda5rxued21mwqttd3; TestCookie=Hello

SQLMap de kullanımı şu şekilde olucak

Kod:
sqlmap -r "istek.txt"
Temek kullanım parametreleri bu şekildedir.

SQLMAP En çok kullanılan Paremetreler ve kullanım yerleri.

--random-agent--force-ssl--level=LEVEL --risk=RISK
Random Agent ismindende anlaşıldığı gibi Rastgele seçilen HTTP User-Agent başlık değerini kullanır

--random-agent kullanıldığında, SQLMap rastgele bir kullanıcı ajanı seçerek HTTP isteklerini gönderir. Bu, web sunucusunun normal kullanıcı trafiği gibi görünmesini sağlar ve saldırının tespit edilme olasılığını azaltabilir. Özellikle savunma mekanizmalarının ya da güvenlik cihazlarının saldırıları tespit etmeye çalıştığı durumlarda bu tür bir gizleme yöntemi etkili olabilir.
--force-ssl nedir? Force ssl yani SSL/HTTPS kullanımını zorlama

Hedef web uygulamasına sadece güvenli bir HTTPS bağlantısıyla erişilmesi gerektiğinde kullanılır. Bu durum, hedef web uygulamasının yalnızca HTTPS bağlantılarını kabul ettiği bir senaryoda geçerlidir. Bu, SQLMap'ın sadece HTTPS üzerinden iletişim kurmasını sağlar ve böylece tüm veri alışverişi şifrelenir.

Kullanım yerleri nelerdir?
Sadece HTTPS bağlantılarına izin veren bir hedef web uygulamasıyla çalışırken --force-ssl bayrağını kullanmanız gerekebilir.
LEVEL
Gerçekleştirilecek testlerin seviyesi (1-5, varsayılan 1)

RİSK
Gerçekleştirilecek testlerin riski (1-3, varsayılan 1)

--technique=TECH--time-sec=TIMESEC--current-user /
--current-db
--technique
Kullanılacak SQL enjeksiyon tekniklerini belirlemenizi sağlar (varsayılan "BEUSTQ")

Nedir bu Teknikler?
Öncelikle BEUSTQ tüm teknikleri temsil eder ve bunların açılımı şöyledir

  1. B: Boolean-Based (Boolean Tabanlı)
  2. E: Error-Based (Hata Tabanlı)
  3. U: Union-Based (Birleştirme Tabanlı)
  4. S: Stacked Queries (Yığılmış Sorgular)
  5. T: Time-Based Blind (Zaman Tabanlı Kör)
  6. Q: Inline Queries (Satır İçi Sorgular)
Her bir teknik, SQL enjeksiyon saldırılarını tespit etmek veya açıkları sömürmek için kullanılır. Örneğin, Boolean-Based teknik, bir SQL ifadesinin doğru veya yanlış olduğunu test ederek enjeksiyon zafiyetlerini tespit etmeye çalışırken, Time-Based Blind teknik, veritabanı sorgularının cevap verme süresini kullanarak enjeksiyonun varlığını belirlemeye çalışır.
--time-sec=TIMESEC DBMS yanıtını geciktirmek için saniye (varsayılan 5)

--time-sec=TIMESEC parametresi, SQLMap'ın bu tür saldırıları gerçekleştirirken beklemesi gereken süreyi belirtir. Bu süre, veritabanının cevap süresini beklemek ve sonuçları analiz etmek için kullanılır. TIMESEC, saniye cinsinden beklemek istediğiniz süreyi ifade eder.
--current-user DBMS geçerli kullanıcısını alır

--current-db DBMS geçerli veritabanını alır



--tamper=TAMPER--no-cast--os-cmd=OSCMD / --os-shell
--tamper=TAMPER Enjeksiyon verilerini kurcalamak için verilen kod(lar)ı kullanın

--tamper=TAMPER parametresi, SQLMap'a belirli bir "TAMPER" adlı modülün (dönüşüm veya değiştirme işlevi) kullanılmasını sağlar. SQLMap, SQL sorgularını bu modülleri kullanarak değiştirir ve ardından sonuçları analiz eder.

Örnek kullanım yerleri:

  1. Obfuskasyon (Obscuration): SQLMap'ın varsayılan olarak kullanılan bazı enjeksiyon dizesi değiştirme modülleri, enjekte edilen SQL kodunun tespit edilme olasılığını azaltmak için kullanılabilir.
  2. WAF (Web Application Firewall) Atlatma: Bazı Web Uygulama Güvenlik Duvarları (WAF'lar), SQL enjeksiyon saldırılarını engellemek için belirli dize kalıplarını izler. --tamper parametresi, bu tür korumaları aşmak veya engellemek için kullanılabilir.
  3. Veritabanı Özelliklerini Keşfetme: Belirli bir dönüşüm modülü kullanarak veritabanının özelliklerini keşfetmek ve veritabanına yönelik bilgi edinmek mümkün olabilir.
  4. Enjeksiyon Sonuçlarını Değiştirme: SQLMap'ın otomatik olarak oluşturduğu enjeksiyon dizesini özelleştirmek ve istediğiniz sonuçları almak için bu parametre kullanılabilir.
Özetle, --tamper parametresi, SQLMap'ın enjeksiyon sorgularını dönüştürmek veya değiştirmek için belirli modülleri kullanmanızı sağlar. Bu, saldırıların daha etkili ve güvenlik önlemlerini aşma yeteneklerini artırıcı bir özelliktir.
--no-cast Payload döküm mekanizmasını kapatın

--no-cast parametresi, SQLMap'ın enjeksiyon sorgularında bu otomatik tip dönüşümlerini yapmamasını sağlar. Bu, belirli bir senaryoda tip dönüşümlerinin istenmeyen sonuçlar doğurabileceği durumlar için kullanışlıdır. Örneğin, bazı veritabanı yönetim sistemlerinde tür dönüşümleri yetersiz veya hatalı olabilir ve bu durumda --no-cast parametresi kullanılarak dönüşümler devre dışı bırakılabilir.
--os-cmd=OSCMD Bir işletim sistemi komutunu çalıştırma

--os-shell Etkileşimli bir işletim sistemi kabuğu ister

--os-cmd=OSCMD:Bu parametre, hedef veritabanı sunucusunda belirtilen OSCMD (Operating System Command) komutunu çalıştırmak için kullanılır. SQL enjeksiyon açığına sahip bir hedef üzerinde bu parametre ile birlikte komut çalıştırabilirsiniz. Bu, veritabanı sunucusunun işletim sistemine bağlı komutlar (örneğin, ping, ls, dir gibi) çalıştırmak için kullanışlı olabilir.

--os-shell:Bu parametre, hedef veritabanı sunucusunda etkileşimli bir kabuk (shell) açmak için kullanılır. SQLMap, hedef sunucuda bir kabuk oluşturarak kullanıcıya doğrudan komut girmek ve komut çıktılarını görmek için bir ortam sağlar. Bu, hedef sunucuda daha geniş bir etkileşim ve kontrol sağlamak için kullanışlıdır.

Umarım okunaklı ve faydalı olmuştur tekrar görüşmek üzere

80cpc3y.png
 
Son düzenleme:

H@cked BaBy

Basın&Medya Ekibi
28 Haz 2023
2,432
1,006
Arkana bak
mai667w.png


Merhaba TurkHackTeam. Bugün konumuz SQLMAP

cymeut5.png

SQL Enjeksiyon Nedir?

SQL enjeksiyon, kötü niyetli kişilerin bir web uygulamasına, veritabanı sorgularını manipüle ederek izinsiz erişim sağlama tekniğidir. Bu tür saldırılar, uygulamanın güvenlik açığı sayesinde gerçekleştirilir ve sıklıkla kullanıcı tarafından sağlanan giriş verilerinin doğru bir şekilde filtrelenmediği durumlarda ortaya çıkar.

SQLMap Temel İşlevleri

  1. Otomatik Algılama: SQLMap, hedeflenen web uygulamasındaki potansiyel SQL enjeksiyon noktalarını otomatik olarak algılayabilir. Bu sayede güvenlik testi uzmanları, potansiyel zayıf noktaları manuel olarak aramak yerine SQLMap'i kullanarak bu noktaları hızla tespit edebilirler.
  2. Veritabanı Keşfi: SQLMap, hedeflenen veritabanının yapısal bilgilerini (tablo isimleri, sütunlar, ilişkiler vb.) otomatik olarak keşfedebilir.
  3. Veri Çekme: SQLMap, hedeflenen veritabanından veri çekmek için kullanılabilir. Bu sayede saldırganlar, kullanıcı adları, şifreler ve diğer hassas bilgileri ele geçirebilirler.
  4. Veritabanı Erişimi ve Yetki Yükseltme: SQLMap, hedeflenen veritabanına erişim sağlama ve gerektiğinde kullanıcı yetkilerini yükseltme yeteneğine sahiptir.
  5. Dosya Sistemi Erişimi: SQLMap, hedeflenen sunucunun dosya sistemi üzerinde gezinme yeteneğine sahiptir. Bu, saldırganların hassas sistem dosyalarına erişim sağlayabileceği anlamına gelir.
  6. Komut İstemi Oluşturma: SQLMap, hedef sunucuda komut çalıştırma yeteneğine sahiptir. Bu sayede saldırganlar, hedef sistemi ele geçirmek için kullanabilecekleri komutları çalıştırabilirler.
  7. Tam Özelleştirme: SQLMap, kullanıcıların hedeflenen saldırı senaryolarını ve istekleri tamamen özelleştirmelerine olanak tanır. Bu, daha karmaşık saldırıları gerçekleştirmek isteyen uzmanlar için önemlidir.
  8. Raporlama: SQLMap, tespit edilen güvenlik açıkları hakkında detaylı raporlar oluşturabilir. Bu raporlar, güvenlik testi sonuçlarını yönetim veya geliştirme ekibiyle paylaşmak için kullanılabilir.

SQLMap Kullanımı

İlk olarak, bazı basit parametrelerin kullanımına dair örneklerle başlayalım.(Temeli biliyorsanız bu kısmı geçebilirsiniz)
Hedef URL belirtme
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4”
-u ya da --url parametresi yukarıdaki kullanımda da görüldüğü üzere sqlmap’e hedef sitenin URL’ini tanıtır

Mevcut veri tabanlarının listesine bakma

Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” --dbs
Yukarıdaki örenekde görüldüğü üzere --dbs parametresini ekleyerek mevcut veri tabanlarının listesini ekrana getirebiliriz.

Tablo,Kolon ve Kayıtlar
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME --tables
Yukarıda -D "DataBaseName" belirtip --tables parametresi ilede tabloları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME --columns
Yukarıda -T "TabloName" belirtip --columns parametresi ile kolonları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME -C "KOLONNAME" --dump
Yukarıda -C "KolonName" belirtip --dump parametresi ilede veriyi çektik -C kullanırken örnek kullanıcıadı,parola şeklinde aralarını virgül ile ayırarak birden fazla kolonu aynanda çekebiliriz
-D: Bu parametre ile veri tabanı adını belirtmiş olduk.
--tables: Belirttiğimiz veri tabanındaki tablo isimlerini getirmek için bu parametre kullanılır.
-T: Tablo isimleri de alındıktan sonra kolonlarına ulaşılması istenen tablo adı bu parametre ile birlikte yazılır.
--columns: Adı belirtilen tablodaki kolonlar getirilir.
-C: İstenilen kolon adı yazılır.
--dump: Kolonlarda yer alan veriler ekrana yansıtılır.

Birden Fazla Hedefi Tarama

Sqlmap’in -m parametresiyle birden fazla URL’in taratılması mümkündür.
Öncelikle herhangi bir isimli txt dosyası oluşturuyoruz örneğin link.txt
txt dosya içeriği aşşağıdaki gibi olmalıdır

Kod:
http://php.testsparker.com/artist.php?id=2
http://aspnet.testsparker.com/blog/what-are-the-advantages-of-bitcoin-62/
http://192.168.1.38/index.php?action=gallery_view&gallery_id=1
http://localhost/index.php?action=test

Ardından path’i belirtilir
Kod:
qlmap -m "C:\Users\[USER]\Desktop\link.txt"

İstek Dosyası Yüklme

Bu işlemi gerçekleştirebilmek için -r parametresini kullanmak gerekir.
Herhangi bir proxy yazılımıyla araya girerek, yaptığımız isteği kopyalıyor ve bir metin dosyasına kaydediyoruz. Örneğin istek.txt adlı dosyaya ait içeriğin aşağıdaki gibi olduğunu varsayalım


Kod:
GET http://aspnet.testsparker.com/blog/how-does-bitcoin-work-63/ HTTP/1.1
Host: aspnet.testsparker.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=zpuu4rzda5rxued21mwqttd3; TestCookie=Hello

SQLMap de kullanımı şu şekilde olucak

Kod:
sqlmap -r "istek.txt"
Temek kullanım parametreleri bu şekildedir.

SQLMAP Paremetreleri ve kullanım yerleri.

--random-agent--force-ssl--level=LEVEL --risk=RISK
Random Agent ismindende anlaşıldığı gibi Rastgele seçilen HTTP User-Agent başlık değerini kullanır

--random-agent kullanıldığında, SQLMap rastgele bir kullanıcı ajanı seçerek HTTP isteklerini gönderir. Bu, web sunucusunun normal kullanıcı trafiği gibi görünmesini sağlar ve saldırının tespit edilme olasılığını azaltabilir. Özellikle savunma mekanizmalarının ya da güvenlik cihazlarının saldırıları tespit etmeye çalıştığı durumlarda bu tür bir gizleme yöntemi etkili olabilir.
--force-ssl nedir? Force ssl yani SSL/HTTPS kullanımını zorlama

Hedef web uygulamasına sadece güvenli bir HTTPS bağlantısıyla erişilmesi gerektiğinde kullanılır. Bu durum, hedef web uygulamasının yalnızca HTTPS bağlantılarını kabul ettiği bir senaryoda geçerlidir. Bu, SQLMap'ın sadece HTTPS üzerinden iletişim kurmasını sağlar ve böylece tüm veri alışverişi şifrelenir.

Kullanım yerleri nelerdir?
Sadece HTTPS bağlantılarına izin veren bir hedef web uygulamasıyla çalışırken --force-ssl bayrağını kullanmanız gerekebilir.
LEVEL
Gerçekleştirilecek testlerin seviyesi (1-5, varsayılan 1)

RİSK
Gerçekleştirilecek testlerin riski (1-3, varsayılan 1)

--technique=TECH
--technique
Kullanılacak SQL enjeksiyon tekniklerini belirlemenizi sağlar (varsayılan "BEUSTQ")

Nedir bu Teknikler?
Öncelikle BEUSTQ tüm teknikleri temsil eder ve bunların açılımı şöyledir
Eline sağlık. Konu yarım kalmış galiba?
 

Arenklord

Uzman üye
9 Mar 2023
1,294
666
Orta doğu
mai667w.png


Merhaba TurkHackTeam. Bugün konumuz SQLMAP

cymeut5.png

SQL Enjeksiyon Nedir?

SQL enjeksiyon, kötü niyetli kişilerin bir web uygulamasına, veritabanı sorgularını manipüle ederek izinsiz erişim sağlama tekniğidir. Bu tür saldırılar, uygulamanın güvenlik açığı sayesinde gerçekleştirilir ve sıklıkla kullanıcı tarafından sağlanan giriş verilerinin doğru bir şekilde filtrelenmediği durumlarda ortaya çıkar.

SQLMap Temel İşlevleri

  1. Otomatik Algılama: SQLMap, hedeflenen web uygulamasındaki potansiyel SQL enjeksiyon noktalarını otomatik olarak algılayabilir. Bu sayede güvenlik testi uzmanları, potansiyel zayıf noktaları manuel olarak aramak yerine SQLMap'i kullanarak bu noktaları hızla tespit edebilirler.
  2. Veritabanı Keşfi: SQLMap, hedeflenen veritabanının yapısal bilgilerini (tablo isimleri, sütunlar, ilişkiler vb.) otomatik olarak keşfedebilir.
  3. Veri Çekme: SQLMap, hedeflenen veritabanından veri çekmek için kullanılabilir. Bu sayede saldırganlar, kullanıcı adları, şifreler ve diğer hassas bilgileri ele geçirebilirler.
  4. Veritabanı Erişimi ve Yetki Yükseltme: SQLMap, hedeflenen veritabanına erişim sağlama ve gerektiğinde kullanıcı yetkilerini yükseltme yeteneğine sahiptir.
  5. Dosya Sistemi Erişimi: SQLMap, hedeflenen sunucunun dosya sistemi üzerinde gezinme yeteneğine sahiptir. Bu, saldırganların hassas sistem dosyalarına erişim sağlayabileceği anlamına gelir.
  6. Komut İstemi Oluşturma: SQLMap, hedef sunucuda komut çalıştırma yeteneğine sahiptir. Bu sayede saldırganlar, hedef sistemi ele geçirmek için kullanabilecekleri komutları çalıştırabilirler.
  7. Tam Özelleştirme: SQLMap, kullanıcıların hedeflenen saldırı senaryolarını ve istekleri tamamen özelleştirmelerine olanak tanır. Bu, daha karmaşık saldırıları gerçekleştirmek isteyen uzmanlar için önemlidir.
  8. Raporlama: SQLMap, tespit edilen güvenlik açıkları hakkında detaylı raporlar oluşturabilir. Bu raporlar, güvenlik testi sonuçlarını yönetim veya geliştirme ekibiyle paylaşmak için kullanılabilir.

SQLMap Kullanımı

İlk olarak, bazı basit parametrelerin kullanımına dair örneklerle başlayalım.(Temeli biliyorsanız bu kısmı geçebilirsiniz)
Hedef URL belirtme
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4”
-u ya da --url parametresi yukarıdaki kullanımda da görüldüğü üzere sqlmap’e hedef sitenin URL’ini tanıtır

Mevcut veri tabanlarının listesine bakma

Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” --dbs
Yukarıdaki örenekde görüldüğü üzere --dbs parametresini ekleyerek mevcut veri tabanlarının listesini ekrana getirebiliriz.

Tablo,Kolon ve Kayıtlar
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME --tables
Yukarıda -D "DataBaseName" belirtip --tables parametresi ilede tabloları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME --columns
Yukarıda -T "TabloName" belirtip --columns parametresi ile kolonları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME -C "KOLONNAME" --dump
Yukarıda -C "KolonName" belirtip --dump parametresi ilede veriyi çektik -C kullanırken örnek kullanıcıadı,parola şeklinde aralarını virgül ile ayırarak birden fazla kolonu aynanda çekebiliriz
-D: Bu parametre ile veri tabanı adını belirtmiş olduk.
--tables: Belirttiğimiz veri tabanındaki tablo isimlerini getirmek için bu parametre kullanılır.
-T: Tablo isimleri de alındıktan sonra kolonlarına ulaşılması istenen tablo adı bu parametre ile birlikte yazılır.
--columns: Adı belirtilen tablodaki kolonlar getirilir.
-C: İstenilen kolon adı yazılır.
--dump: Kolonlarda yer alan veriler ekrana yansıtılır.

Birden Fazla Hedefi Tarama

Sqlmap’in -m parametresiyle birden fazla URL’in taratılması mümkündür.
Öncelikle herhangi bir isimli txt dosyası oluşturuyoruz örneğin link.txt
txt dosya içeriği aşşağıdaki gibi olmalıdır

Kod:
http://php.testsparker.com/artist.php?id=2
http://aspnet.testsparker.com/blog/what-are-the-advantages-of-bitcoin-62/
http://192.168.1.38/index.php?action=gallery_view&gallery_id=1
http://localhost/index.php?action=test

Ardından path’i belirtilir
Kod:
qlmap -m "C:\Users\[USER]\Desktop\link.txt"

İstek Dosyası Yüklme

Bu işlemi gerçekleştirebilmek için -r parametresini kullanmak gerekir.
Herhangi bir proxy yazılımıyla araya girerek, yaptığımız isteği kopyalıyor ve bir metin dosyasına kaydediyoruz. Örneğin istek.txt adlı dosyaya ait içeriğin aşağıdaki gibi olduğunu varsayalım


Kod:
GET http://aspnet.testsparker.com/blog/how-does-bitcoin-work-63/ HTTP/1.1
Host: aspnet.testsparker.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=zpuu4rzda5rxued21mwqttd3; TestCookie=Hello

SQLMap de kullanımı şu şekilde olucak

Kod:
sqlmap -r "istek.txt"
Temek kullanım parametreleri bu şekildedir.

SQLMAP En çok kullanılan Paremetreler ve kullanım yerleri.

--random-agent--force-ssl--level=LEVEL --risk=RISK
Random Agent ismindende anlaşıldığı gibi Rastgele seçilen HTTP User-Agent başlık değerini kullanır

--random-agent kullanıldığında, SQLMap rastgele bir kullanıcı ajanı seçerek HTTP isteklerini gönderir. Bu, web sunucusunun normal kullanıcı trafiği gibi görünmesini sağlar ve saldırının tespit edilme olasılığını azaltabilir. Özellikle savunma mekanizmalarının ya da güvenlik cihazlarının saldırıları tespit etmeye çalıştığı durumlarda bu tür bir gizleme yöntemi etkili olabilir.
--force-ssl nedir? Force ssl yani SSL/HTTPS kullanımını zorlama

Hedef web uygulamasına sadece güvenli bir HTTPS bağlantısıyla erişilmesi gerektiğinde kullanılır. Bu durum, hedef web uygulamasının yalnızca HTTPS bağlantılarını kabul ettiği bir senaryoda geçerlidir. Bu, SQLMap'ın sadece HTTPS üzerinden iletişim kurmasını sağlar ve böylece tüm veri alışverişi şifrelenir.

Kullanım yerleri nelerdir?
Sadece HTTPS bağlantılarına izin veren bir hedef web uygulamasıyla çalışırken --force-ssl bayrağını kullanmanız gerekebilir.
LEVEL
Gerçekleştirilecek testlerin seviyesi (1-5, varsayılan 1)

RİSK
Gerçekleştirilecek testlerin riski (1-3, varsayılan 1)

--technique=TECH--time-sec=TIMESEC--current-user /
--current-db
--technique
Kullanılacak SQL enjeksiyon tekniklerini belirlemenizi sağlar (varsayılan "BEUSTQ")

Nedir bu Teknikler?
Öncelikle BEUSTQ tüm teknikleri temsil eder ve bunların açılımı şöyledir

  1. B: Boolean-Based (Boolean Tabanlı)
  2. E: Error-Based (Hata Tabanlı)
  3. U: Union-Based (Birleştirme Tabanlı)
  4. S: Stacked Queries (Yığılmış Sorgular)
  5. T: Time-Based Blind (Zaman Tabanlı Kör)
  6. Q: Inline Queries (Satır İçi Sorgular)
Her bir teknik, SQL enjeksiyon saldırılarını tespit etmek veya açıkları sömürmek için kullanılır. Örneğin, Boolean-Based teknik, bir SQL ifadesinin doğru veya yanlış olduğunu test ederek enjeksiyon zafiyetlerini tespit etmeye çalışırken, Time-Based Blind teknik, veritabanı sorgularının cevap verme süresini kullanarak enjeksiyonun varlığını belirlemeye çalışır.
--time-sec=TIMESEC DBMS yanıtını geciktirmek için saniye (varsayılan 5)

--time-sec=TIMESEC parametresi, SQLMap'ın bu tür saldırıları gerçekleştirirken beklemesi gereken süreyi belirtir. Bu süre, veritabanının cevap süresini beklemek ve sonuçları analiz etmek için kullanılır. TIMESEC, saniye cinsinden beklemek istediğiniz süreyi ifade eder.
--current-user DBMS geçerli kullanıcısını alır

--current-db DBMS geçerli veritabanını alır


--tamper=TAMPER--no-cast--os-cmd=OSCMD / --os-shell
--tamper=TAMPER Enjeksiyon verilerini kurcalamak için verilen kod(lar)ı kullanın

--tamper=TAMPER parametresi, SQLMap'a belirli bir "TAMPER" adlı modülün (dönüşüm veya değiştirme işlevi) kullanılmasını sağlar. SQLMap, SQL sorgularını bu modülleri kullanarak değiştirir ve ardından sonuçları analiz eder.

Örnek kullanım yerleri:

  1. Obfuskasyon (Obscuration): SQLMap'ın varsayılan olarak kullanılan bazı enjeksiyon dizesi değiştirme modülleri, enjekte edilen SQL kodunun tespit edilme olasılığını azaltmak için kullanılabilir.
  2. WAF (Web Application Firewall) Atlatma: Bazı Web Uygulama Güvenlik Duvarları (WAF'lar), SQL enjeksiyon saldırılarını engellemek için belirli dize kalıplarını izler. --tamper parametresi, bu tür korumaları aşmak veya engellemek için kullanılabilir.
  3. Veritabanı Özelliklerini Keşfetme: Belirli bir dönüşüm modülü kullanarak veritabanının özelliklerini keşfetmek ve veritabanına yönelik bilgi edinmek mümkün olabilir.
  4. Enjeksiyon Sonuçlarını Değiştirme: SQLMap'ın otomatik olarak oluşturduğu enjeksiyon dizesini özelleştirmek ve istediğiniz sonuçları almak için bu parametre kullanılabilir.
Özetle, --tamper parametresi, SQLMap'ın enjeksiyon sorgularını dönüştürmek veya değiştirmek için belirli modülleri kullanmanızı sağlar. Bu, saldırıların daha etkili ve güvenlik önlemlerini aşma yeteneklerini artırıcı bir özelliktir.
--no-cast Payload döküm mekanizmasını kapatın

--no-cast parametresi, SQLMap'ın enjeksiyon sorgularında bu otomatik tip dönüşümlerini yapmamasını sağlar. Bu, belirli bir senaryoda tip dönüşümlerinin istenmeyen sonuçlar doğurabileceği durumlar için kullanışlıdır. Örneğin, bazı veritabanı yönetim sistemlerinde tür dönüşümleri yetersiz veya hatalı olabilir ve bu durumda --no-cast parametresi kullanılarak dönüşümler devre dışı bırakılabilir.
--os-cmd=OSCMD Bir işletim sistemi komutunu çalıştırma

--os-shell Etkileşimli bir işletim sistemi kabuğu ister

--os-cmd=OSCMD:Bu parametre, hedef veritabanı sunucusunda belirtilen OSCMD (Operating System Command) komutunu çalıştırmak için kullanılır. SQL enjeksiyon açığına sahip bir hedef üzerinde bu parametre ile birlikte komut çalıştırabilirsiniz. Bu, veritabanı sunucusunun işletim sistemine bağlı komutlar (örneğin, ping, ls, dir gibi) çalıştırmak için kullanışlı olabilir.

--os-shell:Bu parametre, hedef veritabanı sunucusunda etkileşimli bir kabuk (shell) açmak için kullanılır. SQLMap, hedef sunucuda bir kabuk oluşturarak kullanıcıya doğrudan komut girmek ve komut çıktılarını görmek için bir ortam sağlar. Bu, hedef sunucuda daha geniş bir etkileşim ve kontrol sağlamak için kullanışlıdır.

Umarım okunaklı ve faydalı olmuştur tekrar görüşmek üzere

80cpc3y.png
Eline sağlık novem başarılı (y)👏
 

TheKAY

Yeni üye
13 Şub 2023
45
20
mai667w.png


Merhaba TurkHackTeam. Bugün konumuz SQLMAP

cymeut5.png

SQL Enjeksiyon Nedir?

SQL enjeksiyon, kötü niyetli kişilerin bir web uygulamasına, veritabanı sorgularını manipüle ederek izinsiz erişim sağlama tekniğidir. Bu tür saldırılar, uygulamanın güvenlik açığı sayesinde gerçekleştirilir ve sıklıkla kullanıcı tarafından sağlanan giriş verilerinin doğru bir şekilde filtrelenmediği durumlarda ortaya çıkar.

SQLMap Temel İşlevleri

  1. Otomatik Algılama: SQLMap, hedeflenen web uygulamasındaki potansiyel SQL enjeksiyon noktalarını otomatik olarak algılayabilir. Bu sayede güvenlik testi uzmanları, potansiyel zayıf noktaları manuel olarak aramak yerine SQLMap'i kullanarak bu noktaları hızla tespit edebilirler.
  2. Veritabanı Keşfi: SQLMap, hedeflenen veritabanının yapısal bilgilerini (tablo isimleri, sütunlar, ilişkiler vb.) otomatik olarak keşfedebilir.
  3. Veri Çekme: SQLMap, hedeflenen veritabanından veri çekmek için kullanılabilir. Bu sayede saldırganlar, kullanıcı adları, şifreler ve diğer hassas bilgileri ele geçirebilirler.
  4. Veritabanı Erişimi ve Yetki Yükseltme: SQLMap, hedeflenen veritabanına erişim sağlama ve gerektiğinde kullanıcı yetkilerini yükseltme yeteneğine sahiptir.
  5. Dosya Sistemi Erişimi: SQLMap, hedeflenen sunucunun dosya sistemi üzerinde gezinme yeteneğine sahiptir. Bu, saldırganların hassas sistem dosyalarına erişim sağlayabileceği anlamına gelir.
  6. Komut İstemi Oluşturma: SQLMap, hedef sunucuda komut çalıştırma yeteneğine sahiptir. Bu sayede saldırganlar, hedef sistemi ele geçirmek için kullanabilecekleri komutları çalıştırabilirler.
  7. Tam Özelleştirme: SQLMap, kullanıcıların hedeflenen saldırı senaryolarını ve istekleri tamamen özelleştirmelerine olanak tanır. Bu, daha karmaşık saldırıları gerçekleştirmek isteyen uzmanlar için önemlidir.
  8. Raporlama: SQLMap, tespit edilen güvenlik açıkları hakkında detaylı raporlar oluşturabilir. Bu raporlar, güvenlik testi sonuçlarını yönetim veya geliştirme ekibiyle paylaşmak için kullanılabilir.

SQLMap Kullanımı

İlk olarak, bazı basit parametrelerin kullanımına dair örneklerle başlayalım.(Temeli biliyorsanız bu kısmı geçebilirsiniz)
Hedef URL belirtme
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4”
-u ya da --url parametresi yukarıdaki kullanımda da görüldüğü üzere sqlmap’e hedef sitenin URL’ini tanıtır

Mevcut veri tabanlarının listesine bakma

Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” --dbs
Yukarıdaki örenekde görüldüğü üzere --dbs parametresini ekleyerek mevcut veri tabanlarının listesini ekrana getirebiliriz.

Tablo,Kolon ve Kayıtlar
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME --tables
Yukarıda -D "DataBaseName" belirtip --tables parametresi ilede tabloları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME --columns
Yukarıda -T "TabloName" belirtip --columns parametresi ile kolonları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME -C "KOLONNAME" --dump
Yukarıda -C "KolonName" belirtip --dump parametresi ilede veriyi çektik -C kullanırken örnek kullanıcıadı,parola şeklinde aralarını virgül ile ayırarak birden fazla kolonu aynanda çekebiliriz
-D: Bu parametre ile veri tabanı adını belirtmiş olduk.
--tables: Belirttiğimiz veri tabanındaki tablo isimlerini getirmek için bu parametre kullanılır.
-T: Tablo isimleri de alındıktan sonra kolonlarına ulaşılması istenen tablo adı bu parametre ile birlikte yazılır.
--columns: Adı belirtilen tablodaki kolonlar getirilir.
-C: İstenilen kolon adı yazılır.
--dump: Kolonlarda yer alan veriler ekrana yansıtılır.

Birden Fazla Hedefi Tarama

Sqlmap’in -m parametresiyle birden fazla URL’in taratılması mümkündür.
Öncelikle herhangi bir isimli txt dosyası oluşturuyoruz örneğin link.txt
txt dosya içeriği aşşağıdaki gibi olmalıdır

Kod:
http://php.testsparker.com/artist.php?id=2
http://aspnet.testsparker.com/blog/what-are-the-advantages-of-bitcoin-62/
http://192.168.1.38/index.php?action=gallery_view&gallery_id=1
http://localhost/index.php?action=test

Ardından path’i belirtilir
Kod:
qlmap -m "C:\Users\[USER]\Desktop\link.txt"

İstek Dosyası Yüklme

Bu işlemi gerçekleştirebilmek için -r parametresini kullanmak gerekir.
Herhangi bir proxy yazılımıyla araya girerek, yaptığımız isteği kopyalıyor ve bir metin dosyasına kaydediyoruz. Örneğin istek.txt adlı dosyaya ait içeriğin aşağıdaki gibi olduğunu varsayalım


Kod:
GET http://aspnet.testsparker.com/blog/how-does-bitcoin-work-63/ HTTP/1.1
Host: aspnet.testsparker.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=zpuu4rzda5rxued21mwqttd3; TestCookie=Hello

SQLMap de kullanımı şu şekilde olucak

Kod:
sqlmap -r "istek.txt"
Temek kullanım parametreleri bu şekildedir.

SQLMAP En çok kullanılan Paremetreler ve kullanım yerleri.

--random-agent--force-ssl--level=LEVEL --risk=RISK
Random Agent ismindende anlaşıldığı gibi Rastgele seçilen HTTP User-Agent başlık değerini kullanır

--random-agent kullanıldığında, SQLMap rastgele bir kullanıcı ajanı seçerek HTTP isteklerini gönderir. Bu, web sunucusunun normal kullanıcı trafiği gibi görünmesini sağlar ve saldırının tespit edilme olasılığını azaltabilir. Özellikle savunma mekanizmalarının ya da güvenlik cihazlarının saldırıları tespit etmeye çalıştığı durumlarda bu tür bir gizleme yöntemi etkili olabilir.
--force-ssl nedir? Force ssl yani SSL/HTTPS kullanımını zorlama

Hedef web uygulamasına sadece güvenli bir HTTPS bağlantısıyla erişilmesi gerektiğinde kullanılır. Bu durum, hedef web uygulamasının yalnızca HTTPS bağlantılarını kabul ettiği bir senaryoda geçerlidir. Bu, SQLMap'ın sadece HTTPS üzerinden iletişim kurmasını sağlar ve böylece tüm veri alışverişi şifrelenir.

Kullanım yerleri nelerdir?
Sadece HTTPS bağlantılarına izin veren bir hedef web uygulamasıyla çalışırken --force-ssl bayrağını kullanmanız gerekebilir.
LEVEL
Gerçekleştirilecek testlerin seviyesi (1-5, varsayılan 1)

RİSK
Gerçekleştirilecek testlerin riski (1-3, varsayılan 1)

--technique=TECH--time-sec=TIMESEC--current-user /
--current-db
--technique
Kullanılacak SQL enjeksiyon tekniklerini belirlemenizi sağlar (varsayılan "BEUSTQ")

Nedir bu Teknikler?
Öncelikle BEUSTQ tüm teknikleri temsil eder ve bunların açılımı şöyledir

  1. B: Boolean-Based (Boolean Tabanlı)
  2. E: Error-Based (Hata Tabanlı)
  3. U: Union-Based (Birleştirme Tabanlı)
  4. S: Stacked Queries (Yığılmış Sorgular)
  5. T: Time-Based Blind (Zaman Tabanlı Kör)
  6. Q: Inline Queries (Satır İçi Sorgular)
Her bir teknik, SQL enjeksiyon saldırılarını tespit etmek veya açıkları sömürmek için kullanılır. Örneğin, Boolean-Based teknik, bir SQL ifadesinin doğru veya yanlış olduğunu test ederek enjeksiyon zafiyetlerini tespit etmeye çalışırken, Time-Based Blind teknik, veritabanı sorgularının cevap verme süresini kullanarak enjeksiyonun varlığını belirlemeye çalışır.
--time-sec=TIMESEC DBMS yanıtını geciktirmek için saniye (varsayılan 5)

--time-sec=TIMESEC parametresi, SQLMap'ın bu tür saldırıları gerçekleştirirken beklemesi gereken süreyi belirtir. Bu süre, veritabanının cevap süresini beklemek ve sonuçları analiz etmek için kullanılır. TIMESEC, saniye cinsinden beklemek istediğiniz süreyi ifade eder.
--current-user DBMS geçerli kullanıcısını alır

--current-db DBMS geçerli veritabanını alır


--tamper=TAMPER--no-cast--os-cmd=OSCMD / --os-shell
--tamper=TAMPER Enjeksiyon verilerini kurcalamak için verilen kod(lar)ı kullanın

--tamper=TAMPER parametresi, SQLMap'a belirli bir "TAMPER" adlı modülün (dönüşüm veya değiştirme işlevi) kullanılmasını sağlar. SQLMap, SQL sorgularını bu modülleri kullanarak değiştirir ve ardından sonuçları analiz eder.

Örnek kullanım yerleri:

  1. Obfuskasyon (Obscuration): SQLMap'ın varsayılan olarak kullanılan bazı enjeksiyon dizesi değiştirme modülleri, enjekte edilen SQL kodunun tespit edilme olasılığını azaltmak için kullanılabilir.
  2. WAF (Web Application Firewall) Atlatma: Bazı Web Uygulama Güvenlik Duvarları (WAF'lar), SQL enjeksiyon saldırılarını engellemek için belirli dize kalıplarını izler. --tamper parametresi, bu tür korumaları aşmak veya engellemek için kullanılabilir.
  3. Veritabanı Özelliklerini Keşfetme: Belirli bir dönüşüm modülü kullanarak veritabanının özelliklerini keşfetmek ve veritabanına yönelik bilgi edinmek mümkün olabilir.
  4. Enjeksiyon Sonuçlarını Değiştirme: SQLMap'ın otomatik olarak oluşturduğu enjeksiyon dizesini özelleştirmek ve istediğiniz sonuçları almak için bu parametre kullanılabilir.
Özetle, --tamper parametresi, SQLMap'ın enjeksiyon sorgularını dönüştürmek veya değiştirmek için belirli modülleri kullanmanızı sağlar. Bu, saldırıların daha etkili ve güvenlik önlemlerini aşma yeteneklerini artırıcı bir özelliktir.
--no-cast Payload döküm mekanizmasını kapatın

--no-cast parametresi, SQLMap'ın enjeksiyon sorgularında bu otomatik tip dönüşümlerini yapmamasını sağlar. Bu, belirli bir senaryoda tip dönüşümlerinin istenmeyen sonuçlar doğurabileceği durumlar için kullanışlıdır. Örneğin, bazı veritabanı yönetim sistemlerinde tür dönüşümleri yetersiz veya hatalı olabilir ve bu durumda --no-cast parametresi kullanılarak dönüşümler devre dışı bırakılabilir.
--os-cmd=OSCMD Bir işletim sistemi komutunu çalıştırma

--os-shell Etkileşimli bir işletim sistemi kabuğu ister

--os-cmd=OSCMD:Bu parametre, hedef veritabanı sunucusunda belirtilen OSCMD (Operating System Command) komutunu çalıştırmak için kullanılır. SQL enjeksiyon açığına sahip bir hedef üzerinde bu parametre ile birlikte komut çalıştırabilirsiniz. Bu, veritabanı sunucusunun işletim sistemine bağlı komutlar (örneğin, ping, ls, dir gibi) çalıştırmak için kullanışlı olabilir.

--os-shell:Bu parametre, hedef veritabanı sunucusunda etkileşimli bir kabuk (shell) açmak için kullanılır. SQLMap, hedef sunucuda bir kabuk oluşturarak kullanıcıya doğrudan komut girmek ve komut çıktılarını görmek için bir ortam sağlar. Bu, hedef sunucuda daha geniş bir etkileşim ve kontrol sağlamak için kullanışlıdır.

Umarım okunaklı ve faydalı olmuştur tekrar görüşmek üzere

80cpc3y.png
eline sağlık
 

Agent-47

Katılımcı Üye
23 Mar 2023
415
265
HACKERİSTAN
eline sağlık novem. sanki alıntılama var yada chat gpt konuya eklenmiş biraz. tamper parametresini bide no cast param ını burda anlatamadın gibi geldi bana normalde ben tamper komudunu bilirim ama başka okuyan anlamayabilir bide keşke --hex parametresini de anlatsaydın, güzel olurdu. onun dışında konun çok güzel olmuş eline sağlık :) he bide yanlışlıkla konu paylaşım olayı bende de oluyor çok kötü bir durum :D
 

Rangerrr

Üye
3 Kas 2022
90
45
Sunucuların İçinde
mai667w.png


Merhaba TurkHackTeam. Bugün konumuz SQLMAP

cymeut5.png

SQL Enjeksiyon Nedir?

SQL enjeksiyon, kötü niyetli kişilerin bir web uygulamasına, veritabanı sorgularını manipüle ederek izinsiz erişim sağlama tekniğidir. Bu tür saldırılar, uygulamanın güvenlik açığı sayesinde gerçekleştirilir ve sıklıkla kullanıcı tarafından sağlanan giriş verilerinin doğru bir şekilde filtrelenmediği durumlarda ortaya çıkar.

SQLMap Temel İşlevleri

  1. Otomatik Algılama: SQLMap, hedeflenen web uygulamasındaki potansiyel SQL enjeksiyon noktalarını otomatik olarak algılayabilir. Bu sayede güvenlik testi uzmanları, potansiyel zayıf noktaları manuel olarak aramak yerine SQLMap'i kullanarak bu noktaları hızla tespit edebilirler.
  2. Veritabanı Keşfi: SQLMap, hedeflenen veritabanının yapısal bilgilerini (tablo isimleri, sütunlar, ilişkiler vb.) otomatik olarak keşfedebilir.
  3. Veri Çekme: SQLMap, hedeflenen veritabanından veri çekmek için kullanılabilir. Bu sayede saldırganlar, kullanıcı adları, şifreler ve diğer hassas bilgileri ele geçirebilirler.
  4. Veritabanı Erişimi ve Yetki Yükseltme: SQLMap, hedeflenen veritabanına erişim sağlama ve gerektiğinde kullanıcı yetkilerini yükseltme yeteneğine sahiptir.
  5. Dosya Sistemi Erişimi: SQLMap, hedeflenen sunucunun dosya sistemi üzerinde gezinme yeteneğine sahiptir. Bu, saldırganların hassas sistem dosyalarına erişim sağlayabileceği anlamına gelir.
  6. Komut İstemi Oluşturma: SQLMap, hedef sunucuda komut çalıştırma yeteneğine sahiptir. Bu sayede saldırganlar, hedef sistemi ele geçirmek için kullanabilecekleri komutları çalıştırabilirler.
  7. Tam Özelleştirme: SQLMap, kullanıcıların hedeflenen saldırı senaryolarını ve istekleri tamamen özelleştirmelerine olanak tanır. Bu, daha karmaşık saldırıları gerçekleştirmek isteyen uzmanlar için önemlidir.
  8. Raporlama: SQLMap, tespit edilen güvenlik açıkları hakkında detaylı raporlar oluşturabilir. Bu raporlar, güvenlik testi sonuçlarını yönetim veya geliştirme ekibiyle paylaşmak için kullanılabilir.

SQLMap Kullanımı

İlk olarak, bazı basit parametrelerin kullanımına dair örneklerle başlayalım.(Temeli biliyorsanız bu kısmı geçebilirsiniz)
Hedef URL belirtme
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4”
-u ya da --url parametresi yukarıdaki kullanımda da görüldüğü üzere sqlmap’e hedef sitenin URL’ini tanıtır

Mevcut veri tabanlarının listesine bakma

Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” --dbs
Yukarıdaki örenekde görüldüğü üzere --dbs parametresini ekleyerek mevcut veri tabanlarının listesini ekrana getirebiliriz.

Tablo,Kolon ve Kayıtlar
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME --tables
Yukarıda -D "DataBaseName" belirtip --tables parametresi ilede tabloları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME --columns
Yukarıda -T "TabloName" belirtip --columns parametresi ile kolonları getirdik
Kod:
sqlmap -u “http://aspnet.testsparker.com/Products.aspx?pId=4” -D DATABASENAME -T TABLONAME -C "KOLONNAME" --dump
Yukarıda -C "KolonName" belirtip --dump parametresi ilede veriyi çektik -C kullanırken örnek kullanıcıadı,parola şeklinde aralarını virgül ile ayırarak birden fazla kolonu aynanda çekebiliriz
-D: Bu parametre ile veri tabanı adını belirtmiş olduk.
--tables: Belirttiğimiz veri tabanındaki tablo isimlerini getirmek için bu parametre kullanılır.
-T: Tablo isimleri de alındıktan sonra kolonlarına ulaşılması istenen tablo adı bu parametre ile birlikte yazılır.
--columns: Adı belirtilen tablodaki kolonlar getirilir.
-C: İstenilen kolon adı yazılır.
--dump: Kolonlarda yer alan veriler ekrana yansıtılır.

Birden Fazla Hedefi Tarama

Sqlmap’in -m parametresiyle birden fazla URL’in taratılması mümkündür.
Öncelikle herhangi bir isimli txt dosyası oluşturuyoruz örneğin link.txt
txt dosya içeriği aşşağıdaki gibi olmalıdır

Kod:
http://php.testsparker.com/artist.php?id=2
http://aspnet.testsparker.com/blog/what-are-the-advantages-of-bitcoin-62/
http://192.168.1.38/index.php?action=gallery_view&gallery_id=1
http://localhost/index.php?action=test

Ardından path’i belirtilir
Kod:
qlmap -m "C:\Users\[USER]\Desktop\link.txt"

İstek Dosyası Yüklme

Bu işlemi gerçekleştirebilmek için -r parametresini kullanmak gerekir.
Herhangi bir proxy yazılımıyla araya girerek, yaptığımız isteği kopyalıyor ve bir metin dosyasına kaydediyoruz. Örneğin istek.txt adlı dosyaya ait içeriğin aşağıdaki gibi olduğunu varsayalım


Kod:
GET http://aspnet.testsparker.com/blog/how-does-bitcoin-work-63/ HTTP/1.1
Host: aspnet.testsparker.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=zpuu4rzda5rxued21mwqttd3; TestCookie=Hello

SQLMap de kullanımı şu şekilde olucak

Kod:
sqlmap -r "istek.txt"
Temek kullanım parametreleri bu şekildedir.

SQLMAP En çok kullanılan Paremetreler ve kullanım yerleri.

--random-agent--force-ssl--level=LEVEL --risk=RISK
Random Agent ismindende anlaşıldığı gibi Rastgele seçilen HTTP User-Agent başlık değerini kullanır

--random-agent kullanıldığında, SQLMap rastgele bir kullanıcı ajanı seçerek HTTP isteklerini gönderir. Bu, web sunucusunun normal kullanıcı trafiği gibi görünmesini sağlar ve saldırının tespit edilme olasılığını azaltabilir. Özellikle savunma mekanizmalarının ya da güvenlik cihazlarının saldırıları tespit etmeye çalıştığı durumlarda bu tür bir gizleme yöntemi etkili olabilir.
--force-ssl nedir? Force ssl yani SSL/HTTPS kullanımını zorlama

Hedef web uygulamasına sadece güvenli bir HTTPS bağlantısıyla erişilmesi gerektiğinde kullanılır. Bu durum, hedef web uygulamasının yalnızca HTTPS bağlantılarını kabul ettiği bir senaryoda geçerlidir. Bu, SQLMap'ın sadece HTTPS üzerinden iletişim kurmasını sağlar ve böylece tüm veri alışverişi şifrelenir.

Kullanım yerleri nelerdir?
Sadece HTTPS bağlantılarına izin veren bir hedef web uygulamasıyla çalışırken --force-ssl bayrağını kullanmanız gerekebilir.
LEVEL
Gerçekleştirilecek testlerin seviyesi (1-5, varsayılan 1)

RİSK
Gerçekleştirilecek testlerin riski (1-3, varsayılan 1)

--technique=TECH--time-sec=TIMESEC--current-user /
--current-db
--technique
Kullanılacak SQL enjeksiyon tekniklerini belirlemenizi sağlar (varsayılan "BEUSTQ")

Nedir bu Teknikler?
Öncelikle BEUSTQ tüm teknikleri temsil eder ve bunların açılımı şöyledir

  1. B: Boolean-Based (Boolean Tabanlı)
  2. E: Error-Based (Hata Tabanlı)
  3. U: Union-Based (Birleştirme Tabanlı)
  4. S: Stacked Queries (Yığılmış Sorgular)
  5. T: Time-Based Blind (Zaman Tabanlı Kör)
  6. Q: Inline Queries (Satır İçi Sorgular)
Her bir teknik, SQL enjeksiyon saldırılarını tespit etmek veya açıkları sömürmek için kullanılır. Örneğin, Boolean-Based teknik, bir SQL ifadesinin doğru veya yanlış olduğunu test ederek enjeksiyon zafiyetlerini tespit etmeye çalışırken, Time-Based Blind teknik, veritabanı sorgularının cevap verme süresini kullanarak enjeksiyonun varlığını belirlemeye çalışır.
--time-sec=TIMESEC DBMS yanıtını geciktirmek için saniye (varsayılan 5)

--time-sec=TIMESEC parametresi, SQLMap'ın bu tür saldırıları gerçekleştirirken beklemesi gereken süreyi belirtir. Bu süre, veritabanının cevap süresini beklemek ve sonuçları analiz etmek için kullanılır. TIMESEC, saniye cinsinden beklemek istediğiniz süreyi ifade eder.
--current-user DBMS geçerli kullanıcısını alır

--current-db DBMS geçerli veritabanını alır


--tamper=TAMPER--no-cast--os-cmd=OSCMD / --os-shell
--tamper=TAMPER Enjeksiyon verilerini kurcalamak için verilen kod(lar)ı kullanın

--tamper=TAMPER parametresi, SQLMap'a belirli bir "TAMPER" adlı modülün (dönüşüm veya değiştirme işlevi) kullanılmasını sağlar. SQLMap, SQL sorgularını bu modülleri kullanarak değiştirir ve ardından sonuçları analiz eder.

Örnek kullanım yerleri:

  1. Obfuskasyon (Obscuration): SQLMap'ın varsayılan olarak kullanılan bazı enjeksiyon dizesi değiştirme modülleri, enjekte edilen SQL kodunun tespit edilme olasılığını azaltmak için kullanılabilir.
  2. WAF (Web Application Firewall) Atlatma: Bazı Web Uygulama Güvenlik Duvarları (WAF'lar), SQL enjeksiyon saldırılarını engellemek için belirli dize kalıplarını izler. --tamper parametresi, bu tür korumaları aşmak veya engellemek için kullanılabilir.
  3. Veritabanı Özelliklerini Keşfetme: Belirli bir dönüşüm modülü kullanarak veritabanının özelliklerini keşfetmek ve veritabanına yönelik bilgi edinmek mümkün olabilir.
  4. Enjeksiyon Sonuçlarını Değiştirme: SQLMap'ın otomatik olarak oluşturduğu enjeksiyon dizesini özelleştirmek ve istediğiniz sonuçları almak için bu parametre kullanılabilir.
Özetle, --tamper parametresi, SQLMap'ın enjeksiyon sorgularını dönüştürmek veya değiştirmek için belirli modülleri kullanmanızı sağlar. Bu, saldırıların daha etkili ve güvenlik önlemlerini aşma yeteneklerini artırıcı bir özelliktir.
--no-cast Payload döküm mekanizmasını kapatın

--no-cast parametresi, SQLMap'ın enjeksiyon sorgularında bu otomatik tip dönüşümlerini yapmamasını sağlar. Bu, belirli bir senaryoda tip dönüşümlerinin istenmeyen sonuçlar doğurabileceği durumlar için kullanışlıdır. Örneğin, bazı veritabanı yönetim sistemlerinde tür dönüşümleri yetersiz veya hatalı olabilir ve bu durumda --no-cast parametresi kullanılarak dönüşümler devre dışı bırakılabilir.
--os-cmd=OSCMD Bir işletim sistemi komutunu çalıştırma

--os-shell Etkileşimli bir işletim sistemi kabuğu ister

--os-cmd=OSCMD:Bu parametre, hedef veritabanı sunucusunda belirtilen OSCMD (Operating System Command) komutunu çalıştırmak için kullanılır. SQL enjeksiyon açığına sahip bir hedef üzerinde bu parametre ile birlikte komut çalıştırabilirsiniz. Bu, veritabanı sunucusunun işletim sistemine bağlı komutlar (örneğin, ping, ls, dir gibi) çalıştırmak için kullanışlı olabilir.

--os-shell:Bu parametre, hedef veritabanı sunucusunda etkileşimli bir kabuk (shell) açmak için kullanılır. SQLMap, hedef sunucuda bir kabuk oluşturarak kullanıcıya doğrudan komut girmek ve komut çıktılarını görmek için bir ortam sağlar. Bu, hedef sunucuda daha geniş bir etkileşim ve kontrol sağlamak için kullanışlıdır.

Umarım okunaklı ve faydalı olmuştur tekrar görüşmek üzere

80cpc3y.png
eline sağlık
 
Ü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.