목록2019/08/05 (2)
trash houz
CSAW CTF 2015에서 출제된 stringIPC라는 Kernel Exploitation 문제이다. 로드되어있는 모듈은 IPC를 통하여 통신할 수 있는 기능을 제공하며 새로운 IPC 채널을 생성, 찾기, 크기 변경 등이 가능하다. 각 채널은 생성 시 채널 ID 와 버퍼가 커널 메모리에 할당되고, 버퍼에 내용을 쓰거나 수정, 버퍼크기 변경 등이 가능하다. 문제 출제시 소스코드를 제공했으므로 IDA로 분석하는 참극은 일어나지 않도록 하자. https://github.com/mncoppola/StringIPC/blob/master/main.c mncoppola/StringIPC CSAW CTF 2015 Linux kernel exploitation challenge. Contribute to mncoppo..
리눅스 커널 소스에는 이런 것이 있다. include/linux/sched.h 를 연 뒤에 task_struct 구조체를 찾아보자. 쭈욱 내리다보면 process credentials 주석 처리된 부분이 보인다. cred 구조체를 가르키는 포인터인 *real_cred와 *cred는 보통은 같은 구조체를 가리키고 있다고 한다. *real_cred는 다른 프로세스가 현재 프로세스에 접근하려고 하면 가져야 하는 권한을 나타내고 있다. *cred 는 현재 프로세스가 다른 task에 접근하는 등 어떠한 동작을 할 때 가지는 권한을 나타낸다. *cred 구조체를 수정하면 현재 프로세스가 행사하는 권한을 root 권한으로 변경할 수 있을 테고, 원하는 동작을 할 수 있게 된다.(쉘 실행 등) 원하는 곳에 쓸 수 있는..