Web1: SQL injection - Con đường khai thác phổ biến: qua “user input”.

Thảo luận trong 'Web Security' bắt đầu bởi Mask, 04/01/14, 04:01 PM.

  1. Mask

    Mask Moderator

    Tham gia: 03/07/13, 08:07 AM
    Bài viết: 25
    Đã được thích: 19
    Điểm thành tích:
    18
    Web1: SQL injection - Con đường khai thác phổ biến: qua “user input”.

    Giới thiệu

    Wikipedia: “Sql Injection (SQLi) là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp, Sql Injection có thể cho phép những kẻ tấn công thực hiện các thao tác, thêm, sửa, xóa… trên cơ sở dữ liệu của ứng dụng. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase...

    Sql Injection được mô tả như là một trong những lỗ hổng bảo mật web nguy hiểm nhất. Khai thác Sql Injection, ngoài việc đoạt được quyền kiểm soát về mặt dữ liệu như đã nói ở trên, hacker còn có thể cài đặt backdoor trên server mà ứng dụng đang chạy, qua đó kiểm soát toàn bộ hệ thống…

    Chúng ta sẽ cùng tìm hiểu về chủ đề này theo các chuyên đề nhỏ dưới đây:


    W1: SQL injection - Con đường khai thác phổ biến : qua “user input”

    User input điển hình thường đến từ các form nhập liệu, form search hay link… Những dữ liệu này được web browser gửi đến server thông qua phương thức HTTP GET hay POST và trở thành các tham số cho ứng dụng web truy cập tới cơ sở dữ liệu. Ví dụ như trong một form search, khi người dùng điền vào “Sql Injection”, đơn giản ứng dụng web sẽ truy cập cơ sở dữ liệu và tìm ra các bản ghi mà nội dung của nó chứa từ khóa “Sql Injection” để trả lại kết quả cho người dùng.

    [​IMG]

    Một trường hợp khác phổ biến hơn trong kỹ thuật tấn công Sql Injection, khi người dùng request một tài liệu mà các tham số của nó được truyền qua url (như ở ảnh minh họa bên dưới, tham số id được truyền qua url theo phương thức HTTP GET). Khi nhận được request, ứng dụng web tìm trong cơ sở dữ liệu và trả về cho người dùng bài viết có id=31.

    [​IMG]

    Sau đây là ví dụ về việc khai thác thông qua “user input”

    Các bạn có thể truy cập vào link sau: http://zixem.altervista.org/SQLi/level1.php?id=1

    [​IMG]

    Site này sẽ truy cập vào cơ sở dữ liệu và hiển thị cho người sử dụng Item IDPrice tương ứng với giá trị của biến id trên URL (ở đây id = 1).

    Dựa trên lỗ hổng của việc kiểm tra giá trị đầu vào của biến id, ta có thể khai thác và thực thi những câu lệnh SQL. Ở đây, ta sẽ thay đổi URL để lấy được phiên bản của hệ quản trị cơ sở dữ liệu và tên của cơ sở dữ liệu.

    Thay đổi biến id thành như sau: id=1 union select @@version,database(),6 limit 1,1. Sau đó gửi request đến web server.

    [​IMG]

    Như vậy, ta xác định được phiên bản của hệ quản trị cơ sở dữ liệu là MySQL 5.1.71-community-log và tên của cơ sở dữ liệu là my_zixem.

    Tùy vào các câu truy vấn chúng ta chèn vào mà chúng ta sẽ thu thập được những thông tin mong muốn hay những hành động phá hoại như xóa bảng trong cơ sở dữ liệu, upload shell lên web server phục vụ việc khai thác về sau. Chi tiết về các bước thực hiện để làm được những điều này sẽ được trình bày trong các chuyên đề sau.

    Các bạn quan tâm có thể theo dõi chuyên đề tiếp theo - "Web2 : SQL injection - Các con đường khai thác khác"
     
    Last edited by a moderator: 27/09/18, 12:09 PM
    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. vn5chau_com

    vn5chau_com W-------

    Tham gia: 22/02/14, 04:02 PM
    Bài viết: 8
    Đã được thích: 0
    Điểm thành tích:
    6
    Re: Web1: SQL injection - Con đường khai thác phổ biến: qua “user input”.

    upwhitehat.png

    cho e hỏi là làm sao mà a biết được điền union select @@version,database(),6 limit 1,1 sau id=1, e chưa hiểu lắm, a giải thích cho e được k? mà tại sao lại phải có dấu cách sau 1, union, select, 6, limit

    ma co pro nao o Hà Nội, có thể truyền cho e chút võ công k ạ ???? 097-479-5132.
    www.fb.com/admin.vn5chau
     
    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. Mask

    Mask Moderator

    Tham gia: 03/07/13, 08:07 AM
    Bài viết: 25
    Đã được thích: 19
    Điểm thành tích:
    18
    Re: Web1: SQL injection - Con đường khai thác phổ biến: qua “user input”.

    Bạn có thể tìm hiểu thêm về quá trình phát hiện lỗi SQLi tại http://whitehat.vn/threads/5459-Web4-SQL-injection-Cac-buoc-khai-thac.html.
    Dấu cách sau cách 1, union, select, 6, limit là do cấu trúc câu truy vấn SQL trong hệ quản trị cơ sở dữ liệu. Bạn nên tìm hiểu thêm về cấu trúc câu truy vấn trong các hệ quản trị cơ sở dữ liệu để hiểu rõ hơn.
     
    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. darkdragonking

    darkdragonking W-------

    Tham gia: 25/10/14, 04:10 PM
    Bài viết: 2
    Đã được thích: 0
    Điểm thành tích:
    1
    Re: Web1: SQL injection - Con đường khai thác phổ biến: qua “user input”.

    cho e hỏi là nếu đuôi ntn thì xử lí ntn ạ
    index.php?token=dea1df877f8d2d72b727b2976c6fc010
    a nào có thể chỉ e k ạ, e cảm ơn ạ,
    a nào có hứng thú thì nhận e làm đệ tử đc k ạ ^^
     
    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. learnhat

    learnhat W-------

    Tham gia: 22/10/14, 10:10 PM
    Bài viết: 35
    Đã được thích: 0
    Điểm thành tích:
    16
    Re: Web1: SQL injection - Con đường khai thác phổ biến: qua “user input”.

    em cũng chưa rõ, mong có cao thủ nào ghé qua chỉ giáo cho tụi em với ạ
     
    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
  6. krone

    krone Moderator Thành viên BQT

    Tham gia: 26/07/16, 03:07 PM
    Bài viết: 246
    Đã được thích: 122
    Điểm thành tích:
    43
     
    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
  7. krone

    krone Moderator Thành viên BQT

    Tham gia: 26/07/16, 03:07 PM
    Bài viết: 246
    Đã được thích: 122
    Điểm thành tích:
    43
    cái token là để bảo vệ cho phiên đăng nhập hoặc cũng có thể cho id người dùng. Tùy vào code mà code mà có thể exploit hay ko. :).
     
    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
  8. Lethanhtuanxxx123

    Lethanhtuanxxx123 New Member

    Tham gia: 10/09/17, 06:09 AM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    cho em hỏi ở ví dụ trên nếu lấy được phiên bản và tên của hệ cơ sở dữ liệu rồi thì chúng ta có thể làm được gì với nó ạ ?
     
    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
  9. krone

    krone Moderator Thành viên BQT

    Tham gia: 26/07/16, 03:07 PM
    Bài viết: 246
    Đã được thích: 122
    Điểm thành tích:
    43
    Tuỳ thuộc vào version đó có lỗi nào phổ biến hay không (PoC,...) hoặc lỗi ở những query như nào thì sẽ có những exploition tương ưngs thôi bạn.
     
    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
  10. nktung

    nktung Super Moderator Thành viên BQT

    Tham gia: 08/10/13, 04:10 AM
    Bài viết: 792
    Đã được thích: 298
    Điểm thành tích:
    83
    Các link trong bài viết này có vấn đề rồi
     
    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
    whf thích bài này.
  11. whf

    whf Super Moderator Thành viên BQT

    Tham gia: 06/07/13, 03:07 AM
    Bài viết: 1,026
    Đã được thích: 672
    Điểm thành tích:
    113
    Em fix lại rồi anh nhé.
     
    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
    nktung thích bài này.