Загальні проблеми експлуатації
Reading time: 2 minutes
tip
Вивчайте та практикуйте 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.
FD у віддаленій експлуатації
Коли ви надсилаєте експлойт на віддалений сервер, який викликає 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
, що надсилається.
Тут ви можете знайти приклад цієї поведінки.
tip
Вивчайте та практикуйте 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.