Skip to content

Latest commit

 

History

History

Instrukcje do zadań

Zadanie pierwsze

1. Krótki rekonesans (wappalyzer) + przeklikanie aplikacji. Rozpoznać w jakiej technologii została stworzona.
2. Znaleźć podatny parametr. Jako przykład odczytać zawartość pliku /etc/passwd
3. Znaleźć flagę. (flaga znajduje się w jednym z plików z fuzzing list)

Zadanie drugie

Zadanie drugie jest kopią zadania pierwszego, z tą różnicą, że tutaj została podjęta próba wyeliminowania podatności path traversal. Kod do zadania:

app.get('/task2/cat', (req, res, next) => {
	var filename = req.query.filename.replace(/\.\.\//g,'')
  if(filename.includes('flag.js')) filename = '1.jpg'
	var type = mime[filename.split('.').pop()] || 'text/plain';
	res.setHeader('Content-Type', type);
	fs.readFile('images/'+filename, function(err, data){
	    	if(err){
			 next(err)
		} else {
			res.send(data)
		}
	});
})
1. Znaleźć sposób na obejście filtrowania. Analogicznie odczytać zawartość pliku /etc/passwd.
2. Wykorzystując informacje dotyczące technologii z zadania pierwszego, znaleźć listę typowych nazw plików charakterystycznych dla tej technologii.
3. Znaleźć flagę, która znajduje się w jednym z plików z kodem źródłowym aplikacji.

Zadanie trzecie

Formularz w zadaniu trzecim umożliwa wgrywanie plików ZIP na serwer, który następnie rozpakowuje archiwum i umożliwia przeglądanie rozpakowanych plików.

1. Znaleźć sposób na czytanie dowolnych plików poprzez upload ZIP.
2. Znaleźć flagę. Wskazówka dotycząca lokalizacji flagi znajduje się w kodzie zadania drugiego.

Zadanie czwarte

Funkcjonalność dokładnie taka sama jak w zadaniu trzecim. Celem tego zadania jest wykorzystanie podatności path traversal do uzyskania możliwości zdalnego wykonania kodu na serwerze.

1. Przeczytać komentarz zawarty w metodzie obsługującej zadanie czwarte.
2. Na podstawie odszukanego błędu znaleźć sposób na zapisywanie plików do dowolnego miejsca na serwerze.
3. Zastanowić się jak można przejść od możliwości pisania do dowolnego miejsca na serwerze do wykonania kodu.
4. Zdobyć flagę. Znajduje się ona w wykonywalnym pliku flag, znajdującym się w katalogu domowym jednego z użytkowników.

Materiały

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Directory%20Traversal#interesting-linux-files
https://github.com/danielmiessler/SecLists/tree/master/Fuzzing/LFI
https://github.com/ptoomey3/evilarc
https://www.owasp.org/index.php/Path_Traversal

Uruchomienie aplikacji w dockerze

sudo docker build -t vulnerable_express_app .
sudo docker run -p 3000:3000 -p 2222:22 -d vulnerable_express_app

Przydatne komendy dockerowe

sudo docker ps
sudo docker kill contaitner_id
sudo docker exec -ti container_id /bin/bash