- vừa được xem lúc

【Mới Nhất 2025】20 Kỹ Thuật Nâng Cao Với SQLMap! Hướng Dẫn Đầy Đủ Kiểm Tra Xâm Nhập API Từ Kỹ Sư Chuyên Nghiệp

0 0 6

Người đăng: Quang

Theo Viblo Asia

Xin chào, Gần đây, sau khi phát hiện lỗ hổng SQL Injection trong một dự án và ngạc nhiên "Thật sao... năm 2025 rồi mà!", tôi muốn chia sẻ cách sử dụng thực tế của SQLMap.

Bạn có nghĩ rằng SQL Injection chỉ là "lỗ hổng của quá khứ" không? Tôi cũng từng nghĩ vậy, nhưng theo nghiên cứu của OWASP, nó vẫn nằm trong top 10 lỗ hổng của ứng dụng web. Đặc biệt, trong các hệ thống dựa trên API gần đây, nó đang xuất hiện trở lại dưới những hình thức mới.

Lần này tôi sẽ giới thiệu 20 kỹ thuật nâng cao với SQLMap mà tôi thực sự đang sử dụng. Tất nhiên, tất cả đều dành cho mục đích kiểm tra trong môi trường được phép! Tuyệt đối không sử dụng cho mục đích truy cập trái phép.

1. Bộ Kỹ Thuật Thăm Dò và Né Tránh

Thăm Dò Payload Theo Cấp Độ

sqlmap -u "http://site.com?id=1" --level=5 --risk=3

Điều đầu tiên nên thử là tăng cường các tùy chọn cơ bản. Khi chỉ định --level=5, không chỉ các tham số GET thông thường mà cả Cookie, User-Agent, Referer, X-Forwarded-For và các header khác cũng trở thành đối tượng điều tra.

Theo kinh nghiệm của tôi, nhiều nhà phát triển chỉ bảo vệ các tham số GET và dễ bỏ qua việc tiêm qua header. Đặc biệt cần chú ý khi cải tiến hệ thống cũ!

Bypass WAF Bằng "Truyền Tải Phân Đoạn"

sqlmap -u "http://site.com?id=1" --chunked

Đây là một kỹ thuật thực sự hữu ích. Nhiều WAF xem xét toàn bộ yêu cầu HTTP trước khi lọc, nhưng khi sử dụng tùy chọn --chunked, yêu cầu được chia thành các phần nhỏ để gửi, do đó có thể tránh được sự phát hiện của WAF.

Trong một dự án gần đây, tôi đã có thể bypass một trang web sử dụng WAF nổi tiếng chỉ với tùy chọn này. Tất nhiên, tôi đã báo cáo ngay cho khách hàng để họ sửa chữa!

Mẫu Tiêm Vào URL Giả Tĩnh

sqlmap -u "http://site.com/article/123*.html" --prefix="')" --suffix="-- -"

Các trang web gần đây thường có nhiều URL giả tĩnh. Ngay cả với những URL như vậy, bạn vẫn có thể kiểm tra SQL Injection bằng cách sử dụng --prefix--suffix.

Quét Ẩn Danh Qua Chuỗi Proxy Nhiều Tầng

sqlmap -u "http://site.com?id=1" --proxy="socks5://127.0.0.1:9050"

Trong kinh nghiệm thực tế, việc sử dụng mạng Tor hoặc nhóm proxy để ẩn địa chỉ IP thực rất hiệu quả. Với kỹ thuật này, bạn có thể thực hiện đánh giá bảo mật trong khi tránh bị theo dõi bởi quản trị viên hệ thống mục tiêu. Đặc biệt, ngay cả trong các bài kiểm tra xâm nhập được cấp phép hợp pháp, việc duy trì tính ẩn danh cho phép mô phỏng kịch bản tấn công thực tế hơn.

Nhận Dạng Dấu Vân Tay WAF và Bypass Tự Động

sqlmap -u "http://site.com?id=1" --identify-waf --tamper="apostrophemask,between"

Trong các dự án thực tế, việc xác định loại WAF trước tiên là quan trọng. Với tùy chọn --identify-waf, bạn có thể tự động phát hiện các WAF chính như Cloudflare hoặc ModSecurity. Hơn nữa, bằng cách kết hợp với script --tamper, bạn có thể tự động áp dụng các biện pháp né tránh đối với WAF đã phát hiện. Tôi luôn chỉ định nhiều script tamper được phân tách bằng dấu phẩy để tăng tỷ lệ thành công.

Kỹ Thuật Gây Nhiễu Lưu Lượng Giả

sqlmap -u "http://site.com?id=1" --null-connection --invalid-bignum

Tôi cũng có một số kỹ thuật để gây nhiễu hệ thống phát hiện tấn công. --null-connection chỉ lấy độ dài phản hồi thay vì nội dung, do đó giảm lượng lưu lượng. Ngoài ra, --invalid-bignum sử dụng các số lớn bất thường để tránh WAF đơn giản. Kết hợp các tùy chọn này có thể làm cho việc phát hiện khó khăn hơn ngay cả với hệ thống phòng thủ tiên tiến.

Trong các bài kiểm tra bảo mật nội bộ, đôi khi bạn muốn không thể xác định "truy cập từ đâu" từ nhật ký. Trong những trường hợp như vậy, tốt nhất là đi qua mạng Tor.

2. Kỹ Thuật Tối Ưu Hóa Trích Xuất Dữ Liệu

Trích Xuất An Toàn Dữ Liệu Nhị Phân

sqlmap -u "http://site.com?id=1" --dump -T users -C password --hex

Khi trích xuất dữ liệu nhị phân như mật khẩu băm, sử dụng tùy chọn --hex là an toàn. Tôi nhớ những ngày tôi đã phải vật lộn với dữ liệu bị hỏng vì không biết điều này...

Trích Xuất Hiệu Quả Từ Cơ Sở Dữ Liệu Lớn

sqlmap -u "http://site.com?id=1" --dump -D dbname --start=1000 --stop=2000

Khi xử lý cơ sở dữ liệu lớn, thay vì cố gắng trích xuất tất cả bản ghi cùng một lúc, việc chỉ định phạm vi với --start--stop sẽ hiệu quả hơn. Ngay cả trong môi trường kiểm tra, tôi cũng sử dụng phương pháp này để tránh tải không cần thiết cho máy chủ.

Cách Trích Xuất Chỉ Người Dùng Gmail

sqlmap -u "http://site.com?id=1" -D db -T users -C email --regex=".*@gmail\.com"

Sử dụng biểu thức chính quy, bạn có thể trích xuất chỉ dữ liệu phù hợp với một mẫu cụ thể. Ví dụ, điều này hữu ích khi bạn chỉ muốn trích xuất người dùng Gmail.

Điều Chỉnh SQL Injection Mù Dựa Trên Thời Gian

sqlmap -u "http://site.com?id=1" --time-sec=15 --technique=T

SQL Injection mù dựa trên thời gian phụ thuộc vào thời gian phản hồi của máy chủ, vì vậy cần điều chỉnh theo môi trường. Bạn có thể điều chỉnh thời gian chờ với --time-sec và chuyên biệt hóa cho các cuộc tấn công dựa trên thời gian với --technique=T.

Tính Năng Tạo Báo Cáo Tự Động

sqlmap -u "http://site.com?id=1" --dump --output-dir=/reports --report=report.html

Tính năng báo cáo HTML rất tiện lợi khi báo cáo cho cấp trên hoặc đồng nghiệp. Với tùy chọn --report, một báo cáo dễ đọc sẽ được tạo tự động.

3. Kỹ Thuật Thao Tác Hệ Thống và Nâng Cao Đặc Quyền

Kiểm Tra Thực Thi Lệnh OS

sqlmap -u "http://site.com?id=1" --os-cmd="whoami" --priv-esc

Thực thi lệnh OS là cách tối ưu để chứng minh mối nguy hiểm của SQL Injection. Bạn có thể thực thi lệnh với --os-cmd và kiểm tra khả năng nâng cao đặc quyền với --priv-esc.

Kiểm Tra Đọc Tập Tin Quan Trọng

sqlmap -u "http://site.com?id=1" --file-read="/etc/passwd"

Sử dụng chức năng đọc tập tin, bạn có thể kiểm tra xem có thể truy cập các tập tin quan trọng trên máy chủ hay không. Thật đáng sợ nếu điều này thành công...

Mở Rộng Đặc Quyền Thông Qua Tiêm UDF

sqlmap -u "http://site.com?id=1" --udf-inject --shared-lib="/tmp/lib.so"

Trong MySQL hoặc PostgreSQL, đôi khi có thể mở rộng đặc quyền cơ sở dữ liệu bằng cách tiêm UDF (Hàm Định Nghĩa Người Dùng). Đây là một kỹ thuật khá cao cấp, nhưng biết về nó có thể hữu ích.

Liên Kết Với Metasploit

sqlmap -u "http://site.com?id=1" --os-pwn --msf-path=/opt/metasploit

Trong các bài kiểm tra xâm nhập chuyên nghiệp, đôi khi SQLMap được liên kết với Metasploit. Với tùy chọn --os-pwn, bạn có thể tự động hóa từ SQL Injection đến việc lấy shell.

4. Kỹ Thuật Ứng Dụng Trong Môi Trường API Hiện Đại

Hầu hết các ứng dụng web gần đây đều dựa trên API. SQLMap cũng có thể được sử dụng trong những môi trường như vậy.

Kiểm Tra Đối Phó Với Token CSRF

sqlmap -u "http://site.com/form" --csrf-token="token" --csrf-url="http://site.com/get_token"

Nhiều ứng dụng gần đây sử dụng token CSRF, nhưng SQLMap cũng đối phó được với điều này. Chỉ định --csrf-token--csrf-url sẽ tự động lấy và sử dụng token.

Phương Pháp Kiểm Tra JSON API

sqlmap -u "http://site.com/api" --data='{"id":1}' --headers="Content-Type: application/json"

Đối với các yêu cầu JSON như REST API, bạn có thể kiểm tra bằng cách chỉ định JSON với tùy chọn --data và thiết lập header thích hợp. Trong các dự án gần đây, mẫu này phổ biến hơn.

Kiểm Tra Ô Nhiễm Tham Số HTTP

sqlmap -u "http://site.com?id=1&id=2" --param-del="&"

Ô nhiễm tham số HTTP (HPP) là một lỗ hổng xảy ra khi chỉ định cùng một tham số nhiều lần. Bạn có thể kiểm tra mẫu này với tùy chọn --param-del.

Phát Hiện Tiêm Thứ Cấp

sqlmap -u "http://site.com/register" --forms --second-url="http://site.com/profile"

SQL Injection thứ cấp là một lỗ hổng xảy ra khi dữ liệu đã lưu trong cơ sở dữ liệu được lấy ra ở một trang khác. Bạn có thể kiểm tra mẫu này với tùy chọn --second-url.

Tăng Tốc Với Đa Luồng

sqlmap -u "http://site.com?id=1" --threads=5 --optimize

Trong các bài kiểm tra quy mô lớn, bạn có thể giảm đáng kể thời gian kiểm tra bằng cách đa luồng hóa với tùy chọn --threads và tối ưu hóa với --optimize. Tuy nhiên, cần chú ý vì điều này có thể tạo tải cho máy chủ.

Sử Dụng Hợp Pháp và Phương Pháp Phòng Thủ

Tất cả các kỹ thuật đã giới thiệu đều dành cho kiểm tra bảo mật trong môi trường được phép. Kiểm tra trái phép có thể vi phạm pháp luật, vì vậy tuyệt đối không làm điều đó.

Thực tế, trong phát triển hàng ngày, tôi thường sử dụng "công cụ phòng thủ" nhiều hơn "công cụ tấn công". Đặc biệt, công cụ Apidog rất tiện lợi cho kiểm tra bảo mật API.

Ưu điểm của Apidog:

  • Kiểm tra API với GUI trực quan: Dễ sử dụng ngay cả đối với những người không quen với dòng lệnh của SQLMap
  • Chức năng kiểm tra bảo mật tự động: Tự động kiểm tra các lỗ hổng cơ bản như SQL Injection và XSS
  • Chia sẻ và tài liệu hóa nhóm: Dễ dàng chia sẻ kết quả kiểm tra, lý tưởng cho phát triển nhóm apidog

Tóm Tắt: Cách Tiếp Cận Hai Mặt Là Mạnh Nhất

Điều tôi học được từ thực tế là tầm quan trọng của việc có cả "góc nhìn của kẻ tấn công" và "góc nhìn của người phòng thủ". Bằng cách hiểu cơ chế của các công cụ tấn công như SQLMap, bạn có thể đưa ra các biện pháp phòng thủ hiệu quả hơn.

  • SQLMap: Tối ưu để phát hiện lỗ hổng hệ thống từ góc nhìn của kẻ tấn công
  • Apidog: Tối ưu để đảm bảo bảo mật API từ góc nhìn của nhà phát triển

Nếu bạn có thể sử dụng thành thạo cả hai công cụ, phạm vi kiểm tra bảo mật của bạn sẽ mở rộng đáng kể!

Cuối cùng, hãy nhớ rằng kiểm tra bảo mật là để "xây dựng" chứ không phải "phá hủy". Hãy báo cáo các lỗ hổng bạn phát hiện một cách có trách nhiệm và đóng góp vào việc thực hiện web an toàn hơn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Các mô hình phát triển phần mềm

1. Định nghĩa. Mô hình phát triển phần mềm hay quy trình phát triển phần mềm xác định các pha/ giai đoạn trong xây dựng phần mềm. Có nhiều loại mô hình phát triển phần mềm khác nhau ví dụ như:.

0 0 131

- vừa được xem lúc

Tìm hiểu về kỹ thuật phân tích giá trị biên và phân vùng tương đương trong kiểm thử hộp đen

Để đảm bảo được chất lượng của một hoặc nhiều dự án phần mềm QA cần phải tạo được bộ testcase phù hợp.Để thực hiện việc kiểm tra phần mềm với thời gian ngắn nhất mà vẫn đạt chất lượng cao nhất cần phải hiểu sâu về nghiệp vụ của phần mềm và linh hoạt trong việc thiết kế testcase.

0 0 255

- vừa được xem lúc

Single Page Application Concept

Bạn đã từng nghe về một trang wed Single page hay chưa? Dạo gần đây Single page application là một cái tên đang nổi trong xu hướng phát triển web. Mặc dù concept này đã ra đời hơn chục năm nay.

0 0 70

- vừa được xem lúc

Top 15 xu thế kiểm thử phần mềm trong năm 2021

. Năm 2021 dự kiến những công nghệ sau sẽ lên ngôi:. . AI (Artificial intelligence) và ML (Machine Learning). Robotics.

0 1 259

- vừa được xem lúc

Xử lý Table, Frame và Dynamic Element của Web trong Selenium Script – Selenium Tutorial #18

Table, Frame và Dynamic Element là các phần thiết yếu không thể thiếu của bất kỳ web project nào. Chúng ta hãy cùng nhau tìm hiểu cách xử lý chúng trong tập lệnh selenium nhé.

0 0 113

- vừa được xem lúc

Exploratory testing - Kiểm thử thăm dò

I. Định nghĩa. 1. Exploratory testing là gì.

0 0 154