Write-Up Baby Assert
Địa chỉ : Baby Assert
Challenge Detail
Trong PHP, có rất nhiều cách để thay thế lệnh điều khiển If Else. Tuy nhiên, không phải lập trình viên nào cũng lường trước được những hậu quả nghiêm trọng khi sử dụng và thiết lập những tham số an toàn trên môi trường Production.
Tags
- php
- Assert
- Code Injection
Web Analysis:
- Tại
/index.php
trang web:
Có 3 Nút home, about và Secret mình xem thử từng cái.
Ta thấy ở trang web có 1 parameter ?page=
ngay lúc này mình đã test về lỗi LFI ( ../ , ….//) tuy nhiên nó đã không thực thi.
Quan sát thì web có gợi ý 1 đoạn code của trang web này:
1
2
3
$file = "pages/" . $page . ".php";
assert(...$file...) or die("Detected hacking attempt!");
require_once $file;
Lúc này mình thấy có hàm assert
có vẻ kì lạ…
- Tại
ABOUT
trang web:
Không có gì đặc biệt.
- Tại
SECRET
trang web:
Ta thấy file flag
được đặt tên + thêm ký tự random. Vậy cho dù mình có thực thi được ../ lỗi LFI thì cũng không thể biết được tên cụ thể của file flag mà xem được. Nên phải RCE hệ thống.
+1dea: RCE
PHÂN TÍCH ASSERT
Ở lúc này thì mình chưa biết về hàm assert hoạt động như thế nào và tìm hiểu nó.
chi tiết ở : how assertions can get you hacked
Vậy thì giải thích sơ
**Assert()**
là một hàm đánh giá một biểu thức PHP nhất định và nếu biểu thức đánh giá là false
, nó sẽ tạo ra một thông báo cảnh báo hoặc gây ra lỗi nghiêm trọng tùy thuộc vào cấu hình PHP. Nó thường được sử dụng cho mục đích gỡ lỗi và thử nghiệm.
Tuy nhiên, assert()
có thể trở thành rủi ro bảo mật khi sử dụng không đúng cách, đặc biệt khi dữ liệu do người dùng kiểm soát được truyền trực tiếp vào chức assert()
năng mà không được xác thực hoặc khử trùng thích hợp.
Exploiting Assert()
PAYLOAD AT HACKTRICK : CLICK
ở đây để RCE thì ta inject vào 1 chuổi và +PHP
thì nó có thể thực thi command như là webshell
Thử nghiệm
1
2
PAYLOAD:
' and die(show_source('/etc/passwd')) or ‘
Nó đã thực thi được payload của chúng ta tuy nhiên không biết file flag tên gì nên mình phải RCE.
1
2
PAYLOAD:
' and die(system("whoami")) or '
THÀNH CÔNG RỒI
việc còn lại là xem file FLag
DONE =)))
Written by Ren