Jeden z kadetov dostal jednoduchú úlohu pripraviť jednoduchú webovú aplikáciu pre oznámenie kľúčového slova dňa. Tvrdí, že sa mu to podarilo, ale zabudol číslo portu na ktorom beží. Pre potreby bezpečnosti vytvoril aj veľa fake aplikácií. Nájdime teda kľúčové slovo, aby mohla posádka vykonávať ďalej svoje práce. Úloha je za 4 body.
Ahoy, officer,
one of deck cadets (remember your early days onboard) had a simple task to prepare simple web application to announce keyword of the day. He claimed that the task is completed, but he forgot on which port the application is running. Unfortunately, he also prepared a lot of fake applications, he claims it was necessary for security reasons. Find the keyword of the day, so daily routines on ship can continue.
Hľadanie portov
Vieme, źe weby bežia niekde na vpn adrese keyword-of-the-day.cns-jv.tcc.
Najskôr som do mobaxterm nainštaloval netcat (nmap nešiel), spustil som scan príkazom:
nc -zv keyword-of-the-day.cns-jv.tcc 1-65535
nc: connect to keyword-of-the-day.cns-jv.tcc port 656 (tcp) failed: Connection refused
nc: connect to keyword-of-the-day.cns-jv.tcc port 657 (tcp) failed: Connection refused
nc: connect to keyword-of-the-day.cns-jv.tcc port 658 (tcp) failed: Connection refused
nc: connect to keyword-of-the-day.cns-jv.tcc port 659 (tcp) failed: Connection refused
nc: connect to keyword-of-the-day.cns-jv.tcc port 660 (tcp) failed: Connection refused
nc: connect to keyword-of-the-day.cns-jv.tcc port 661 (tcp) failed: Connection refused
nc: connect to keyword-of-the-day.cns-jv.tcc port 662 (tcp) failed: Connection refused
Šlo to ale veľmi dlho, následne som objavil "port scanner" aplikáciu v mobe priamo v nástrojoch. Scan už prebehol rýchlo, porty aplikácií začínali od 60000. Výstup zo scanu som umiestnil do port60k.txt súboru.
- Port #60000: listening
- Port #60009: listening
- Port #60004: listening
- Port #60010: listening
- Port #60011: listening
...
- Port #60488: listening
- Port #60489: listening
- Port #60494: listening
- Port #60495: listening
Ide o 234 portov s webovými stránkami.
Analýza kódu stránok
Stránky po otvorení vrátili veľký smajl cez celú obrazovku. Vyzerá, že v závislosti na portoch sa vybral rôzny. V html kóde stránky je pevná štruktúra a dlhý javascript kód, ktorý do nej smajl vygeneruje.
<img id="myImage" />
vyzerá po zbehnutí kódu takto:
<img id="myImage" src="img/2.png">
Porovnal som viaceré stránky a vyzerali okrem výsledného čísla smajlu rovnako. Skúsil som teda pre javascript určený deobfuskator, ale nepomohol. Videl som len kód pre náhodné obrázky, nie logiku kedy zobraziť flag.
Diffom (zabudovaný MobaDiff) som objavil, že kód stránky sa mení len v jedinej hodnote v poli, 4té číslo od konca.
Hľadanie toho správneho
Posťahoval som cez wget zo všetkých 234 otvorených portov ich html kód.
for port in `cat ports60k.txt | cut -c9-13`; do
wget http://keyword-of-the-day.cns-jv.tcc:$port -O web_$port.htm 2>/dev/null
done
grep function web_*.htm | cut -c 1888-1897 | sort | uniq -c | grep 1\
1 0504ee2bdf
1 948cd06ca7
1 96dcf23753
Keď máme jedinečné čísla, môžeme k nim vyhľadať porty, pripojím teda ďalšie prikazy za ten predchádzajúci:
grep function web_*.htm | cut -c 1888-1897 | sort | uniq -c | grep 1\ | awk '{ print "grep "$2" web_*.htm | cut -d\":\" -f1" }'
grep 0504ee2bdf web_*.htm | cut -d":" -f1
grep 948cd06ca7 web_*.htm | cut -d":" -f1
grep 96dcf23753 web_*.htm | cut -d":" -f1
Po spustení vygenerovaných grep príkazov mi vyšli porty: 60495, 60257, 60000.
Ako som porty otváral, port 60257 bol iný, miesto smajlíka vrátil obrázok 948cd06ca7.png.
Iná možnosť hľadania
Ako som neskôr zistil, aj jednotlivé weby boli každým načítaním náhodné okrem portu 60257. Teda šlo by stiahnuť 2-3x rovnaký web a zistiť, či sa zmenil a ak áno, pokračovať.
Skúsil som si to, nakoniec som musel každý web ťahať 5x, lebo 3x mohol vrátiť náhodne rovnaký kód:
for port in `cat ports60k.txt | cut -c9-13`; do
echo "skumam port $port"
wget http://keyword-of-the-day.cns-jv.tcc:$port -O web_p1.htm 2>/dev/null
wget http://keyword-of-the-day.cns-jv.tcc:$port -O web_p2.htm 2>/dev/null
if [ "`cmp web_p1.htm web_p2.htm`" == "" ]; then
wget http://keyword-of-the-day.cns-jv.tcc:$port -O web_p3.htm 2>/dev/null
if [ "`cmp web_p1.htm web_p3.htm`" == "" ]; then
wget http://keyword-of-the-day.cns-jv.tcc:$port -O web_p4.htm 2>/dev/null
if [ "`cmp web_p1.htm web_p4.htm`" == "" ]; then
wget http://keyword-of-the-day.cns-jv.tcc:$port -O web_p5.htm 2>/dev/null
if [ "`cmp web_p1.htm web_p5.htm`" == "" ]; then
echo $port
fi
fi
fi
fi
done
skumam port 60255
skumam port 60256
skumam port 60257
60257
skumam port 60258
skumam port 60259
skumam port 60260
Aplikácia nájdená
obrázok načítaný na správnom porte miesto smajla |
Otvoril som teda v prehliadači adresu: http://keyword-of-the-day.cns-jv.tcc:60257/948cd06ca7
Tu je naša vlajka:
Your flag is FLAG{DEIE-fiOr-pGV5-8MPc}
Žiadne komentáre:
Zverejnenie komentára