#dokydoky
0x01. Intro안녕하세요. dokydoky입니다. Nginx 1.3.9/1.4.0에서 unsigned int와 signed int의 잘못된 Type Conversion으로 stack buffer overflow가 발생될 수 있는 취약점이 있습니다. 2013년 5월에 발표된 취약점(CVE-2013-2028)이지만, 취약점을 공부하는데 좋은 예라고 생각되어 정리해봤습니다. 우선 왜 취약점이 발생하는지 코드를 통해 살펴본 후, Ubuntu x64 환경에 3가지 mitigation(NX, ASLR, STACK CANARY)을 하나씩 추가하면서 어떻게 익스플로잇을 하는지 알아보겠습니다. * Environment Github에 Vagrant로 작업환경을 만들어둔 감사한 분이 있어서, 해당 환경을 이용했습니다...
context에서 architecture, os를 지정한 후 아래와 같이 쉘코드를 생성할 수 있다.shellcraft.bindsh은 standalone 데몬을 remote exploit하기 위한 쉘코드.shellcraft.sh은 local exploit이나 xinetd로 관리되는 바이너리를 exploit하기 위한 쉘코드(stanalone, xinetd가 이해되지 않는다면 참고 : http://dokydoky.tistory.com/446) In [57]: from pwn import * In [58]: context(arch='amd64', os='linux') In [59]: print "".join(['\\x{:02X}'.format(ord(i)) for i in asm(shellcraft.bindsh..
0x1. 들어가며안녕하세요. dokydoky입니다. remote에서 exploit 할 때, shell을 얻는 방법에 대해서 정리해보겠습니다. 이하 존칭어는 생략하겠습니다.네트워크 프로그램을 구현하는 방법에는 두 가지가 있다. - 표준 입출력을 사용해 프로그램을 구현한 후, Inetd 혹은 Xinetd 데몬을 이용하여 네트워크로 연결. - Standalone 모드 : socket과 같은 독립적인 네트워크 프로토콜을 사용하여 구현하여 실행.각 방법에 따라 어떻게 원격에서 쉘을 얻을 수 있는지 예를 통해 알아보겠다.예제 코드에서는 원격에서 shellcode를 삽입하는 대신, 서버 코드에 미리 shellcode의 기능을 하는 동일한 코드를 구현해놓았다.exploit할 때는 서버에서 shellcode 라고 표시되..