Вводные
Нам предлагается скачать файл Illumination.zip
, имеющий хеш-сумму SHA256 cbd6cd9a9379d0f4193f35c09fa60c0753c0d31cb2848ed5d575ba99062a1331
и размер в 38054
байт, пароль для архива hackthebox
.
Задача: найти токен нового разработчика.
Проверяем файл
$ ls -la Illumination.zip
-rw-r--r-- 1 kiberdruzhinnik kiberdruzhinnik 38054 Aug 20 13:57 Illumination.zip
$ echo "cbd6cd9a9379d0f4193f35c09fa60c0753c0d31cb2848ed5d575ba99062a1331 Illumination.zip" | sha256sum -c
Illumination.zip: OK
Размер и контрольная сумма файла совпали, можно приступать к распаковке артефактов.
$ unzip Illumination.zip
hackthebox
После распаковки артефактов быстро выясняется, что в архиве лежал git-репозиторий.
Исследование git-репозитория
Так как нам предлагается найти секретный токен, то посмотрим в историю коммитов гита.
$ git log
commit edc5aabf933f6bb161ceca6cf7d0d2160ce333ec (HEAD -> master)
Author: SherlockSec <[email protected]>
Date: Fri May 31 14:16:43 2019 +0100
Added some whitespace for readability!
commit 47241a47f62ada864ec74bd6dedc4d33f4374699
Author: SherlockSec <[email protected]>
Date: Fri May 31 12:00:54 2019 +0100
Thanks to contributors, I removed the unique token as it was a security risk. Thanks for reporting responsibly!
commit ddc606f8fa05c363ea4de20f31834e97dd527381
Author: SherlockSec <[email protected]>
Date: Fri May 31 09:14:04 2019 +0100
Added some more comments for the lovely contributors! Thanks for helping out!
commit 335d6cfe3cdc25b89cae81c50ffb957b86bf5a4a
Author: SherlockSec <[email protected]>
Date: Thu May 30 22:16:02 2019 +0100
Moving to Git, first time using it. First Commit!
В истории коммитов видим коммит с хеш-суммой 47241a47f62ada864ec74bd6dedc4d33f4374699
, где разработчик благодарит участников проекта за предоставление информации о секретном токене, а также о его удалении. Логично предположить, что токен должен находиться на коммит раньше, то есть, на коммите с хеш-суммой ddc606f8fa05c363ea4de20f31834e97dd527381
.
Переключимся на этот коммит.
git reset --hard && git checkout ddc606f8fa05c363ea4de20f31834e97dd527381
После этого поищем в файлах подстроку token
с помощью grep
:
$ grep token . -R
./config.json: "token": "SFRCe3YzcnNpMG5fYzBudHIwbF9hbV9JX3JpZ2h0P30=",
...
./bot.js:client.login(Buffer.from(config.token, 'base64').toString('ascii')) //Login with secret token
Стоит обратить внимание, что токен в файле config.js
закодирован с помощью base64
(это видно из файла bot.js
).
Поэтому декодируем его:
$ echo SFRCe3YzcnNpMG5fYzBudHIwbF9hbV9JX3JpZ2h0P30= | base64 -d
HTB{v3rsi0n_c0ntr0l_am_I_right?}
На этом можно отправить флаг на проверку.