분류 전체보기 75

NAT Slipstreaming

📋 요약주제 : NAT Slipstreaming 공격은 사용자가 웹사이트를 단 한 번 방문하는 것만으로, 공격자가 피해자 NAT / 방화벽의 보호를 우회해 내부망(동일 서브넷)에 존재하는 모든 TCP•UDP 서비스에 임의로 원격 포트 포워딩(핀홀)을 생성하고 접근할 수 있다.핵심 아이디어내부 IP 자동 수집 - WebRTC ICE / TCP-timingMTU•MSS 계산 - 다량의 데이터가 포함된 POST/TURN 요청을 분석해 세그먼트/프래그먼트 경계 파악ALG 프로토콜 혼동 - 패킷을 SIP(H.323)로 오인시켜 원하는 포트를 외부로 개방🕸️ 단계별 흐름NAT Slipstreaming 공격은 사용자의 브라우저와 NAT•라우터•방화벽에 내장된 ALG(Application-Level Gateway)..

Splitting the email atom: exploiting parsers to bypass access controls

📋 요약주제 : 다중 니코딩 & 레거시 주소 표현으로 이메일 파서를 속여 도메인 기반 접근 제어를 우회하는 기법핵심 아이디어Domain Confusion - 레거시 주소 형식으로 파서를 혼동시켜 화이트리스트를 우회Encoding Confusion - Unicode Overflow•encoded-word 중첩(QP)•언더스코어(공백 대체) 등올 검증 단계이선 무해, 메일러 단계에선 특수문자가 드러나도록 설계Canonicalization Gap - 애플리케이션 측 검증 ↔︎ SMTP 메일러가 각기 다른 시점•규칙으로 디코딩 → 동일 주소를 다르게 해석SMTP Address Splitting - ">" + "NULL" 시퀀스로 RCPT TO 조기 종료 → 검증용 주소와 실제 전송 주소를 분리, 인증 메일을 ..

XMPP Stanza Smuggling or How I Hacked Zoom

📋 요약주제 : Zoom XMPP Stanza Smuggling을 통한 0-Click 원격 코드 실행 취약점핵심 아이디어Parser Differential(Expat ↔︎Gloox)의 UTF-8 처리 차이를 악용해 Stanza를 서버단계에서 숨기며 전송/clusterswitch 응답(ProtoBuf) 안의 클러스터 목록을 조작해, Victim이 Auto-Update 시 악성 파일을 내려받도록 변조MITM 프록시로 web-domain 속성을 공격자 도메인으로 바꾼 뒤, Victim이 자동으로 releasenotes를 호출하게 유도🧩 핵심 배경1. XMPPxml 기반 메시징 프로토콜이다. Zoom, 온라인 게임과 같이 메신저 기능에 활용된다.Zoom XMPP속 xml 내용의 예시다. Root level의..

Sign in as anyone: Bypassing SAML SSO authentication with parser differentials

📋 요약주제 : ruby-saml의 파싱 불일치(Parser Differential)를 이용한 인증 우회 공격핵심 아이디어REXML과 Nokogiri 두 XML 파서를 혼용하면서, 동일 XPath(//ds.Signature)가 서로 다른 요소를 선택하도록 조작공격자는 유효한 서명(SignatureValue + SignedInfo 블록) 하나만 확보하여, 원본 Assertion ID와 DigestValue를 그대로 사용하되, 그 아래에 가짜 Assertion(Subject / NameID)을 삽입REXML 단계에서는 "원본 Assertion"을 해시하여 Digest 검증을 통과, Nokogiri 단계에서는 "가짜 Assertion"을 읽어 SP가 관리자 계정으로 로그인 처리 → 인증 우회🌊 핵심 배경..

Heap Exploitation - tcache

등장 배경동적 할당 시 malloc은 효율적인 공간 할당을 위해 다음과 같은 순서로 참조한다. 마찬가지로, free 또한 tcache에 여유가 있으면 먼저 들어간다.tcachefastbin / smallbin / unsortedsysmalloc (mmap / brk)이 중 tcache에 대해 자세히 알아보자. glibc의 전통적인 힙 할당(unsorted/small/large/fastbin)의 락/경합 비용과 bin 회수 경로의 복잡성이 성능에 영향이 있었다. 이를 해결하기 위해, 작은 chunk는 thread별로 따로 모아두어 빠르게 캐시하는 tcache가 생겨났다. Tcache는 작은 chunk를 자기 주머니(최대 64개 class)로 따로 쌓아두며, glibc 2.26 이후 버전에서 기본 활성화되어..

Heap Exploitation - malloc(ptmalloc2)

메모리의 동적 할당(dynamic allocation)Data, Stack 영역에 할당되는 메모리의 크기는 컴파일 시점(compile time)에 미리 결정되지만, Heap 영역의 크기는 프로그램이 실행되는 도중인 런 타임(run time)에 사용자가 직접 결정하게 된다.dlmalloc, ptmalloc2, jemalloc, tcmalloc, libumem ... 등 다양한 할당자가 있고, ptmalloc2를 기준으로 분석해 볼 것이다. ptmalloc2는 리눅스의 기본 C 표준 라이브러리(glibc)의 malloc(), free()를 구현하는 내부 모듈이다. 즉, 리눅스 환경의 거의 모든 프로그램이 ptmalloc2를 사용하게 되고, 가장 실제적인 익스플로잇 타겟이 ptmalloc2 기반의 heap 구..

XS-Leaking flags with CSS: A CTFd 0day

/admin/submissions?field=provided&q=&page=1 -> 200 OK, 빈 테이블/admin/submissions?field=provided&q=&page=2 -> 51건 이상 200 OK || 404🧩 요약XS-Leak & XS-SearchSame-Origin Policy로 차단된 응답 본문을 직접 읽을 수 없지만, 사이드 채널(에러 이벤트, 프레임 개수, CSS :visited 등)을 통해 간접적 정보 누출이 가능검색 기능에 문자를 하나씩 넣어 결과 유・무를 판별하며 비밀 문자열을 순차 누출하는 XS-Search 기법HTTP Pagination 설정 악용CTFd는 페이지당 기본 50개 행(per_page=50) 설정1페이지(?page=1)는 매칭 건수와 관계없이 항상 20..

The Ultimate Double-Clickjacking PoC

요약주제: 다양한 브라우저 트릭을 결합해 “더블 클릭재킹(Double-Clickjacking)” 공격을 완벽한 PoC로 구현핵심 아이디어비활성 팝업창 위치 제어 : window.movTo로 눈에 보이지 않는 팝업을 마우스 커서 바로 아래로 옮김onclick = () => { onclick = null; w = window.open("/popup.html", "", "width=500,height=300"); w.onload = () => { navbarHeight = w.outerHeight - w.innerHeight; button = w.document.querySelector("button").getBoundingClientRect(); onmousemove = (e) => {..

collision

0x01 문제 설명scp -P 2222 col@pwnable.kr:[대상 파일] [받을 위치]명령을 통해 로컬로 col 과 col.c 파일을 받아왔다.또한, 로컬에서 pwntools 를 사용해 접속하는 방법은 아래와 같다.from pwn import *argv = [b"AAAA"]s = ssh("col", "pwnable.kr", port=2222, password="guest")p = s.process(["/home/col/col"] + argv)0x02 풀이 과정#include #include unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; int i; i..