Tóm tắt
Command Injection
Khái niệm: shell injection, cho phép thực thi OS command trên server chạy ứng dụng
Cheatsheet: Sử dụng các ký tự đặc biệt như
Blind OS command injection: Có thể dùng time delay để phát hiện; chuyển hướng đầu ra để thực thi lệnh và lấy kết quả. Nếu các cách trên đều không thành công có thể sử dụng kỹ thuật OAST
Ngăn chặn: Tránh gọi trực tiệp OS command từ code ứng dụng. Nên triển khai sử dụng các API an toàn. Nếu buộc phải làm vậy thì nên xác thực đầu vào, không cố gắng làm sạch đầu vào vì dễ có sai sót
Path Traversal
Khái niệm: Cho phép đọc các tệp tùy ý trên app server qua duyệt thư mục
Payload phổ biến
Ngăn chặn: Tránh hoàn toàn việc truyền dữ liệu đầu vào do người dùng cung cấp cho các API hệ thống tệp. Nếu không nên sử dụng 2 lớp bảo vệ để ngăn chặn các cuộc tấn công: Xác thực đầu vào trước khi xử lý, rồi sử dụng API hệ thông tệp xử lý tiếp.
Access Control
Khái niệm: Áp dụng các ràng buộc với các đối tượng để cho phép thực hiện hành động hoặc truy cập tài nguyên nào đó. (qua Xác thực, Quản lý phiên, Kiểm soát truy cập). Theo chiều dọc (Admin, Normal user), Chiều ngang (từng người dùng cụ thể), Ngữ cảnh (Khi thanh toán thì không thể sửa giỏ hàng)
Tăng đặc quyền theo chiều dọc: Duyệt đến trang admin không bảo vệ (/admin, qua tệp robots.txt hay mã nguồn), Dựa trên tham số (Ứng dụng đưa ra quyết định kiểm soát truy cập dựa trên giá trị được gửi : trường ẩn, cookie, tham số chuỗi truy vấn được đặt sẵn ....), Do nền tảng cấu hình sai dù
DENY: POST, /admin/deleteUser, managers
(Sử dụng header nhưX-Original-URL
vàX-Rewrite-URL
ghi đè URL, Sử dụng các HTTP method), do sự không khớp URL giúp bypass các biện pháp lọc đầu vàoTăng đặc quyền theo chiều ngang: Lỗ hổng tham chiếu đối tượng trực tiếp không an toàn () -> Thay đổi request parameter, GUID thuộc về những người dùng khác có thể được tiết lộ ở nơi khác trong ứng dụng, Phản hồi chuyển hướng về trang đăng nhập chứa dữ liệu nhạy cảm.
Lỗ hổng kiểm soát truy cập trong quy tình nhiều bước: Bỏ qua các bước có kiểm soát nghiêm ngặt
Lỗ hổng kiểm soát truy cập dựa trên Referer (Nếu
Referer
header chứa/admin
URL, request được cho phép.)Lỗ hổng kiểm soát truy cập dựa trên vị trí: proxy web, VPN, ... để bypass
Ngăn chăn: Không bao giờ chỉ dựa vào các biện pháp che giấu để ngăn chặn, luôn từ chối truy cập tài nguyên ẩn thao mặc định, nên sử dụng một cơ chế duy nhất trên toàn ứng dụng để kiểm soát truy cập, ơ mã nguồn yêu cầu khai báo quyền truy cập được phép cho từng tài nguyên và từ chối quyền truy cập theo mặc định, kiểm tra và thử nghiệm kỹ lưỡng các biện pháp kiểm soát truy cập
Authentication
Khái niệm: Quá trình xác minh danh tính người dùng hoăc khách hàng dựa vào các nhân tố (biết - yếu tố kiến thức, có - yếu tố sở hữu, tạo ra - yếu tố vốn có)
Lỗ hổng trong đăng nhập bằng mật khẩu (brute-force mật khẩu, username, username enumeration qua status code, thông báo lỗi khác biệt hoặc reponse timing; Sử dụng tài khoản hợp lệ bypass chặn ip, Qua thông báo lỗi Account locking cấu hình sai ), Tấn công credential stuffing (susername mật khẩu bị lộ trong các vụ rò rỉ dữ liệu trước đó để đăng nhập), Lack user rate limit (Captcha, ...) bằng cách thay đổi IP hoặc sử dụng nhiều mật khẩu cho một request, Lỗ hổng trong HTTP basic authentication(token xác thực từ username và password mã hóa bằng Base 64, dễ bị brute-force, CSRF, hoặc MITM nếu không qua HTTPS)
Lỗ hổng trong xác thực đa nhân tố: Có thể bỏ qua trang xác thực 2 yếu tố, logic xác minh sai cho phép thay đổi
account
cookie rồi brute force mã xác minh(năng cao với macro đề bypass cả việc ngăn chặn brute-force mã bằng đăng xuất)Các lỗ hổng trong cơ chế xác thực khác: Giữ người dùng đăng nhập: Mã hóa stay-logged-in cookie không đúng cách (thuật toán mã hóa đơn giản, không thêm salt) có thể dẫn đến brute-force cookie dễ dàng; Đặt lại mật khẩu người dùng: Gửi mật khẩu qua kênh không an toàn như mail hoặc là trang đặt lại mật khẩu chứa tham số không an toàn; Thay đổi mật khẩu (có thể cho phép thay đổi trực tiếp mà không cần đăng nhập)
Ngăn chặn: Bảo vệ thông tin đăng nhập(HTTPS, tránh lộ lọt trên trình duyệt hay qua phản hồi), Thực thi chính sách mật khẩu nghiêm ngặt, triển khai bảo vệ chống brute-force, Kiểm tra kỹ lưỡng logic xác minh, bảo mật các chức năng bổ sung(đặt lại mật khẩu, ...), Triển khai xác thực đa yếu tố hiệu quả
SQL injection
Khái niêm: Lỗ hổng cho phép thiệp vào các truy vấn SQL mà ứng dụng thực hiện đối vói CSDL
Phát hiện: '
OR 1=1
OR 1=2
kích hoạt độ trễ thời gian, kích hoạt tương tác mạng ngoài băng tần hoặc Phát hiện tự động sử dụng các công cụ như sqlmap, invicti, Burp Scanner...Phân loại: Liệt kê nội dung CSDL, Điều chỉnh truy vấn SQL để trả về kết quả bổ sung, Điều chỉnh truy vấn SQL để trả về kết quả bổ sung, UNION attacks: Lấy dữ liệu từ các bảng CSDL khác, Blind SQL injection: Kết quả truy vấn bạn kiểm soát không được trả về trong phản hồi của ứng dụng, Second-order SQL injection( khi input được lưu lại sử dụng trong tương lai )
Ngăn chặn: Sử dụng Truy vấn có Tham số (Prepared Statements), tránh nối chuỗi trong truy vấn, Xác thực đầu vào và whitelist, không giả định một số đầu vào nào là an toàn
Last updated