Hướng dẫn php injection - tiêm php

Tấn công SQL injection có thể xảy ra khi một trang web cho người dùng thực thi câu lệnh SQL ngay trên trang Web hoặc thanh địa chỉ. Trong bài này, mình sẽ trình bày cách thực hiện một cuộc tấn công SQL Injection cơ bản trên một trang web và ở phần cuối, mình sẽ nói về công cụ SQLmap, công cụ này sẽ tự động hóa toàn bộ quy trình.

Nội dung chính ShowShow

  • Cách để thực hiện một cuộc tấn công SQL Injection cơ bản
  • 1. Tìm xem trang web có dễ bị tấn công SQL Injection hay không
  • 2. Tìm các Database hiện có
  • 3. Tìm Table và dữ liệu trong Table trong Database hiện tại
  • 4. Khám phá tên cột – Column trong Table
  • 5. Tìm dữ liệu được lưu trữ trong Table
  • 6. Sử dụng SQLmap để tấn công SQL Injection tự động
  • Tóm tắt về tấn công SQL Injection

Hướng dẫn php injection - tiêm php

Trang web http://testphp.vulnweb.com/listproducts.php?cat=1 đang kiểm tra các lỗ hổng php. Mình sẽ sử dụng trang web này để thực hiện cuộc tấn công SQLi.

Cách để thực hiện một cuộc tấn công SQL Injection cơ bản

1. Tìm xem trang web có dễ bị tấn công SQL Injection hay không

2. Tìm các Database hiện có

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''a\'' at line 1

3. Tìm Table và dữ liệu trong Table trong Database hiện tại

4. Khám phá tên cột – Column trong Table

5. Tìm dữ liệu được lưu trữ trong Table

SELECT * FROM XYZ_TABLE WHERE CAT=''

6. Sử dụng SQLmap để tấn công SQL Injection tự động

SELECT * FROM XYZ_TABLE WHERE CAT=1'

Tóm tắt về tấn công SQL Injection

Trang web http://testphp.vulnweb.com/listproducts.php?cat=1 đang kiểm tra các lỗ hổng php. Mình sẽ sử dụng trang web này để thực hiện cuộc tấn công SQLi.

2. Tìm các Database hiện có

3. Tìm Table và dữ liệu trong Table trong Database hiện tại

SELECT * FROM XYZ_TABLE WHERE CAT=1 order by 5--+'

4. Khám phá tên cột – Column trong Table

5. Tìm dữ liệu được lưu trữ trong Table

6. Sử dụng SQLmap để tấn công SQL Injection tự động

Tóm tắt về tấn công SQL Injection

SELECT * FROM XYZ_TABLE WHERE CAT=1 union select all 1,2,3,4,5,6,7,8,9,10,11

Trang web http://testphp.vulnweb.com/listproducts.php?cat=1 đang kiểm tra các lỗ hổng php. Mình sẽ sử dụng trang web này để thực hiện cuộc tấn công SQLi.

Cách cơ bản và đơn giản nhất là kiểm tra URL của các trang bạn đang truy cập. Nếu URL có dạng http://testphp.vulnweb.com/listproducts.php?cat=1, nó là một mục tiêu tiềm năng. Để kiểm tra xem trang web có thực sự đang sử dụng SQL hay không, bạn có thể thêm \ hoặc một dấu ngoặc kép ” hoặc dấu ngoặc đơn ‘ ở cuối URL và xem liệu có gì trong trang thay đổi hoặc bạn gặp lỗi SQL hay không. Đối với hầu hết các trường hợp, lỗi sẽ như sau:

https://testphp.vulnweb.com/listproducts.php?cat=1%20union%20select%20all%201,user(),3,4,5,6,database(),8,version(),10,11 .

Nhưng lỗi cũng có thể là bất cứ điều gì khác. Đối với trang web http://testphp.vulnweb.com/listproducts.php?cat=1 khi mình thêm dấu ‘ ở cuối sẽ xuất hiện lỗi:

Vì vậy, mình đã kết luận rằng trang web này có thể bị tấn công SQL Injection http://testphp.vulnweb.com/listproducts.php?cat=1

Trong backend, ứng dụng có thể đang chạy một truy vấn tương tự như

Truy vấn được thực thi cho http://testphp.vulnweb.com/listproducts.php?cat=1′ sẽ là

  • Và bạn đã đoán đúng. Lệnh này sẽ tạo ra lỗi.
  • Chúng ta có thể sửa đổi truy vấn theo bất kỳ cách nào chúng ta muốn. Nếu mình thêm --+ vào cuối, truy vấn sẽ chạy mà không có lỗi. (--+ hoặc # về cơ bản sẽ comment bất kỳ thứ gì sau nó)
  • Bước tiếp theo sẽ là tìm hiểu các database – cơ sở dữ liệu hiện có. Chúng ta sẽ sử dụng ORDER BY. Nếu mình chạy http://testphp.vulnweb.com/listproducts.php?cat=1 order by 5, truy vấn MySQL tương ứng sẽ là

3. Tìm Table và dữ liệu trong Table trong Database hiện tại

4. Khám phá tên cột – Column trong Table

5. Tìm dữ liệu được lưu trữ trong Table

6. Sử dụng SQLmap để tấn công SQL Injection tự động

SELECT * FROM XYZ_TABLE WHERE CAT=''9

Tóm tắt về tấn công SQL Injection

Trang web http://testphp.vulnweb.com/listproducts.php?cat=1 đang kiểm tra các lỗ hổng php. Mình sẽ sử dụng trang web này để thực hiện cuộc tấn công SQLi.

Cách cơ bản và đơn giản nhất là kiểm tra URL của các trang bạn đang truy cập. Nếu URL có dạng http://testphp.vulnweb.com/listproducts.php?cat=1, nó là một mục tiêu tiềm năng. Để kiểm tra xem trang web có thực sự đang sử dụng SQL hay không, bạn có thể thêm \ hoặc một dấu ngoặc kép ” hoặc dấu ngoặc đơn ‘ ở cuối URL và xem liệu có gì trong trang thay đổi hoặc bạn gặp lỗi SQL hay không. Đối với hầu hết các trường hợp, lỗi sẽ như sau:

  • Nhưng lỗi cũng có thể là bất cứ điều gì khác. Đối với trang web http://testphp.vulnweb.com/listproducts.php?cat=1 khi mình thêm dấu ‘ ở cuối sẽ xuất hiện lỗi:
  • Vì vậy, mình đã kết luận rằng trang web này có thể bị tấn công SQL Injection http://testphp.vulnweb.com/listproducts.php?cat=1
  • Trong backend, ứng dụng có thể đang chạy một truy vấn tương tự như
  • Truy vấn được thực thi cho http://testphp.vulnweb.com/listproducts.php?cat=1′ sẽ là
  • Và bạn đã đoán đúng. Lệnh này sẽ tạo ra lỗi.
  • Chúng ta có thể sửa đổi truy vấn theo bất kỳ cách nào chúng ta muốn. Nếu mình thêm --+ vào cuối, truy vấn sẽ chạy mà không có lỗi. (--+ hoặc # về cơ bản sẽ comment bất kỳ thứ gì sau nó)
  • Bước tiếp theo sẽ là tìm hiểu các database – cơ sở dữ liệu hiện có. Chúng ta sẽ sử dụng ORDER BY. Nếu mình chạy http://testphp.vulnweb.com/listproducts.php?cat=1 order by 5, truy vấn MySQL tương ứng sẽ là
  • Điều này sẽ sắp xếp kết quả dựa trên cột thứ 5

4. Khám phá tên cột – Column trong Table

5. Tìm dữ liệu được lưu trữ trong Table

6. Sử dụng SQLmap để tấn công SQL Injection tự động

6. Sử dụng SQLmap để tấn công SQL Injection tự động

SELECT * FROM XYZ_TABLE WHERE CAT=1'1

Tóm tắt về tấn công SQL Injection

  • uname
  • pass
  • cc
  • address
  • email
  • name
  • phone

5. Tìm dữ liệu được lưu trữ trong Table

Để xem tên, email, mật khẩu của người dùng:

http://testphp.vulnweb.com/listproducts.php?cat=1%20union select all 1,name,3,4,5,6,email,8,pass,10,11 from users

Truy vấn SQL tương ứng:

SELECT * FROM XYZ_TABLE WHERE CAT=1'2

6. Sử dụng SQLmap để tấn công SQL Injection tự động

Nếu mình muốn sử dụng sqlmap để thực hiện việc trên, mình sẽ phải chạy các lệnh sau trên terminal của mình

Tóm tắt về tấn công SQL Injection

Cuộc tấn công SQL Injection là một trong những cuộc tấn công mạnh mẽ nhất mà hacker có thể thực hiện. Có nhiều cách để ngăn chặn SQL Injection, bạn có thể tham khảo tại đây.