Chuyển đến nội dung chính

OWASP Top 10 Project - A1:2017 Injection


Kết quả hình ảnh cho owasp injection


        Hầu hết mọi nguồn dữ liệu đều có thể là các biến môi trường, các tham số, các dịch vụ web bên ngoài và nội bộ, và tất cả các kiểu người dùng. Nhúng sai sót xảy ra khi kẻ tấn công có thể gửi dữ liệu thù địch đến một thông dịch viên.

        Nhúng sai là rất phổ biến. Các lỗ hổng nhúng thường được tìm thấy trong các truy vấn SQL, LDAP, XPath hoặc NoSQL, các lệnh OS, các trình phân tích cú pháp XML, các tiêu đề SMTP, các ngôn ngữ biểu thức và các truy vấn ORM.

        Nhúng sai sót dễ phát hiện khi kiểm tra mã. Máy quét và bộ lọc có thể giúp những kẻ tấn công tìm thấy những sai sót.

        Nhúng có thể dẫn đến mất dữ liệu, tham nhũng hoặc tiết lộ cho các bên trái phép, mất trách nhiệm giải trình hoặc từ chối truy cập. Nhúng đôi khi có thể dẫn đến việc tiếp quản máy chủ hoàn chỉnh. Tác động kinh doanh phụ thuộc vào nhu cầu của ứng dụng và dữ liệu.

Các dạng lỗi thường gặp:
SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, ...
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
→ Đây là dạng lỗi SQL injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào trong câu truy vấn SQL. Kết quả là người dùng cuối có thể thực hiện một số truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng.
Câu lệnh này tìm tất tên người dùng trong tất cả CSDL. Tuy nhiên nếu nhập "username" theo một cách khác thì nó trở thành câu truy vẫn với mục đích khác hẳn với LTV.
Ví dụ:
username = "long" or "an"="an"
username = "long" or ""=""
SELECT * FROM users WHERE name = 'long' or 'an'='an';
→ nếu câu lệnh trên dùng để xác thực user thì ngoài user "long" thì user "an" luôn đúng.
username = a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't';
→ Để bảo vệ một trang web khỏi việc nhúng SQL, bạn có thể sử dụng các tham số SQL. Các tham số SQL là các giá trị được thêm vào một truy vấn SQL tại thời gian thực hiện, theo cách được kiểm soát.
userId= getRequestString("UserId"); //@0
SQL= "SELECT * FROM Users WHERE userId = @0"; 
db.Execute(SQL, userId);
Lưu ý rằng các tham số được biểu diễn trong câu lệnh SQL bằng một dấu @. Công cụ SQL kiểm tra từng tham số để đảm bảo rằng nó là chính xác cho cột của nó và được xử lý theo nghĩa đen, và không phải là một phần của SQL được thực hiện.
txtNam = getRequestString("CustomerName"); //@0
txtAdd = getRequestString("Address"); //@1
txtCit = getRequestString("City"); //@2
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
db.Execute(txtSQL,txtNam,txtAdd,txtCit);
Tham khảo thêm tại:

Nhận xét

Bài đăng phổ biến từ blog này

OWASP Top 10 Project

Dự án bảo mật ứng dụng (OWASP) là một cộng đồng dành riêng cho các tổ chức phát triển, mua và duy trì các ứng dụng và API có thể tin cậy. Đặc điểm của OWASP: Các công cụ và tiêu chuẩn bảo mật ứng dụng Hoàn thành các cuốn sách về kiểm tra bảo mật ứng dụng, mã an toàn  phát triển và xem xét mã an toàn Trình bày và video Cheat sheet trên nhiều chủ đề phổ biến Các thư viện và điều khiển bảo mật tiêu chuẩn Các chương địa phương trên toàn thế giới Nghiên cứu tiên tiến Hội nghị mở rộng trên toàn thế giới Danh sách mail OWASP Top 10 là một tài liệu về bảo mật ứng dụng web. Nó thể hiện sự đồng thuận rộng rãi về những rủi ro bảo mật quan trọng nhất đối với các ứng dụng web. Các thành viên của dự án bao gồm nhiều chuyên gia bảo mật từ khắp nơi trên thế giới, những người đã chia sẻ kiến ​​thức chuyên môn của mình để tạo ra danh sách này. Xem thêm tại:  https://www.owasp.org Danh sách AWASP Top 10 qua các năm: OWASP Top 10 - 20

OWASP Top 10 Project - A3:2017 Sensitive Data Exposure

          Khi người dùng nhập bất kỳ thông tin trên ứng dụng web như thông tin thẻ VISA, Credit Card, hồ sơ bệnh án... đó đều là những dữ liệu nhạy cảm cần được máy chủ bảo vệ.           Hiện nay có rất nhiều ứng dụng web, lỗ hổng để truy cập dữ liệu nhạy cảm (Sensitive Data) ngày tăng.           Nguyên nhân dẫn đến các lỗ hổng trên là do: Không mã hóa dữ liệu nhạy cảm. Cài đặt mật khẩu để truy cập vào database chứa dữ liệu nhảy cảm yếu (độ dài mật khẩu, yêu cầu về các ký tự, chữ cái và các con số). Thực tế khách quan, một nhân viên bất mãn với các chính sách của công ty đặt nhiều mỗi đe dọa hơn bất kỳ người nào nào nhằm mục đích cá nhân khi có quyền truy cập vào những dữ liệu quan trong của công ty. Nếu dữ liệu được lưu trữ đám mây và nó không được bảo về đúng cách rất dễ ràng để đối tượng xấu lạm dụng. Hoặc có thể bạn vô tình ấn va

OWASP Top 10 Project - A2:2017 Broken Authentication

          Những đoạn chương trình kiểm tra danh tính và quản lý phiên làm việc của người sử dụng thường hay được làm qua loa không đúng cách. Vì vậy cho phép kẻ tấn công từ bên ngoài có thể truy cập vào những tài nguyên nội bộ trái phép (admin page, inside, control page …).           Những kẻ tấn công có quyền truy cập vào chỉ một vài tài khoản hoặc chỉ một tài khoản quản trị để xâm phạm hệ thống. Tùy thuộc vào miền của ứng dụng, điều này có thể cho phép rửa tiền, gian lận bảo mật xã hội và trộm cắp danh tính hoặc tiết lộ thông tin nhạy cảm được bảo vệ một cách hợp pháp.           Ví dụ: - Hiển thị phiên ID trong url:  http://example.com/sale/saleitems;jsessionid=2P0OC2JSNDLPSKHCJUN2JV?dest=Hawaii - Thời gian chờ của ứng dụng không được đặt chính xác: Khi bạn truy cập máy tính của thư viện. Thay vi ấn đăng xuất ứng dụng, bạn chỉ đóng tab ứng dụng và bỏ đi. Kẻ xấu có thể truy cập và ứng dụng với tài khoản và mật khẩu của bạn.