CBJS: File Upload 4

Peppa - Aug 17 - - Dev Community

Mục Tiêu

  • Chiếm quyền điều khiển server và đọc một tập tin bí mật ở thư mục gốc (đường dẫn /)

Recon

  • Sử dụng wappalyzer thấy website viết bằng php (version 7.3.3) và sử dụng web server Apache (version 2.4.52)

Image description

  • Dùng thử thấy website chỉ có mỗi chức năng upload file và có thể truy cập thông qua đường link bên dưới

Image description

Có thể nghĩ đến việc tấn công file upload và path traversal

Attack

  • Máy chủ apache sẽ không tự xử lí được đuôi file .php mà phải nhờ các module PHP xử lí. Các module PHP sẽ thực thi file .php và trả về kết quả (thường là mã HTML) cho apache

  • Phía server sau khi nhận file sẽ cắt tên file thông qua hàm explode() và lấy phần tử cuối cùng để so sánh với 1 mảng đuôi file

Image description

  • Apache config đã cho phép ghi .htaccess

Image description

  • Với version 2.3.8 and earlier, apache mặc định cho phép ghi file .htaccess nhưng những version sau này chế độ đó đã mặc định bị disable

  • .htaccess chỉ có tác dụng local

Từ những dữ kiện trên ta có thể upload file .htaccess giúp thay đổi hành vi khiến apache gặp đuôi file mà ta mong muốn sẽ chuyển file đó sang mod-PHP

  • Tạo file .htaccess khi gặp đuôi file .pho sẽ chuyển sang mod-php xử lí hộ

Image description

  • Tạo file hello.pho chứa nội dung là 1 hàm system() giúp thực thi lệnh trong hệ thống

Image description

  • Sau khi upload file .htaccess, tiếp đó upload file hello.pho và truy cập file ta có thể điều chỉnh parameter trên url để tìm ra flag

Image description

  • Ngoài system() ta còn có thể sử dụng passthru()

Image description

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .