Common Exploiting Problems
FDs in Remote Exploitation
Beim Senden eines Exploits an einen Remote-Server, der beispielsweise system('/bin/sh')
aufruft, wird dies natürlich im Serverprozess ausgeführt, und /bin/sh
erwartet Eingaben von stdin (FD: 0
) und gibt die Ausgabe in stdout und stderr aus (FDs 1
und 2
). Der Angreifer kann also nicht mit der Shell interagieren.
Eine Möglichkeit, dies zu beheben, besteht darin anzunehmen, dass der Server beim Starten die FD-Nummer 3
(für das Zuhören) erstellt hat und dass dann Ihre Verbindung in der FD-Nummer 4
erfolgt. Daher ist es möglich, den Syscall dup2
zu verwenden, um stdin (FD 0) und stdout (FD 1) in FD 4 (der des Angreiferanschlusses) zu duplizieren, sodass es möglich wird, die Shell zu kontaktieren, sobald sie ausgeführt wird.
Socat & pty
Beachten Sie, dass socat bereits stdin
und stdout
zum Socket überträgt. Der pty
-Modus beinhaltet jedoch DELETE-Zeichen. Wenn Sie also ein \x7f
(DELETE
) senden, wird das vorherige Zeichen Ihres Exploits gelöscht.
Um dies zu umgehen, muss das Escape-Zeichen \x16
jedem gesendeten \x7f
vorangestellt werden.
Hier finden Sie ein Beispiel dieses Verhaltens.
Last updated