BLOG OF H7T_2002

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
BLOG OF H7T_2002

Trang cá nhân của H7T_2002++


    Bug SMF 1.1.5 (07-09-2008)

    avatar
    I_love_U
    Khách viếng thăm


    Bug SMF 1.1.5 (07-09-2008) Empty Bug SMF 1.1.5 (07-09-2008)

    Bài gửi by I_love_U Tue Sep 28, 2010 8:01 am

    1. Lỗ hổng này nằm ở cơ chế khôi phục mật khẩu của SMF. Khi người dùng yêu cầu khôi phục mật khẩu cho một tài khoản, SMF sinh ra một mã chứng thực ngẫu nhiên và gửi nó cho email tương ứng. Người dùng sẽ truy cập tới liên kết (có chứa mã chứng thực) được cung cấp trong email để cài đặt lại mật khẩu mới. Tuy nhiên, do thuật toán sinh mã ngẫu nhiên mà SMF sử dụng không đủ mạnh nên Hacker có thể dùng phần mềm để dò được mã chứng thực và liên kết để thay đổi mật khẩu.
    Cụ thể, khi có một yêu cầu khôi phục mật khẩu, SMF gọi tới script \Sources\Reminder.php trong đó sử dụng hàm rand() để sinh mã chứng thực :
    $password = substr(preg_replace('/\W/', '', md5(rand())), 0, 10);
    Có thể thấy mã chứng thực ($password) được sinh ngẫu nhiên nhờ hàm rand(). Tuy nhiên, hàm nay không sinh các số ngẫu nhiên hoàn toàn mà giá trị của nó sinh ra phụ thuộc vào giá trị ngẫu nhiên trước đó. Vấn đề nằm ở chỗ, SMF để lộ tình trạng số ngẫu nhiên trước đó thông qua biên ẩn “sc” có thể thấy được từ phía người dùng (Client). Biến này được định nghĩa trong script \Sources\load.php:
    $_SESSION['rand_code'] = md5(session_id() . rand());
    $sc = $_SESSION['rand_code'];
    Với giá trị $sc, SessionID đã biết, kết hợp với việc hàm rand() chỉ sinh ra các giá trị trong khoảng [0.. 32767], Hacker dễ dàng dò (Bruteforce) được giá trị rand() đã sinh ra. Như vậy, Hacker hoàn toàn có thể biết được mã chứng thực ($password) và kết hợp nó với liên kết để thay đổi mật khẩu.

    2. Bản SMF 1.1.6 (fixed) có thể download tại:

      Hôm nay: Mon May 20, 2024 6:24 am