Common Exploiting Problems
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 (той, що належить з'єднанню атакуючого), щоб це зробило можливим зв'язок з оболонкою після її виконання.
Socat & pty
Зверніть увагу, що socat вже передає stdin
та stdout
до сокета. Однак, режим pty
включає символи DELETE. Тому, якщо ви надішлете \x7f
( DELETE
-) це видалить попередній символ вашого експлойту.
Щоб обійти це, символ втечі \x16
повинен бути попереджений перед будь-яким \x7f
, що надсилається.
Тут ви можете знайти приклад цієї поведінки.
Last updated