Common Exploiting Problems
원격 Exploitation에서의 FDs
예를 들어 **system('/bin/sh')
**를 호출하는 원격 서버로 exploit을 전송할 때, 이는 물론 서버 프로세스에서 실행되며, /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
-)를 보내면 exploit의 이전 문자가 삭제됩니다.
이를 우회하기 위해 \x7f
를 보내기 전에 이스케이프 문자 \x16
을 추가해야 합니다.
여기에서 이 동작의 예제를 찾을 수 있습니다.
Last updated