post-image

Chỉ một buổi chiều, tôi đã chiếm quyền điều khiển server của 8 website như thế nào

Tổng quan

Xin chào, xin chào các bạn. Lâu lâu lâu lắm rồi mình mới có thời gian để viết bài, vì bận quá (thực ra là vì lười quá).

Chuyện là gần đây mình có hay lượn lờ đọc mấy bài về lập trình web (lại là câu chuyện về web đấy các bạn). Thì mình cũng chiếm được cái server nho nhỏ của 1 website (Tại sao tiêu đề là 8 mà đây mình lại ghi là 1, thì xem hồi sau sẽ rõ).

Mình đã xin phép bên kia rồi mới viết bài nhé nhưng để giữ bí mật cho họ thì mình sẽ che tên web cũng như các thông tin nhạy cảm nhé, từ giờ mình sẽ dùng domain web đó là https://xxxx.com nha.

Dạo chơi vớ phải bug

Mình có lên 1 vài trang đọc về lập trình thì vô tình vớ được 1 trang web của 1 bên dạy lập trình, thì mình cũng dạo xem họ có khóa gì thú vị không.

Mình truy cập vào https://xxxx.com, dạo một vòng. Đang dạo thì mình dừng lại chuột phải inspect thử 1 cái ảnh xem đường dẫn ảnh như nào. Thực ra là bệnh nghề nghiệp.

https://i0.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_18.43.42.png?ssl=1

Tôi thử truy cập vào https://portal.xxxx.com xem thử nó là cái gì nha, nhìn cũng có vẻ được đấy. Nhưng khi truy cập vào thì nó yêu đầu đăng nhập.

https://i1.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-15_at_13.23.37.png?ssl=1

Đến đây tôi tự hỏi: Có cách nào đăng nhập được vào không ta, đăng nhập vào không biết có gì ha? Những câu tự hỏi đó làm tôi càng tò mò hơn, quyết định tìm cách đăng nhập được vào trang này.

Mình thấy có đường dẫn ảnh lúc nãy là như này:

https://portal.xxxx.com/laravel-filemanager/photos/shares/Course/1_y6C4nSvy2Woe0m7bWEn4BA.png
Code language: JavaScript (javascript)

Truy cập thử xem nào. À ha, trả về cái ảnh là đúng rồi nè.

https://i1.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_18.48.22.png?ssl=1

Tuy nhiên tính tò mò nên tôi thử sửa đổi URL đi một tý, đó mà tôi lược bỏ tên file ảnh đi, nó chỉ còn vầy thôi https://portal.xxxx.com/laravel-filemanager/photos/shares/Course/

Thì ôi thôi, một tuyệt tác như vầy:

https://i0.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_14.36.45.png?ssl=1

Vậy là tôi đã có thông tin:

  • Web dùng laravel
  • Không tắt đi debug
  • Vì không tắt DEBUG nên config gì của laravel là biết tuốt, biết tuốt

Thế thì như đã nói là website này bật DEBUG mode nên là show hết các thông tin cấu hình của web rồi: Thông tin truy cập database, các auth key của các dịch vụ nó dùng, ip thật, APP_KEY … (Trong này có cái APP_KEY, tý tui sẽ biểu diễn đường quyền sau nha)

Database họ dùng tài khoản root luôn Thế là dở rồi bạn ơi, môi trường production mà không tắt DEBUG, lại dùng tài khoản root cho database là dở rồi

⇒ Đến đây, database connect được rồi, user của database là root rồi, thì đoạn này lợi dụng mysql để RCE vẫn là ok rồi, có điều như đã nói: Trong nhiều trường hợp, sẽ không có chuyện may mắn như thế này, nên tôi vẫn đi tìm vector tấn công khác ngon hơn mà không cần dựa vào may mắn.

Khám phá thử database

Có Thông tin database thì tôi vào xem thế nào nha, thú vị nha.

https://i0.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_14.40.52.png?ssl=1

Gòy xong luôn =))

Count nhẹ cái database của portal thì cũng có trên 1200 tài khoản học viên đấy, là đông đấy, không ít đâu

Trừ cái database information_schema và mysql của mysql ra thì trên này tôi đếm được 8 cái database của 8 cái website khác nhau các ông ạ, ác dữ vậy.

https://i0.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_18.57.58.png?ssl=1

Rồi, giờ đến lúc biểu diễn đường quyền với APP_KEY có nhắc phía trên này. Vì tôi từng lập trình laravel, nên tôi biết nó dùng APP_KEY để làm KEY cho các hàm hash password của nó, vậy thì thử tạo cái hash password xem nào.

Tạo password bypass authen truy cập vào xem ứng dụng dư lào.

(update: Phần này mình làm cho nó nguy hiểm thôi, chứ đoạn hay phía sau nhé, vì sau khi push bài lên mình nhận ra hình như hashpassword không cần APP_KEY =)) Thế thì tìm salt rounds cũng được, nhưng cứ thử thôi, vì thường mấy bạn code laravel toàn để mặc định không à, nên làm như tui cách dưới cũng không sai trong trường hợp này đâu nhé )

Tạo một project laravel để test.

https://i1.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_19.06.01.png?ssl=1

Sau khi tạo xong project thì vứt cái APP_KEY vô file .env

https://i0.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_19.08.32.png?ssl=1

Rồi tạo hash password thôi nào

https://i2.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_19.10.08.png?ssl=1

Chạy lên xem để lấy hash nha.

https://i1.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_19.12.22.png?ssl=1

Đấy, các bạn thấy có OK không ạ? Hơi ngu hơi thủ công nhỉ :v nhưng làm cho vui nên làm thế thôi.

Bây giờ thì cầm cái hash đó thay vào một user bất kỳ trong database nha, nhưng mà để cho không bị lộ thì mình tìm cái user nào mà từ lâu rồi không login ý.

https://i0.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_13.40.51.png?ssl=1

Thứ 1: Đổi password hash trong database

Thứ 2: là chuyển cái trường check_lock_account về 0

Bây giờ có tài khoản rồi đó, tài khoản là email mà mình đổi hash password, còn mật khẩu là 123456.

Thử đăng nhập vào portal nào, xem nào, xem nào. Hồi hộp quá.

https://i2.wp.com/manhnv.com/images/posts/hacking/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao/Screen_Shot_2021-01-14_at_19.18.24.png?ssl=1

⇒ OK rồi nhá, đăng nhập được rồi nhá, easy chưa. Đây vẫn là cú bypass ngu người dựa vào may mắn bên trên (Tôi viết cho có nội dung thôi, chứ hồi sau mới thực sự hấp dẫn nha). Đó chỉ là tôi thử để xem database họ lưu trữ cái gì thôi. Thực ra tôi có cách bypass authen ngon hơn ở phía dưới. Tiếp tục đọc bài viết, hồi sau sẽ rõ.

Có được account đăng nhập dễ dàng hơn.

Mình thật sự ngu ngốc, bypass thôi cũng làm ngu. hahaha

Thực ra thì trong cuộc sống ít khi mà hên gặp cái server nào nó để DEBUG thế lắm, nên việc chỉnh sửa trong database nó là case hiếm hoi. Nhưng mình có cách khác để có account dễ hơn.

Sau một hồi dạo quanh quẩn ở https://xxxx.com thì mình phát hiện web này có chức năng đăng ký khóa học, mà khi đăng ký xong nếu tài khoản chưa tồn tại trên hệ thống thì nó tự tạo tài khoản cho mình và mật khẩu được gửi vào mail, thế thì mình đăng ký thử nha.

Các bạn có thể tham khảo các bài viết hay về Laravel tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Tham khảo: https://viblo.asia/p/chi-mot-buoi-chieu-toi-da-chiem-quyen-dieu-khien-server-cua-8-website-nhu-the-nao-Do7542neZM6

Leave a Reply

Your email address will not be published. Required fields are marked *