Р. Эрик Кисер
Специалисту по тестированию на проникновение важно собрать как можно больше информации о скомпрометированных пользователях или системах. Полезный метод бокового перемещения — раскрыть часто используемые ресурсы пользователя, извлекая его закладки из Google Chrome. С полученными закладками вы можете затем использовать сценарий для сбора информации или, если у вас есть удаленный доступ через графический интерфейс, вручную посещать каждую страницу, чтобы узнать, можно ли извлечь пароли.
Нам нужно будет импортировать несколько модулей для извлечения данных. os
и shutil
импортируются для доступа к файловой системе и копирования файлов. import sys
и import tempfile
импортируются для проверки платформы и создания временного каталога.
import os import sys import shutil import tempfile
Создайте переменную, которая является путем к файлу закладок в локальной файловой системе bookmarks_file
. Путь отличается в зависимости от операционной системы, и скрипт проверяет платформу с помощью переменной sys.platform
и устанавливает правильный путь.
bookmarks_file = os.path.expanduser('~/Library/Application Support/Google/Chrome/Default/Bookmarks')
Создайте условие, которое проверяет, существует ли файл закладок в локальной файловой системе. Если файл не существует, сценарий выводит сообщение об ошибке и завершает работу с кодом состояния 1.
if sys.platform == 'win32': bookmarks_file = os.path.expandvars(r'%LOCALAPPDATA%\Google\Chrome\User Data\Default\Bookmarks') elif sys.platform == 'darwin': bookmarks_file = os.path.expanduser('~/Library/Application Support/Google/Chrome/Default/Bookmarks') if not os.path.exists(bookmarks_file): print('Error: unable to locate your bookmarks file') sys.exit(1)
Создайте временный каталог с помощью модуля tempfile
.
temp_dir = tempfile.mkdtemp()
Создайте основную логику скрипта, используя блок try...finally
. Это скопирует файл закладок во временный каталог, обновит файл закладок во временном каталоге, обновит новую переменную пути закладок, откроет файл закладок в режиме чтения и прочитает содержимое в переменную data
. Затем нам нужно будет создать новый файл с именем bookmarks.html
в режиме записи и записать в него содержимое переменной data
. Затем для нашего finally
удаляет временный каталог, следя за тем, чтобы в файловой системе не осталось ненужных файлов.
try: shutil.copy2(bookmarks_file, temp_dir) bookmarks_file = os.path.join(temp_dir, os.path.basename(bookmarks_file)) with open(bookmarks_file, 'r') as f: data = f.read() with open('bookmarks.html', 'w') as f: f.write(data) finally: shutil.rmtree(temp_dir)
Последнее, что мне нравится делать, — это печатать подсказку, подтверждающую, что задание выполнено.
print ("bookmarks successfully downloaded in the current working directory")
Сохраните скрипт и обязательно установите зависимости с помощью pip. Теперь у вас есть сценарий, который создаст файл с именем bookmarks.html
в текущем рабочем каталоге с экспортированными закладками пользователей, вошедших в систему.