Thứ Năm, 2 tháng 4, 2015

Exploiting PHP Upload forms

Hôm nay tôi muốn gửi về các lỗi gần đây nhất mà tôi đã tìm thấy trong PHP, CVE-2015-2348. Lỗi này là khá quan trọng (xem xét số lượng của các nhà phát triển bị ảnh hưởng).



Vấn đề xảy ra trong chức năng move_uploaded_files của php rất phổ biến được sử dụng để xử lý các tập tin được tải lên. Chức năng này kiểm tra để đảm bảo rằng các tập tin được chỉ định theo tên tập tin một tập tin upload hợp lệ (nghĩa là nó đã được tải lên thông qua HTTP POST cơ chế upload PHP). Nếu tập tin có giá trị, sẽ được chuyển đến các tên tập tin đích.
Ví dụ:
move_uploaded_file ( string $filename , string $destination )  
Các vấn đề với nó là có một cách để chèn byts null để bypass,  Sử dụng nullbytes một kẻ tấn công có thể thực hiện bypass upload, các tập tin là tương đối hợp lệ tải lên các tập tin độc hại có thể gây ra RCE bằng cách sử dụng sử dụng các ký tự \ x00.

Tôi sẽ lấy một ví dụ với DVWA với mức cao nhấtDưới đây là mã snippit từ https://github.com/RandomStorm/DVWA/blob/master/vulnerabilities/upload/source/high.php: 
 $uploaded_name = $_FILES['uploaded']['name'];
$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1); $uploaded_size = $_FILES['uploaded']['size'];

if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){ if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {

$html .= '';
$html .= 'Your image was not uploaded.';
$html .= ''; }
else {
$html .= $target_path . ' succesfully uploaded!';
.
Dự kiến ​​hành vi bypass PHP để tạo ra:
move_uploaded_file ($ _ FILES ['name'] ['tmp_name'], "/ file.php \ x00.jpg")
và đã tạo ra các tập tin "file.php \ x00.jpg"Thực tế thì nó tạo ra: file.php 

Hầu hết các hình thức upload chạy PHP  trước 5.4.39, 5.5.x trước 5.5.23, và 5.6.x trước 5.6.7 đều dính lỗi này.


Cách khắc phục
Lọc bỏ giá trị Nullbyte trong tên của tệp tin tải lên máy chủ ($_FILES[‘uploaded’][‘name’]) trước khi sử dụng hàm move_uploaded_file và cập nhật lên các bản PHP mới nhất đã vá lỗi.
 
 
 

Dịch từ: www.paulosyibelo.com

Related Posts

Exploiting PHP Upload forms
4/ 5
Oleh

Theo dõi qua email

Giống như bài viết ở trên ? Hãy đăng ký vào bài viết mới nhất trực tiếp qua email.