분류 전체보기 58

Old revenge 43 | webhacking.kr

문제의 서버에 접속하면 아래와 같이 파일업로드란과 함께 소스코드가 주어진다. - 소스코드 분석 You must upload webshell and cat /flag text파일을 넣으니 wrong type이 뜨는 것을 확인할 수 있다. 아무개 jpg파일을 업로드하니 done!이 뜬다. 패킷을 잡아보니 content-type이 image/jpeg임을 확인 webshell_ php파일을 업로드하니 wrong type이라고 뜬다. 여기서도 패킷을 잡아보니 소스코드에서 막는 application/octet-stream임을 확인하였다. - exploit webshell php 파일의 content-type을 image/jpeg로 변경한 후, forward를 통해 패킷을 날려보자. 그래서 아예 파일 업로드 취약점을..

Web Hakcing 2024.03.28

linux library exploit :: _rtld_global

+ Glibc 2.34 이전 버전에서 수행 가능한 공격 기법이므로 Glibc 2.27버전을 내장하는 Ubuntu 18.04 64-bit환경에서 실행됨 기본적으로 종료를 하는 프로그램 내에서 로더를 통하여 다양한 함수들이 호출된다. 이 과정에서 호출되는 함수를 순서대로 알아보자. __Gl_exit >> _run_exit_handlers >> _dl_final >> _rtld_global __Gl_exit main 함수 내에서 리턴 명령어 실행 시, 스택 최상단에 있는 __libc_start_main+231 의 코드가 진행되고, 내부에서 __GL_exit 함수를 호출한다. => 0x7ffff7a25240 :lea rsi,[rip+0x3a84d1] # 0x7ffff7dcd718 0x7ffff7a25247 :s..

System Hacking 2024.03.28

Master Canary

Background : Master Canary TLS (Thread Local Storage) 스레드의 전역변수를 저장하기 위한 공간으로 loader에 의해서 할당 init_tls() : 로더에서 TLS 영역을 할당하고 초기화 하는 함수 static void * init_tls (void) { /* Construct the static TLS block and the dtv for the initial thread. For some platforms this will include allocating memory for the thread descriptor. The memory for the TLS block will never be freed. It should be allocated accordi..

System Hacking 2024.03.24

SECCOMP

Sandbox 외부의 공격으로부터 시스템을 보호하기위해 설계된 기법 : allow list/ deny list 둘 중 선택하여 적용 가능 -> sandbox 메커니즘 중 하나 : SECCOMP seccomp (secure computing mode) 리눅스 커널에서 sandboxing 매커니즘을 제공하는 컴퓨터 보안 기능 -> 어플리케이션에서 불필요한 시스템 콜의 호출을 방지할 수 있다! STRICT_MODE read, write, exit, sigreturn 시스템 콜의 호출만을 허용 -> 이외의 것은 sigkill 시그널로 프로그램 종료 #include #include #include #include // prctl함수를 통해 STRICT_MODE설정 void init_filter() { prctl(..

System Hacking 2024.03.23

Path Traversal

리눅스 경로 절대경로 루트 디렉토리 ("/")부터 파일에 이를 때까지 거쳐야하는 디렉토리 명을 모두 연결하여 구성 상대경로 현대 디렉토리를 기준으로 다른 파일에 이르는 경로를 상대적으로 표현하는 것 이전 dir (..) / 현재 dir (.) 를 이용하여 구성 Path Traversal 권한 없는 경로에 프로세스가 접근할 수 있는 취약점 : 권한 - 서비스 로직 관점에서의 권한을 의미 : 서버의 중요한 데이터를 공격자에게 노출시킬 수 있고, 데이터를 w할수 있다면 /etc/passwd를 조작하여 root의 비밀번호를 제거하거나, ssh의 설정을 변경하는 등 위협이 되는 행위를 할 수 있음

System Hacking 2024.03.23

command injection

Command Injection : 명령어를 실행하는 함수에 사용자가 임의의 인자를 전달할 수 있을 때 발생하는 취약점 Meta 문자 description example $ 셸 환경변수 $echo $PWD && 이전 명령어 실행 후 다음 명령어 실행 $echo hello && echo theori ; 명령어 구분자 $echo hello; echo theori * 와일드 카드 $echo .* ' 명령어 치환 $echo 'echo hellotheori' 예시로 ping [userinput]의 경우 userinput = 'a; /bin/sh' 입력 시에 ping실행 후에 셸 획득가능 + system함수 명령어 실행과정 library내부의 do_system함수 호출 - do_system함수는 "sh-c"와 sy..

System Hacking 2024.03.23

Logical Bug : Type Error

자료형 : 변수의 크기를 정의, 용도를 암시 -> int (예) - 4바이트의 공간이 할당 & 해당 메모리 대상으로 연산 실행 (한번 할당된 메모리는 확장되거나 줄지x) => 1바이트: 0xff 를 넘어서면 0x100이 아닌 0x00이 되어 데이터가 유실 (overflow) => 4바이트: 0x0123456789abcdef대입 시 0x 89abcdef만 저장되고 나머지는 유실 ==> Type Error 타입 에러 자료형 변수의 자료형 선언 : 변수를 활용하는 동안 담게 될 크기 ,용도, 부호 여부 등을 고려해야 : 같은 자료형이어도 os 에 따라 크기가 달라질 수 o ( long : 4바이트(32bit) / 8바이트 (64bit)) 자료형크기범위용도 (signed) char 1 바이트 정수, 문자 uns..

System Hacking 2024.03.22

Double Free Bug | dreamhack

Memory Corruption : Double Free Bug: free로 청크 해제시 tcache나 bins에 추가하여 관리 - 다시 유사크기 재요청 시에 청크 재할당 by 이중 원형 연결리스트 탐색:이때! free로 해제한 청크로 다시 free할 때 발생하는 현상 free : 청크를 추가 / malloc은 청크를 꺼냄=> 임의의 청크 1개에 대해 free를 두번이상 적용 => 청크를 free list (tcache / bins 등) 에 여러번 추가할 수 있음을 의미==> 중복 청크 (duplicated) free list 를 이용하면 임의 주소에 청크를 할 수 있는 취약점 : DFB 취약점   Double Free Bug (DFB)같은 청크를 두 번 해제할 수 있는 버그 : 공격자에게 임의 주소 쓰..

System Hacking 2024.03.17

Use After Free | dreamhack

ptmalloc2 memory allocator는 한정된 메모리 자원을 각 프로세스에 효율적으로 배분하여 동적으로 할당하고, 할당한 메모리의 쓰임이 다하면 해제하여 관리한다. memory allocator에 사용되는 알고리즘 : 리눅스 - ptmalloc2 / 구글 - tcmalloc 등 ptmalloc2 1. 메모리 낭비 방지 메모리 할당 요청이 발생하면, 먼저 해제된 메모리 공간 중에서 재사용할 수 있는 공간 탐색 : 해제된 메모리 공간 중에서 요청된 크기와 같은 크기의 메모리 공간이 있다면 이를 그대로 재사용 2. 빠른 메모리 재사용 tcache 또는 bin이라는 연결 리스트에 해제된 메모리 공간의 주소를 기억 : 서로다른 크기의 메모리 공간을 저장 => 특정 크기 할당 요청 시 크기에 관련된 저장..

System Hacking 2024.03.17