Wednesday, June 21, 2017

Hướng dẫn code kiểm tra lỗ hổng bảo mật Sql Injection với Python script và cách phòng chống.

Trong bài này, AnonyViet sẽ giúp bạn kiểm tra xem trang web của bạn có bị tấn công bởi cú pháp sqli bằng python hay không nhé :) ...!!!

Và nó sẽ chỉ hoạt động nếu các biến sử dụng GET method.

Ở đây chúng ta sẽ viết 1 đoạn code bằng ngôn ngữ python.

Chúng ta sẽ cần kết nối internet để check và 1 vulnerable website.

Để tìm 1 trang vulnerable website để thử nghiệm thì các bạn vào google gõ dorks SQLi :

inurl: "index.php? Cat_id ="

Các bạn làm theo từng bước sau đây để viết 1 đoạn code python :
  1. Đầu tiên mở notepad/sublime Text ,... tạo 1 file sau đó lưu lại : new.py

  2. Chúng ta sẽ sử dụng sys, urllib and urllib.request modules. Vì thế import những thư viện sau vào : import  sys, urllib, urllib.request hoặc import sys, import urllib và import urllib.request

Tiếp theo : Bây giờ chúng ta sẽ cần chọn kiểu đầu vào.

1. Sử dụng lệnh input(“”) để lấy dữ liệu nhập từ người dùng. 

fullurl = input(“Please specify the full vulnerable url: “)



 

2. Code tạo một yêu cầu web

Đây là phần quan trọng nhất.

resp = urllib.request.urlopen(fullurl + "=1\' or \'1\' = \'1\'")
body = resp.read()
fullbody = body.decode(‘utf-8’)

Bây giờ làm cho chương trình của chúng ta kiểm tra xem liệu mục tiêu có dễ bị tổn thương hay không, một khi chúng ta có response thì chúng ta phải kiểm tra nếu nó có lỗi SQL.

Chúng ta sẽ sử dụng code này :

if “Nếu có lỗi trong SQL syntax” in fullbody:

print (“Website của bạn dễ bị tổn thương bởi tấn công SQL injection !!”)

else:

print (“Website của bạn không dễ bị tổn thương bởi tấn công SQL injection !!”)

Ok. Giờ chúng ta chạy lên thử nhé :

Sử dụng lệnh : python "name".py

Sau đó nhập site bạn tìm được lúc đầu vào.

Khi mình nhập website thì nó sẽ báo lỗi là dễ bị tổn thương.

Cách 2 : Sử dụng cho nhanh thì dùng
  • python sqli.py -w website

Bây giờ để ngăn chặn Hacker check site mình bằng SQL injection thì mình làm như sau :

Ngăn chặn SQLi on MYSQL đơn giản chỉ cần sử dụng chuỗi mysql_real_escape cho các truy vấn, ví dụ như:

$query = sprintf(“SELECT * FROM users where user=’%s’ AND password=’%s’,

                        mysql_real_escape_string($username)

                        mysql_real_escape_string($password)

Chúc các bạn thành công và đồng hành cùng AnonyViet. 

Thân ái !!

No comments:

Post a Comment