- vừa được xem lúc

Write-up:Vulnhub SecureCode:1

0 0 35

Người đăng: Nothing

Theo Viblo Asia

Mở đầu

Bài hôm nay hơi khác các bài mình từng làm đó là ta sẽ đi reivew source code để tìm ra lỗ hổng và tiến hành khai thác. Ngôn ngữ được dùng ở đây là PHP, mình chưa từng code qua PHP bao giờ nên lúc làm bài gặp khá nhiều khó khăn vì mình khá là thích C nhưng nó lại thiếu các thư việc hỗ trợ nên mình tìm đến Golang một ngôn ngữ mình mới học gần đây là mình khá là thích vì nó là sự kết hợp của C và Python. Lan man đủ rồi vào việc thôi ?

Write-up

Vì mình biết bài này là reivew source code nên mình đã chạy gobuster với option -x với các file extension là .zip, .rar, .bak và mình tìm được source code là source_code.zip. Chức năng đầu tiên mình kiểm tra là login Phân tích một chút thì hàm sqli_real_escape_string() dùng để lọc tất cả các kí tự như ' " \n \r %00 mà username lại được bao quanh bởi dấu ' thì khả năng bypass gần như không có. Tiếp đến là hàm hash md5() chỉ trả lại kết quả chứ kí từ từ a-z, A-Z và 0-9 nên có thể kết luận là chức năng Login không tồn tại lỗ hổng
Mình để ý hầu hết tất cả các file có chứa dòng include '../include/isAuthenticated.php';

File này kiểm tra trong session có chứa id_level =1 hay không nếu không sẽ chuyển hướng đến login.php. Vì kiểm tra biến trong session nên khả năng cao chúng ta sẽ không khai thác được gì thêm ở đây
Như mình đã nói chỉ hầu hết các file có chứa file isAuthenticated.php nên ta còn các file resetPassword.php, doResetPassword.php, doChangePassword.php, viewItem.php. Sau khi nhìn qua các file trên thì ta rút ra được các điều như sau:

  • Token dùng để reset password có độ dài là 15 và bao gồm các kí tự từ a-z, A-Z và 0-9
  • File viewItem.php có chứa lỗ hổng Sqli Bool-base mặc dù đã dùng hàm sqli_real_escape_string() nhưng vì không để tham số trong dấu ' nên ta dễ dàng chèn thêm tùy ý

Thoạt nhìn qua ta tưởng file viewItem.php là an toàn vì nó cách nó kiểm tra người dùng có phải là admin không tương tự như file isAuthenticated.php, nó sẽ chuyển hướng về login nếu người dùng không phải là admin. Mình mất khá nhiều thời gian ở đây vì mình cũng nghĩ cách nó hoạt động như file isAuthenticated.php, nhưng không nếu người dùng không phải là admin thì nó sẽ vẫn tiếp tục thực hiện các dòng ở dưới mà không chuyển hướng luôn như mình nghĩ. Đến đây ta có thể lấy được token và chiếm được quyền của admin và phần phía ta chỉ cần bypass upload shell một chút là xong nên mình sẽ không trình bày nữa
Mình cũng có viết 1 đoạn code bằng go để khai thác tự động link ở đây
Cách dùng

  1. Đầu tiên bạn cần vào link reset password và nhập admin rồi gửi để tạo lại token
  2. Vào file thay đổi password và địa chỉ máy cùng với cổng
  3. Chạy lệnh nc -lnvp + số cổng bạn chọn
  4. Chạy file và hưởng thụ

Kết lại

Đây là bài khá là hay đối với mình và mình cũng tập viết được mã khai thác bằng ngôn ngữ yêu thích mới của mình là Go. Tuy nhiên code mình viết vẫn chưa tận dụng hết được sức mạnh của Go là currency để tăng tốc độ khai thác khi ta phải dùng Sqli Bool-base

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm bug với Eyewitness

. Chào các bạn, trong bài này mình sẽ viết về tool Eyewitness. Eyewiteness có tính năng chính là chụp hình lại giao diện trang web sau đó tạo một report thông qua file .

0 0 24

- vừa được xem lúc

[I passed OSWE] Nguồn gốc và sức mạnh | Tự tin và sự cố gắng

1. Giới thiệu.

0 0 17

- vừa được xem lúc

Tôi đã đánh cắp tên miền của MIT như thế nào?

. Chào cả nhà, lại là mình đây! Hôm này mình mang tới chủ đề mới đó là subdomain takeover hay nói cách đơn giản chiếm subdomain của người khác. Lỗi này rất thú vị và khá đơn giản để tìm kiếm.

0 0 33

- vừa được xem lúc

Keyboard from Scratch: Từ A tới Z

Keyboard from Scratch: Từ A tới Z. Sau khi kết thúc hai phần trước, chúng ta đã có những kiến thức cơ bản về chiếc bàn phím cơ, không để các bạn đợi lâu, ở phần này chúng ta sẽ thực sự bắt tay vào làm

0 0 27

- vừa được xem lúc

Keyboard from Scratch: Debounce

Keyboard from Scratch: Debounce. Bạn đang xem phần hai của một sê ri nhiều phần, nhiều chừng nào, nhiều đến khi nào, thì chưa biết được. . .

0 0 24

- vừa được xem lúc

Keyboard from Scratch: Prototype

Keyboard from Scratch: Prototype. Là một lập trình viên, bàn phím là một vật dụng bạn phải sờ vào hằng ngày, thậm chí số lần bạn sờ nó còn nhiều hơn số lần bạn sờ vào vợ hoặc bạn gái.

0 0 21