Một số thủ thuật để sử dụng SQLmap hiệu quả hơn

Thảo luận trong 'Audit/Pentest Security' bắt đầu bởi DDos, 27/06/20, 04:06 PM.

  1. DDos

    DDos Administrators Thành viên BQT

    Tham gia: 22/10/13, 08:10 PM
    Bài viết: 1,738
    Đã được thích: 398
    Điểm thành tích:
    83
    Khi nhắc đến công cụ tìm kiếm lỗ hổng SQL injection trong một website, chúng ta không thể không nhắc tới SQLmap. SQLmap là một công cụ toàn diện được viết trong ngôn ngữ lập trình python, có API riêng để tích hợp vào các ứng dụng dò quét bảo mật. Trong bài viết này, mình sẽ giới thiệu với các bạn các thủ thuật nhỏ mình hay sử dụng trong quá trình tìm lỗ hổng SQLi sử dụng SQLmap.
    • Sử dụng SQLmap với các tamper để vượt qua tường lửa nhằm phát hiện lỗ hổng SQLi trong ứng dụng web.
    Hiện nay, hầu hết các trang web đã quan tâm tới yếu tố bảo mật hơn, các trang web thường sử dụng các biện pháp phát hiện và ngăn chặn tấn công web, gọi chung là tường lửa ứng dụng web (WAF). SQLmap trang bị cho bạn với các tamper nhằm mục đích vượt qua tường lửa. Các tamper này sử dụng các công nghệ mã hóa khác nhau, thủ thuật khác nhau. Khi dò lỗ hổng SQLi, câu lệnh mình hay sử dụng nhất đó là:
    Mã:
    sqlmap -u 'https://www.target.com/php_id=1’ --level=5 --risk=3 -p 'item1' --tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,percentage,randomcase,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes
    Để tiết kiệm thời gian hơn trong việc rò quét, nếu bạn đã biết chắc chắn hệ quản trị cơ sở dữ liệu trên ứng dụng web, thì bạn sử dụng các tamper dưới đây:
    + MSSQL
    Mã:
    tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes
    + MySQL
    Mã:
     tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,xforwardedfor
    • Tìm lỗ hổng SQLi trong yêu cầu POST
    Thông thường, các ứng dụng web tồn tại lỗ hổng SQLi trong các yêu cầu GET, nhưng đôi khi lỗ hổng SQLi lại bắt nguồn từ yêu cầu POST, chẳng hạn như khi bạn nhập username/password vào ứng dụng web là ví dụ điển hình cho một yêu cầu POST.
    Để đơn giản hóa quá trình sử dụng sqlmap trong tình huống này, bạn cần sử dụng burpsuite và lưu lại yêu cầu POST trong ứng dụng.
    Capture-1-1024x526.png
    Ở đây, mình lưu yêu cầu POST thành file ddos.txt. Để kiểm tra tham số title trong yêu cầu POST, bạn sử dụng SQLmap với lệnh
    Capture1-1.png
    • Dò quét nhiều trang web một lúc
    Theo mặc định, SQLmap sẽ chỉ quét một trang web nhất định đằng sau tham số "-u", trong trường hợp, bạn muốn SQLmap quét nhiều trang web một lúc. Thay vì phải sử dụng nhiều ứng dụng terminal khác nhau, bạn có thể yêu cầu SQLmap dò quét nhiều trang web đồng thời. Để làm được việc này, bạn làm như sau:
    + Lưu các yêu cầu tới ứng dụng web sử dụng burpsuite. Ở đây, bạn chọn các mục tiêu cụ thể, sau đó lưu lại
    Screenshot-from-2016-11-11-13-18-21.png
    Lưu các yêu cầu này thành một file có phần mở rộng là .bat. Sau đó sử dụng SQLmap với lệnh:
    Mã:
    sqlmap --batch -l /root/Desktop/target.bat
    3target.PNG
    • Sử dụng SQLmap với Google Dorking
    Sử dụng các từ khóa tìm kiếm nâng cao, giúp bạn dễ dàng phát hiện ra các trang web có thể tồn tại lỗ hổng SQLi. SQLmap tích hợp sẵn một tham số giúp bạn dò quét lần lượt tất cả các website hiển thị trong kết quả tìm kiếm của Google với từ khóa của bạn cung cấp. Để tự tích hợp SQLmap với Google dorking bạn làm như sau:
    + Mình sử dụng cụm từ khóa tìm kiếm "inurl:\"php?id=\". Câu lệnh sử dụng sẽ là:
    Mã:
    python sqlmap.py -g "inurl:\"php?id=\"" --random-agent -f --batch --answer="extending=N,follow=N,keep=N,exploit=n"
    target.PNG
    Như bạn có thể thấy trong hình trên, SQLmap tự động dò quét kết quả trang web đầu tiên hiển thị trên trang tìm kiếm Google. Quá trình này sẽ dừng lại cho đến khi không còn thấy kết quả trả về trong trang tìm kiếm.
    + Để thấy tất cả các mục tiêu mà SQLmap đã dò quét, bạn tìm đến thư mục .sqlmap (nó là một thư mục ẩn)
    Capture111.PNG

    Trong hình này, SQLmap đã kiểm tra 5 trang web. Trong file target.txt, bạn sẽ nhìn thấy đường dẫn mà SQLmap đã quét. File log, sẽ cho bạn thấy kết quả của quá trình quét.
    colum.PNG
    Cuối cùng, để dò quét một website nhất định mà bạn đang nhắm mục tiêu, bạn chỉ cần dùng lệnh: sqlmap --wizard và dán dường dẫn trong file target.txt là xong.
    • Sử dụng SQLmap với giao diện đồ họa
    Nếu bạn là một người mới làm quen với SQLmap hoặc thích sử dụng giao diện đồ họa hơn. Bạn có thể sử dụng giao diện đồ họa của SQLmap dễ dàng với project SQLmap-WebGUI.
    sqlmap-1024x755-1024x755.jpg
    Chi tiết và cách cài đặt, bạn có thể xem tại đây.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. g4m0xxx

    g4m0xxx Member

    Tham gia: 30/04/20, 04:04 PM
    Bài viết: 21
    Đã được thích: 3
    Điểm thành tích:
    3
    Hi.
    1. Thực tế thì sao dùng được nhiều tamper thế? Nếu dùng nhiều thì k exploit được, ít quá thì k bypass được.
    2. Mình có thử một trường hợp vs Post request, khi dùng burp suite repeater thì đc 200 status, còn sqlmap thì lại 302. Bác có thể giải thích giúp mình không?
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. DDos

    DDos Administrators Thành viên BQT

    Tham gia: 22/10/13, 08:10 PM
    Bài viết: 1,738
    Đã được thích: 398
    Điểm thành tích:
    83
    1. Được khuyến nghị là dùng khoảng 6 tamper một lúc thôi bạn nhé.
    2. Có thể do vấn đề session giữa Burpsuite và sqlmap, bạn có thể thêm tham số sessionid trong sqlmap xem sao.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. g4m0xxx

    g4m0xxx Member

    Tham gia: 30/04/20, 04:04 PM
    Bài viết: 21
    Đã được thích: 3
    Điểm thành tích:
    3
    Cảm ơn phản hồi của bác. Mình có thắc mắc nữa là vd như tamper thêm bớt comments thay đổi ký tự... kết hợp vs nhau đều có quy tắc. Vậy sao waf lại k phát hiện đc?
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. DDos

    DDos Administrators Thành viên BQT

    Tham gia: 22/10/13, 08:10 PM
    Bài viết: 1,738
    Đã được thích: 398
    Điểm thành tích:
    83
    Firewall hoạt động theo hai cơ chế blacklists và whitelists. Thông thường whitelists mạnh hơn blacklists nhưng ít khi được triển khai. Blacklists thì phụ thuộc vào người viết code firewall, có tamper thì firewall A phát hiện, firewall B thì không. Hơn nữa, sqlmap là mã nguồn mở, và được rất nhiều người dùng đóng góp mã, nên firewall thường sẽ cập nhật dạng chữ ký tấn công chậm hơn.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    g4m0xxx thích bài này.