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 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.
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.
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.
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
sudo docker build -t vulnerable_express_app .
sudo docker run -p 3000:3000 -p 2222:22 -d vulnerable_express_app
sudo docker ps
sudo docker kill contaitner_id
sudo docker exec -ti container_id /bin/bash