background

    [how2heap] Tcache Poisoning (glibc 2.31/2.35)

    glibc 2.31 https://github.com/shellphish/how2heap/blob/master/glibc_2.31/tcache_poisoning.c #include #include #include #include int main() { // 버퍼링 비활성화 setbuf(stdin, NULL); setbuf(stdout, NULL); printf("이 파일은 malloc을 속여 임의의 위치(이 경우 스택)를 가리키는 포인터를 반환하도록 하는 간단한 tcache 독립성 공격을 보여줍니다.\n" "이 공격은 fastbin 손상 공격과 매우 유사합니다.\n"); printf("패치 후 https://sourceware.org/git/?p=glibc.git;a=commit;h=77dc0d8643a..

    [Linux Kernel Exploit] ROP (with ret2usr)

    ROP를 활용해서 ret2usr를 하는 방법에 대해 알아보려고 한다. 익스플로잇 순서는 다음과 같다. (ret2usr과 동일)prepare_kernel_cred(0); 수행 ("root"의 자격 증명 준비)prepare_kernel_cred() 함수의 리턴 값("root"의 자격 증명)을 commit_creds() 함수에 전달system("/bin/sh"); 예제로는 [QWB CTF 2018] core 문제를 보기로 했다. https://github.com/ctf-wiki/ctf-challenges/blob/master/pwn/kernel/QWB2018-core/rop.c trap frame을 만들고 ret2usr기법을 활용하는 것은 동일하다. 다만, LPE를 함수로 하는 것이 아니라 가젯으로 하기 때문..

    [fuzzing101] Exercise 3 - TCPdump (CVE-2017-13028) (2)

    [fuzzing101] Exercise 3 - TCPdump (CVE-2017-13028) (2)

    bootp 관련 크래시를 못 찾았기 때문에 다른 분들의 글을 보면서 분석하겠습니다. 먼저 콜 스택은 다음과 같다. print-bootp.c:325 ND_PRINT((ndo, ", Flags [%s]", bittok2str(bootp_flag_values, "none", EXTRACT_16BITS(&bp->bp_flags)))); EXTRACT_16BITS는 다음과 같다. ntohs를 수행하는 그냥 엔디안 변환 함수인 듯 하다. extract.h:150 static inline uint16_t EXTRACT_16BITS(const void *p) { return ((uint16_t)ntohs(*(const uint16_t *)(p))); } bootp_flag_values는 다음과 같다. 브로드캐스트와 관..

    Kernel Address Display Restriction (KADR)

    Kernel Address Display Restriction (KADR)

    커널 익스플로잇에는 필요한 가젯, 커널 함수들의 주소 등의 정보가 필요하다. 커널에서는 KADR에 의해 커널 영역의 주소를 민감한 정보로 처리하고 있으며 일반 로컬 사용자에게 보이지 않는다. 즉, /boot/vmlinuz*, /boot/System.map*, /sys/kernel/debug/, /proc/slabinfo와 같은 것들은 루트만 읽을 수 있다. Ubuntu 11.04부터 "/proc/sys/kernel/kptr_rr_rrestrict"는 알려진 커널 주소 출력을 차단하기 위해 "1"로 설정되어 있다. 다음과 같이 일반 유저로 "/proc/kallsyms" 파일을 읽으면 심볼의 주소가 0으로 덮여져서 출력되는 것을 확인할 수 있다. 반면, 루트 권한으로 해당 파일을 읽을 경우 각 심볼들의 주소..

    [Linux Kernel Exploit] ret2usr

    [QWB CTF 2018] core 문제에서 ret2usr 기법이 사용되었는데 ret2usr에 대해 알아보도록 하자. https://ssongkit.tistory.com/767 [QWB CTF 2018] core (with write-up) 롸업과 함께하는 첫 리눅스 커널 문제 환경 세팅 문제 파일은 여기서 받을 수 있다. https://github.com/ctf-wiki/ctf-challenges/tree/master/pwn/kernel/QWB2018-core ctf-challenges/pwn/kernel/QWB2018-core at master · ctf-wiki/ctf-c ssongkit.tistory.com LPE 먼저 커널에서 권한 상승(LPE)을 하기 위해선 commit_creds(prepar..