Geisha là 1 cỗ máy leo thang quyền trên Linux được thiết kế bởi SunCSR team, thông tin về cỗ máy các bạn có thể xem thêm tại đây Show Sơ lược thì geisha là 1 phòng thí nghiệm khá cơ bản nên với bài Sumo lần trước mình làm thì bài này có thêm nhiều "lỗ thỏ" để lừa đảo và làm mình mất thời gian. Cũng như bài viết Sumo trước đó, bài viết này cũng sẽ được trình bày theo từng bước một, từ bước cơ bản nhất cho đến khi lên root Cài đặt máy GeishaSau khi tải file OVF về chúng ta chỉ cần giải nén ra, sau đó mở bằng VMware. Tệp > Mở. (Ctrl + O) để tiến hành cài đặt máy Lưu ý. Geisha mặc định đang ở chế độ Bridge, trước khi chạy máy chúng ta cần chuyển sang chế độ NAT Up root Search informationQuét IP của máyĐầu tiên mình cần kiểm tra ip của máy ảo Kali bằng lệnh. 2IP của Kali là 3, để tìm được ip của Geisha mình sẽ thực hiện quét các ip trong cùng dải mạng bằng lệnh 0. Tham số 1 để không quét các cổng, tăng tốc quá trình quét tập tin trung vào việc tìm kiếm ipĐã có ip của máy Geisha là 2Quét các cổng và dịch vụThường thì các bài lab, các máy có nhiều "lỗ thỏ" hoặc các bài ở mức độ khó vừa - cao sẽ mở rất nhiều cổng, chạy rất nhiều dịch vụ để làm nhiễu. Các máy này sẽ yêu cầu người làm phải nhạy bén, nhận biết sớm các đối tượng cần chú ý và chuyển sang hướng làm khác để không đi lạc quá sâu vào "treo thỏ" Biết thế nào rồi, trước khi đến đấy chúng ta phải tìm ra cái "lỗ thỏ" thì mới biết đường mà tính được. Lần này mình sử dụng thêm 1 vài tham số với bài Sumo. 3
Như kết quả trả về, Geisha chạy dịch vụ web trên các cổng 80, 7080, 7125, 8088 và 9198,các cổng này khi truy cập đều hiển thị cái từng ảnh giống nhau. Quét các thư mục của dịch vụ webDo việc truy cập trực tiếp các dịch vụ web không thu nhỏ được thông tin gì, mình tiếp tục thực hiện quét các thư mục, đường dẫn của mỗi dịch vụ. Mình sử dụng công cụ dirsearch để quét, lệnh sử dụng là 4
Kết quả quét cổng 80 Nhưng mà Kết quả quét cổng 7080 Nhưng mà đều 404 hết, nên là Kết quả quét cổng 7125 Trông có vẻ hay ho, nhưng cứ để tạm đó đã, lát mình sẽ quay lại sau Kết quả quét cổng 8088 Có nhiều kết quả ở đây, mình đã thử truy cập hết. Kết quả thật bất ngờ. chẳng có gì cả -_- Kết quả quét cổng 9198 Continue is Kiểm tra cổng 7125Xem lại kết quả quét thì có 3 đường dẫn cần kiểm tra là /index. php, /chỉ mục. php/đăng nhập và /passwd Hai đường dẫn đầu thì không có gì đặc biệt, nhưng khi truy cập đường dẫn /passwd sẽ tải được 1 file passwd
SSH vũ phuKhi máy chủ bật dịch vụ SSH, mình có thể thử Brute Force SSH để truy cập vào máy chủ. Tuy nhiên, công việc Brute yêu cầu cần có danh sách từ lớn và mạnh mẽ mới thực sự hiệu quả Ở máy này tác giả cho mình Chắc file /etc/passwd nên có thể thử Brute Force SSH được. Phân tích file passwd có thể thấy ngay user geisha có uid=1000. Thường thì khi cài đặt Linux, đầu tiên người dùng do chúng ta tạo sẽ có uid=1000, những người dùng được tạo sau đó sẽ có uid tăng dần từ 1000. Như vậy có thể thử mật khẩu Brute Force SSH của người dùng geisha Nếu như có ai thắc mắc liệu người dùng có thể vũ phu được không thì đây là câu trả lời
Search qua qua thì mình tìm được hướng dẫn Brute Force SSH khá đơn giản trên hacknos. Tất cả công việc mình cần làm là chạy lệnh 5 và ngồi đợi. Sau thời gian pha 1 cốc cafe thì công cụ Hydra đã hoàn thànhOK, đã có user name là geisha và password là letmein, giờ thì SSH vào thôi Tìm đường lên gốc Khai thác hạt nhânSau khi kiểm tra thấy máy đang chạy kernel bản 4. 19 mình search ngay xem có cách nào khai thác được không. Mình có thể dễ dàng tìm thấy PoC của CVE-2019-13272 cho phép cấp quyền root Xin lỗi là mình chưa thử xem mã trên có hoạt động với kernel bản này hay không. Do máy không cài đặt gcc, user geisha thì không có quyền sudo, và file /etc/sudoers cũng không được chỉnh sửa luôn. Do đó là đường Kernel khai thác cụt Leo quyền nhờ SUIDLý thuyếtLeo quyền qua SUID là một trong những hướng dễ tiếp cận. Ý tưởng cơ bản là tìm các tệp điều kiện đối xứng 2
Khi 1 file đáp ứng các điều kiện trên thì bất kỳ user nào chạy file này đều sẽ tương thích với user root chạy file. Nói đơn giản thì coi như chúng ta có quyền root (với cái file đó thôi. v) Ví dụ khi kiểm tra cờ tập tin bằng lệnh ls -la được xuất ra sau
Khi đó chỉ user root mới có quyền đọc file flag. Nếu lúc này kiểm tra tệp /usr/bin/nl bằng lệnh ls -la đã được kết quả ________số 8Thì người dùng thường sẽ chạy lệnh nl với quyền root và có thể đọc cờ tệp Áp dụng vào máy GeishaĐầu tiên, ta thực hiện tìm kiếm các tập tin được chạy với quyền root bằng lệnh 6Các tập tin trong /usr/bin/ là các lệnh được chạy với quyền root
Khi tìm kiếm trên gtfobins cũng có thể sử dụng lệnh base32 để tiến hành leo quyền. Trong trường hợp /usr/bin/base32 có gắn suid thì có thể vượt quyền, đọc các tệp không được cấp quyền truy cập Chi tiết xem tại base32. GTFOBin Đọc khóa riêng SSHVới SUID được gắn cho lệnh base32 thì mình có thể đọc được rất nhiều file, tuy nhiên để đọc được luôn cờ thì mình phải biết cờ lưu ở đâu. Cách này thì hơi hên xui, dựa vào kinh nghiệm mà đoán thì mình cũng may mắn đoán được 1 trong 4 cái tên
Tuy nhiên cách này không chắc lắm, nên mình muốn tìm 1 cách khác chính thống hơn. Nghĩ về việc đọc được các file quan trọng trên Server Linux thì mình có 2 ý tưởng
Sau khi đọc /etc/shadow thì mình cứ tắt luôn ý tưởng đi tiếp 0Thấy trường mật khẩu của người dùng root bắt đầu với $6$ là mình thấy hướng này không tương lai rồi. Bởi vì đó là dấu hiệu cho thấy mật khẩu được băm với SHA-512 cơ. Nếu là $1$ - MD5 thì có khả năng crack được, SHA-512 thì chịu thôi Như vậy thì chỉ còn 1 hướng đó là đọc SSH private key thôi. Khóa cá nhân của người dùng root nằm tại /root/. ssh/id_rsa. Theo hướng dẫn trên GTFOBins, thì có thể đọc được bằng lệnh 7 |