Python Cache Poisoning — это тех­ника повыше­ния при­виле­гий, осно­ван­ная на под­мене ском­пилиро­ван­ных фай­лов байт‑кода. Я покажу, как ее при­менять при ата­ке на веб‑сер­вер, а так­же раз­работа­ем свое рас­ширение для Chrome и исполь­зуем инъ­екцию команд ОС, что­бы получить дос­туп к хос­товой сис­теме.

На­ша конеч­ная цель — получить пра­ва супер­поль­зовате­ля на машине Browsed с учеб­ной пло­щад­ки Hack The Box. Уро­вень слож­ности — сред­ний.

warning

Под­клю­чать­ся к машинам с HTB рекомен­дует­ся с при­мене­нием средств ано­ними­зации и вир­туали­зации. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.

 

Разведка

 

Сканирование портов

У этой машины слу­чай­но выдан­ный IP-адрес 10.129.244.79, который я добав­ляю в /etc/hosts, что­бы обра­щать­ся к это­му хос­ту по име­ни.

10.129.244.79 browsed.htb

За­пус­каем ска­ниро­вание пор­тов.

Справка: сканирование портов

Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг в любой ата­ке. Оно поз­воля­ет зло­умыш­ленни­ку узнать, какие служ­бы на хос­те при­нима­ют соеди­нения. На осно­ве этой информа­ции он выбира­ет сле­дующий шаг, что­бы получить точ­ку вхо­да.

Са­мый извес­тный инс­тру­мент для ска­ниро­вания — Nmap. Улуч­шить резуль­таты его работы поможет сле­дующий скрипт:

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1

Он работа­ет в два эта­па. Сна­чала запус­кает­ся быс­трое ска­ниро­вание, затем — более тща­тель­ное, с помощью встро­енных скрип­тов (опция -A).

Под­робнее о работе с Nmap читай в статье «Nmap с самого начала. Осва­иваем раз­ведку и ска­ниро­вание сети».

Результат работы скрипта
Ре­зуль­тат работы скрип­та

Ска­нер нашел два откры­тых пор­та:

  • 22 — OpenSSH 9.6p1;
  • 80 — веб‑сер­вер Nginx 1.24.0.

На глав­ной стра­нице сай­та нас встре­чает плат­форма для тес­тирова­ния рас­ширений бра­узе­ра Chrome.

Главная страница сайта
Глав­ная стра­ница сай­та
 

Точка входа

На стра­нице Samples мож­но ска­чать нес­коль­ко рас­ширений.

Страница Samples
Стра­ница Samples

Ска­чива­ем пер­вый файл и смот­рим, что внут­ри архи­ва.

Содержимое архива fontify.zip
Со­дер­жимое архи­ва fontify.zip

На­иболь­ший инте­рес пред­став­ляет файл manifest.json — кон­фиг рас­ширения Chrome. В нем хра­нят­ся метадан­ные, а так­же опи­саны его струк­тура и раз­решения.

Содержимое файла manifest.json
Со­дер­жимое фай­ла manifest.json

Па­раметр matches: <all_urls> озна­чает, что content.js будет выпол­нять­ся на любом сай­те. Этот манифест мож­но исполь­зовать как шаб­лон для сво­его рас­ширения, но сна­чала перей­дем на стра­ницу заг­рузки на сер­вер рас­ширений и заг­рузим ска­чан­ный файл.

Результат загрузки файла
Ре­зуль­тат заг­рузки фай­ла

По­мимо логов тес­тирова­ния, важ­ную информа­цию дает и ответ сер­вера. Так мы узна­ем, что домен browsedinternals.htb соот­ветс­тву­ет localhost.

curl -F "extension=@fontify.zip;type=application/zip" http://browsed.htb/upload.php
Ответ сервера
От­вет сер­вера
 

Точка опоры

Сде­лаем свое рас­ширение из двух фай­лов: манифес­та Expl и скрип­та на JavaScript.

{
"manifest_version": 3,
"name": "Expl",
"version": "1.0.0",
"description": "Expl",
"permissions": ["scripting"],
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content.js"
],
"run_at": "document_idle"
}
]
}

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии