SystemHack
윈도우 운영체제 구조
윈도우 운영체제 구조 윈도우 NT 아키텍쳐 커널모드와 유저모드의 두 가지 메인 구성요소로 설계 자원낭비를 줄이기 위해 여러 부분으로 쪼개어 설계됨 윈도우 Ring 구조 각 계층을 구분하여 운영, 시스템의 보안수준을 높은 상태로 유지하기 위해 고안됨. 커널모드 하드웨어 ~ 각종관리자 사용자가 "직접" 접근이 불가능한 영역. 프로그램을 실행하는 기본 관리 시스템이 위치함. 커널 : 운영체제의 중심에 위치함으로써, 운영체제의 핵심 기능들을 제공하고, 하드웨어를 비롯한 각종 장치들의 제어를 담당함. 하드웨어 HAL (Hardware Abstraction Layer) : 하드웨어 - 소프트웨어간 원할한 통신을 위한 역할. 윈도우의 기본 표준역할을 하기때문에 새로운 하드웨어가 시스템에 추가되어도 HAL 표준만 지키..
[CVE-2019-8942] WordPress Image CROP RCE
POC & Dockerfile : https://github.com/synod2/WP_CROP_RCE 본 문서에서는 Wordpress 4.9.9 및 5.0.1 이전 버전에서 발견된 취약점으로써, WordPress Image CROP RCE로 알려진 CVE-2019-8942와 CVE-2019-8943에 대해 다룬다. CVE 번호 공개일 설명 CVE-2019-8942 2019-2-19 wp_postmeta 테이블 값을 통해 악성코드가 담긴 PHP를 실행, 원격 코드 실행이 가능한 취약점 CVE-2019-8943 2019-2-19 업로드된 이미지의 크기정보 따위가 변경되는 동작 발생시, meta_input 파라미터를 이용하여 임의 경로에 파일을 저장할 수 있는 취약점 CVE-2019-8942 은 이미지 파일의..
퍼징 2일차 - 02.14
어젠 하루종일 세팅만 하다가 시간이 다 간거같다. 파이썬 버전관리를 위해 콘다를 설치해서 사용한다. 콘다 설치 설치 완료후에 퍼저를 돌리기 위한 환경을 설정한다. conda create -n bff python=2.7 //가상 환경 생성 conda env list // 현재 내가 만든 환경 목록 이후 activate 환경명 과 같이 입력하면 내가 생성한 환경이 활성화된다. 커맨드라인 콘솔 맨 앞에 ()가 표시되면 가상환경이 활성화 된 것. 가상환경에서 bff를 사용해야 하기에, 필요한 라이브러리들은 별도로 설치를 해줘야된다. bff 2.8 기준으로 필요한 라이브러리들은 다음과 같다. numpy scipy pyYAML pywin32 python WMI pip install numpy scipy pyYAML..
윈도우 퍼징 1일차 - 02.13
"Fandu-버그 헌팅 튜토리얼" 문서 보면서 따라가보기 colean -window exploit guide bff 퍼저 설치 퍼징 손퍼징과 퍼저를 이용하는 방식의 두 가지가 존재함. 시드 파일 : 프로그램 크래시 발생시키는 원인 입력파일. 파일 형식별로 만들어져 있기도함. BFF 퍼저 뮤테이션 : 시드파일을 무작위로 바꿔가면서 진행 제네레이션 : 프로토콜과 프로그램 형식에 맞게 시드파일을 생성 프로그램 취약점을 찾기 위해선 프로그램의 구조에 대한 이해가 우선 시드로 사용될 파일 구조에 대한 이해도 필요 익스플로잇은 그 다음 BFF Fuzzer 다운로드 링크 기본적으로 환경이 세팅된 vmx를 제공함. 윈도우 버전도 있는거 같은데, 두가지를 다 시도해보자. 일단 윈도우 버전 - Windows Install..
쉘쇼크에 대한 잡설
쉘쇼크(CVE-2014-6271) 라는 취약점에 대해 최근들어 알게된 몇가지 내용들이 있다. 원래 알고있던 내용은, bash쉘을 사용하는 유닉스 기반 운영체제에서 발생하는 취약점으로써, 환경변수에 함수 형태로 명령어가 삽입되어 공격자가 원하는 쉘 명령어가 실행된다는 정도로 요약이 된다. () { :; } ; ls 위와같은 기본형을 가지고 있는데, 이것이 환경변수에 들어가면 ;(세미콜론) 이전은 함수로, 이후부터는 완전히 새로운 부분이라고 인식이 되고, 세미콜론 이후에 들어오는 쉘 명령어를 실행하게 된다는 것. 아, 환경변수에 들어간 문자열이 명령어가 되어 실행되는구나, 그런데 이게 왜 문제가 되지??? 라는 생각을 할 수 있다. 나도 쉘쇼크를 개념적으로만 알 뿐, 실제로 어떻게 동작하는지는 몰랐었고. 그..
워게임 사이트 몇개 더..
디스코드 하다가 우연히 찾았는데, pwnable.kr > w3challs.com > pwnable.tw > root-me.org > pwnable.xyz 순서로 공부하라는 채팅이 오가고 있었다. 펀케알, tw, xyz는 알고있는 사이트들이었는데 나머지 둘은 첨들어봤다. 나중에 한번 봐야지 www.root-me.org Bienvenue [Root Me : plateforme d'apprentissage dédiée au Hacking et à la Sécurité Plusieurs centaines de challenges sont à votre disposition pour vous entrainer dans des environnements variés, non simulés et maitriser u..
glibc 코드 보는 사이트
elixir.bootlin.com/glibc/elixir.bootlin.com/glibc/latest/source/libio/wfileops.c 버전별로 소스코드 보는 기능을 지원하고, 선언된 변수들을 클릭하면 자동으로 인덱싱해서 찾아주는 기능도 제공하는 사이트 . code.woboq.org/userspace/glibc/libio/wfileops.c.html wfileops.c source code [glibc/libio/wfileops.c] - Woboq Code Browser 76 data, data + to_do, &new_data, code.woboq.org 보통은 위 아니면 여기에서 정보가 나온다.
의외로 잘 모르는 peda pwngdb 플러그인 사용 팁
code, ld, libc , heap 등등으로 base 주소를 출력하는 방법은 잘 알것이다. 그러나 오프셋 연산이 즉각적으로 필요한 경우에 계산기를 켜거나 p 명령을 이용해서 연산을 진행하는 경우가 있다. 이때 code, heap, libc, ld 등의 심볼을 이용한 연산이 안되어서 상당히 불편했다. 근데 나만 몰랐던건지, 대체로 이 방법을 소개하는 글을 본적이 없어서 위 사진처럼 오프셋 계산을 수동으로 진행한 적이 많았는데 , pwndbg 플러그인 파이썬 코드를 보다가 뭔가를 찾았다. 그렇다. libc 명령을 실행하면, libc 주소를 읽어와 출력하는 동작만 하는게 아니고 , $libc 심볼에 주소값을 저장하는 도작까지 같이 수행해주는 것이었다. 그리고 익스플로잇에 주로 쓰이는 함수들의 오프셋도 간편..
patchelf 사용하여 다른버전 libc + ld 로드하기
1. patchelf 최신 릴리즈 다운받기 github.com/NixOS/patchelf/releases [ Releases · NixOS/patchelf A small utility to modify the dynamic linker and RPATH of ELF executables - NixOS/patchelf github.com ](https://github.com/NixOS/patchelf/releases) 2. 설치 진행 ./bootstrap.sh ./configure make sudo make install make check 이때 autoreconf 패키지 설치 필요할 수 있음 . sudo apt-get install dh-autoreconf 3. 로더와 libc 교체 patchelf --..
FSOP 기초
FSOP File Stream Oriented Programming file struct 구조를 이용한 방식. fopen,fread처럼 파일스트림을 사용하는 함수가 있거나 bss영역에 stdout 등이 있을때 사용할 수 있음. ->원하는 함수를 실행 가능. 파일스트림이나 stdout을 사용하는 함수들이 호출될때는 vtable을 참고하여 함수를 호출함 -> vtable을 임의로 작성하여 원하는 함수를 호출하는 방법 . 18.04(glic 2.27) 이후부터는 vtable 검증루틴이 추가됨. 참조하는 vtable의 주소가 _libc_IO_vtables 영역에 존재하는 주소인지를 검증한다. 파일 구조체를 임의로 만들고 조작하여 최종적으로는 원하는 함수를 실행하는 기법. aeroCTF nav_journal 풀이..