목록분류 전체보기 (40)
#dokydoky
그림으로 살펴보는 포스팅을 시작으로, 3편의 포스팅을 통해 HTTPS에 대해서 알아보겠습니다.이전 포스팅을 읽어보시지 않으셨다면, 읽어보시는 것을 추천드립니다!HTTPS - 1. 그림으로 살펴보는 HTTPSHTTPS - 2. HTTPS의 Ciphersuite, Handshake, Key derivationHTTPS - 3. SSL/TLS History and Security 들어가며이번 글에서는 SSL 2.0 ~ TLS 1.3까지의 변화를 간략하게 살펴봅시다!History & SecuritySSL 규약은 처음에 Netscape가 개발하여 2.0버전부터 공식 릴리즈되었습니다. 이후 SSL 2.0의 보안문제들을 개선한 SSL 3.0가 릴리즈되고, TLS 3.0을 기반으로 TLS 1.0이 개발되었습니다.현재는..
그림으로 살펴보는 포스팅을 시작으로, 3편의 포스팅을 통해 HTTPS에 대해서 알아보겠습니다.이전 포스팅을 읽어보시지 않으셨다면, 읽어보시는 것을 추천드립니다!HTTPS - 1. 그림으로 살펴보는 HTTPSHTTPS - 2. HTTPS의 Ciphersuite, Handshake, Key derivationHTTPS - 3. SSL/TLS History and Security들어가며1편에서는 HTTPS의 동작방식을 그림으로 간단하게 살펴봤습니다.전편에서는 RSA 기반의 키교환 중심으로 설명했지만, ECDHE와 같이 Diffie-hellman 기반의 알고리즘도 많이 사용됩니다.이번편에서는 TLS에서 사용되는 Cipher suites, Handshake를 알아보며 Perfect Forward Secrecy, ..
그림으로 살펴보는 포스팅을 시작으로, 3편의 포스팅을 통해 HTTPS에 대해서 알아보겠습니다.HTTPS - 1. 그림으로 살펴보는 HTTPSHTTPS - 2. HTTPS의 Ciphersuite, Handshake, Key derivationHTTPS - 3. SSL/TLS History and Security 들어가며암호화의 구현이 필요한 시스템이나 프로토콜을 설계할 때 HTTPS(HTTP Over TLS)의 동작방식은 좋은 레퍼런스가 될 수 있습니다.우선 이번 글에서는 그림을 통해 HTTPS가 어떻게 동작하는지 간단하게 살펴보겠습니다.평문 전송부터 시작해, 하나씩 필요한 기능들을 추가해보면서 필요한 이유들을 이해해봅시다. 용어정리대칭암호화(Symmetric Encryption), 비대칭 암호화(Asym..
Referencehttps://heap-exploitation.dhavalkapil.com/attacks/house_of_lore.htmlhttps://github.com/shellphish/how2heap/blob/master/house_of_lore.csmallbinAbout smallbin총 62개의 small binfree될 때 앞,뒤 chunk가 free되었다면 병합(coalesce)삽입은 HEAD, 제거는 TAIL (FIFO)32bitsize : 0x10, 0x18, 0x20 ...... , 0x1F8(504) (8x+8, 1fd = bin; if (av != &main_arena) victim->size |= NON_MAIN_ARENA; check_malloced_chunk (av, vict..
ReferenceDouble freehttps://heap-exploitation.dhavalkapil.com/attacks/double_free.htmlhttps://github.com/shellphish/how2heap/blob/master/fastbin_dup.cForging chunkshttps://heap-exploitation.dhavalkapil.com/attacks/forging_chunks.htmlhttps://github.com/shellphish/how2heap/blob/master/fastbin_dup_into_stack.c (double free + forging chunks)House of spirithttps://heap-exploitation.dhavalkapil.com/at..
ReferenceIt is a simple version of dhavalkapil's work https://heap-exploitation.dhavalkapil.com/diving_into_glibc_heap/core_functions.htmlglibc 2.23 code http://repo.or.cz/glibc.git/commit/ab30899d880f9741a409cbc0d7a28399bdac21bfMallocMalloc pseudo-code//step 1if) size == fastbin range 'return chunk' = chunk at the end of the the fastbin list if) return chunk == null move on to 'smallbin case' e..
WPScan is a black box WordPress vulnerability scannerRepository : https://github.com/wpscanteam/wpscanInstallPrerequisitesRuby >= 2.1.9 - Recommended: 2.3.3Curl >= 7.21 - Recommended: latest - FYI the 7.29 has a segfaultRubyGems - Recommended: latestGitInstalling with RVM (recommended)If you are using GNOME Terminal, there are some steps required before executing the commands. See here for more ..
팀내부에서 발표했던 자료중 Smart pointer관련 PPT.
IntroductionSUID, GUID, 특정 Supplemental Group가 설정되어 있는 바이너리라면 Code audit할 때 최소한의 권한이 설정되어 있는지 잘 확인해야 한다.권한 설정에 오류가 있으면 임의의 코드가 실행한 바이너리의 경우 쉽게 상위 권한을 얻을 수 있게 된다.OS의 종류와 버전에 따라 그리고 root권한의 유무에 따라 API의 동작이 다르므로 주의해야 한다. User IDTypes Real user ID, Saved set-user-ID, Effective user IDFunctionsint setuid(uid_t uid); int seteuid(uid_t euid); int setreuid(uid_t ruid, uid_t euid); int setresuid(uid_t ru..
ghostparty.cpp 소스를 보면서 실제 문제가 될만한 곳들을 먼 훑어본 후, 익스플로잇 해봅니다.전체 소스코드는 여기서 확인.https://github.com/dokydoky/writeup/blob/master/pwnerable.tw/ghostparty/ghostparty.cppVulerability case 1Uninitialized variable, UAF, memory leakclass Alan : public Ghost { public : Alan():lightsaber(NULL){ type = "Alan" ; }; Alan(int ghostage,string ghostname,string ghostmsg){ type = "Alan"; age = ghostage ; name = new ch..
0. Introghostparty binary기준으로 C++ string, vector 분석 내용을 정리합니다. c++ reversing에 익숙하지 않으신 분은 Reversing C++ programs with IDA pro and Hex-rays 을 먼저 읽어보시는걸 추천합니다. reversing하면서 정의한 구조체는 맨 아래에 적어두겠습니다.c++코드와 IDA에서 decompile된 코드를 비교하면서 정리하겠습니다. (테스트 환경은 64bit Ubuntu 16.04)1. stringstring은 dynamic char 배열입니다. 표현되는 방식이 여러개 있지만, 여기서는 ghostparty 바이너리에서 사용된 방법을 기준으로 설명합니다. string의 member는 아래와 같습니다. 주의해야 할 것은..
Double free 취약코드 struct P {}; class C { P *p; public: C(P *p) : p(p) {} ~C() { delete p; } void f() {} }; void g(C c) { c.f(); } void main() { P *p = new P; C c(p); g(c); } g()의 매개변수 타입을 reference로 변경해주면 되지만, 근본적으로 이런 실수가 발생하지 않게 복사 생성자와 대입 연산자를 삭제한다. 이 경우 g()함수의 매개변수가 reference 타입이 아니면 컴파일 에러가 발생하여 컴파일 타임에 오류를 확인할 수 있다. struct P {}; class C { P *p; public: C(P *p) : p(p) {} C(const C&) = delete..
0x01. Intro안녕하세요. dokydoky 입니다.이전 포스팅에서는 NX+ASLR 환경에서 익스플로잇을 해봤습니다. 이번 포스팅에서는 Stack Canaray를 추가하여 익스플로잇 해보겠습니다.이번엔 nginx2 바이너리로 진행합니다. nginx1은 Stack Canary가 적용되어 있지 않고, nginx2는 적용되어 있습니다. Stack Canary란 RET, SFP(Stack Frame pointer)가 변조되는 것을 감지하기 위해, SFP앞에 stack cookie를 저장해놓는 기법입니다. 컴파일 옵션은 이곳을 참조하시기 바랍니다.이하 존칭어를 생략합니다. 0x02. Exploit checksec으로 확인해보면 nginx2에 Stack Canary가 추가적으로 적용된 것을 확인 할 수 있다. ..
0x01. Intro 안녕하세요. dokydoky입니다. 이전 포스팅에서는 NX만 적용되어 있는 환경에서 어떻게 익스플로잇 하는지 알아봤습니다. 이번 포스팅에서는 ASLR이 추가적으로 적용되어 있는 환경에서 어떻게 익스플로잇 하는지 알아보겠습니다. 이전 포스팅에서는 libc-2.19.so에서 가젯을 구성했지만, ASLR이 적용되면 libc-2.19.so의 메모리 주소가 달라지기 때문에 이전의 방식으로는 익스플로잇 할 수 없습니다. (ASLR이 적용되면 Stack, VDSO(Virtual Dynamic Shared Object), 공유메모리 영역, Data 세그먼트의 주소가 랜덤화됩니다.)그렇다면 어떻게 가젯을 구성할까요?nginx 1.4.0 버전에서는 PIE가 적용되어 있지 않습니다. 이를 이용해 봅시다..
0x01. Intro안녕하세요. dokydoky입니다.이전 포스팅에서는 환경을 구성하고 CVE-2013-2028 취약점이 발생되는 코드를 살펴봤습니다.이번 포스팅에서는 어떻게 익스플로잇을 하는지 알아보겠습니다. 바이너리 파일은 nginx1을 사용하시면 됩니다.mitigation중 NX, ASLR, Stack Canary를 순차적으로 적용해서 우회해보려고 합니다.우선 이번 포스팅에서는 NX만 걸려 있는 환경입니다. NX가 걸려있으면 Heap, Stack 영역에 실행권한이 없어 쉘코드를 바로 실행할 수 없습니다. 본문에서 사용할 도구들은 아래와 같습니다.mitigation 확인 : checksecoffset 찾기 : pattern.pyROP gadget 확인 : rp-ln-x64이하 본문에서는 존칭어를 생략..