Cullinan

Cullinan is a wiki for hacking/security/bugbounty

HTTP Request Smuggling

8 min read

Introduction

HTTP Request Smuggling은 network hops로 구성된 환경에서 각 구간의 서버, 장비 등에서 HTTP Request를 처리할 때 차이점으로 인해 발생하는 문제입니다. 보편적으로 Content-Length와 Transfer-Encoding을 동시에 전달하여 구간 별로 HTTP Reuqest의 길이를 잘 못 인지하도록 유도합니다.

Axiom

1 min read

Introduction

The dynamic infrastructure framework for anybody! Distribute the workload of many different tools with ease, including nmap, ffuf, masscan, nuclei and many more!

CSRF

7 min read

Introduction

CSRF는 Cross-Site Request Forgery 의 약자로 쿠키의 동작 방식을 이용한 공격 방법으로 사용자의 세션 쿠키 또는 다른 인증정보를 이용하여 사용자 모르게 공격자가 의도한 서비스 요청을 처리하는 공격 방법을 의미합니다.

XSS

12 min read

Introduction

XSS는 Cross-Site Scripting의 약자로 웹 서비스에 Javascript 등 스크립트를 실행할 수 있는 코드를 삽입하여 다른 사용자 등에게 공격자가 의도한 스크립트를 실행하게 하는 공격 방법입니다. OWASP TOP10에도 매번 포함될 만큼 아주 전통적인 공격 방법이지만 현재까지 자주 발생하는 취약점으로 웹 해킹을 대표하는 공격이라고 생각합니다.

Git

~1 min read

Introduction

깃은 오픈소스 분산 버전 관리 시스템으로 svn 이후에 개발 트렌드에서 가장 중요한 위치에 있는 도구입니다. 기본적으로 여러 사용자들의 공동 개발에 있어서 파일의 변경 사항을 지속적으로 추적하고 충돌나지 않도록 관리해주는 역할을 수행합니다.

H2C Smuggling

4 min read

Introduction

HTTP/2 Protocol and H2C Switching

HTTP2 프로토콜은 구글에서 개발 및 시범 사용중이던 SPDY 프로토콜의 사양을 기반으로 HTTP-WG에서 진행한 프로토콜입니다. 그리고 2015년 HTTP/2 표준으로 채택됨과 동시에 SPDY는 지원 중단을 하게 되었지요. 아무튼 HTTP/2난 차세대 웹 프로토콜로 보시면 될 것 같고, 1.x 버전대보다 성능적으로 큰 개선들이 있어서 서서히 많은 서버들이 HTTP2 지원을 하고 있는 상태입니다. HTTP2에 대한 내용은 google developers 문서를 참고해주세요.

Nmap

2 min read

Introduction

Nmap은 오픈소스 기반의 Network discovery 도구입니다. 일반적으로 포트스캐너로 알려져 있으며, Lua script(NSE)를 통해 별도의 테스팅 로직을 구성할 수 있어 웹부터 네트워크단 취약점에 대한 스캐닝까지 충분히 커버할 수 있습니다.

Parallel

~1 min read

Introduction

Parallel은 병렬 실행을 위한 cli 도구입니다. 이를 활용하면 다수의 반복 작업등을 병렬 처리할 수 있어서 cli 기반의 자동화에 큰 도움을 줄 수 있습니다.

Reverse Tabnabbing

1 min read

Introduction

Reverse tabnabbing은 특정 조건에서 a, iframe 및 window.open() 등으로 생성된 child page가 parents page를 일부 제어할 수 있는 특성을 이용해 피싱 사이트로 parents page를 변경하는 취약점을 의미합니다.

COOP

~1 min read

COOP(Cross-Origin-Opener-Policy)는 top-level document가 cross-origin 상태의 document와 browsing context group을 공유하지 못하도록 제한하는 보안 정책이자 헤더입니다. 이러한 헤더는 document를 격리시켜 XS-Leaks 같은 공격을 통해 document 내부를 엑세스할 수 없도록 제한합니다.

SSRF

5 min read

Introduction

SSRF는 Server-Side Request Forgery의 약자로 백엔드 서버단에서 요청을 발생시켜 내부시스템에 접근하거나 외부로 데이터를 유출할 수 있는 공격 방법입니다.

Websocket Connection Smuggling

3 min read

Introduction

WebSocket

웹 소켓은 단일 요청 비 연결형인 HTTP의 단점을 보완하기 위한 프로토콜로 HTTP 기반의 Handshake 과정과 이후 TCP/TLS 통신을 이용하여 서버와 클라이언트가 지속적으로 소켓 통신할 수 있습니다.

SQLMap

~1 min read

Installation

Macos

brew install sqlmap

Amass

4 min read

Installation

Macos ``` brew tap caffix/amass brew install amass

CSWSH Attack

1 min read

Introduction

CSWSH는 Cross-Site WebSocket Hijacking의 약자로 WebSocket에서 Cross domain간 사용 정책인 Origin 헤더에 대한 검증 미흡으로 발생하는 문제입니다.

JSON Hijacking

5 min read

Introduction

JSON Hijacking은 SOP의 예외를 위한 CORS 설정이 미흡한 경우 공격자가 사용자의 데이터 등을 임의로 탈취할 수 있는 공격 방법입니다.

JSONP Hijacking

1 min read

Introduction

JSONP Hijacking은 민감 정보를 처리하는 페이지가 JSONP를 지원하는 경우 공격자가 쉽게 정보를 탈취할 수 있는 공격 방법을 의미합니다.

CRLF Injection

~1 min read

Introduction

CRLF Injection은 Carriage Return Line feed Injection의 약자로 각 개행문자를 의미하는 CR(\r) LF(\n)을 이용하여 HTTP Request 또는 Response를 분리하여 공격자가 의도한 동작을 수행시키는 공격 기법을 의미합니다.

CSV Injection

1 min read

Introduction

CSV Injection은 Formula Injection으로도 불리며 일반적으로 CSV 파일 다운로드 등의 기능에서 발생되는 취약점이자, 공격기법입니다. MS Excel, Libre Office 등에서 CSV 파일을 열 때 특정 구문을 이용하여 시스템 명령등을 수행할 수 있는데, 이를 악의적인 파일이 아닌 정상적인 파일을 다운로드할 때 공격자가 의도한 구문이 CSV 파일 내부에 반영되도록 하여 피해자가 의심없이 파일을 열면서 공격자가 의도한 코드가 실행되도록 할 수 있는 공격입니다.

Path Traversal (Directory traversal)

3 min read

Introduction

Path traversal(Directory traversal)은 서비스에서 사용자로부터 받은 입력이 path 형태의 백엔드에서 처리 로직을 가지는 경우, 이를 조작하여 공격자가 원하는 경로로 접근하여 동작을 수행하는 공격기법을 의미합니다.

Open Redirect

1 min read

Introduction

Open Redirect는 웹 서비스에서 사용자의 입력을 기반으로 redirect 하는 기능을 이용하여 공격자가 의도한 도메인으로 사용자를 이동시키는 공격 방법을 의미합니다.

Command Injection

3 min read

Introduction

Command Injection은 어플리케이션이 systemcall 등 OS command를 사용하는 부분이 있거나, application단에서 별도의 command를 처리할 수 있는 경우 공격자가 Injection을 통해 의도한 명령을 수행하는 공격 기법을 의미합니다.

Zip Slip

1 min read

Introduction

ZIP Slip은 Path traversal(directory traversal) 구문이 포함된 Archive 파일(zip, tar, jar, etc..)을 extract할 떄 이를 이용하여 공격자가 의도한 경로로 원하는 파일을 이동시키는 공격 방법입니다.

HTTP Parameter Pollution

1 min read

Introduction

HTTP Parameter Pollution(HPP)는 중복된 파라미터를 웹 어플리케이션이 처리하는 방식의 차이를 이용한 공격 방법입니다. 정확하게는 특정 리스크를 가진 공격 방법이라기 보단 다른 취약점으로 연결하기 위한 트릭으로 사용되며, 동일한 이름의 파라미터를 중복으로 전송하여 서비스의 의도하지 않은 처리를 유도하는 방법입니다.

JWT Security

4 min read

Introduction

JWT(JSON Web Token)은 전자 서명을 포함한 JSON 형태의 표준 포맷입니다. RFC7519에 정의되어 있으며 이를 통해 서버, 클라이언트 등 상호간의 통신 시 시그니처를 검증하여 위변조 여부를 체크할 수 있고 expire 값을 통해 만료 여부도 체크할 수 있습니다.

XST

1 min read

Introduction

XST(Cross-Site Tracing)는 HTTP TRACE Method를 이용한 공격 방법입니다. 이를 통해서 HttpOnly 등으로 보호된 세션쿠키를 탈취하는데 사용할 수 있습니다.

DOM Clobbering

2 min read

Introduction

DOM Clobbering은 Javascript에서의 DOM 처리 방식을 이용한 공격 기법입니다. Clobbering은 의미 그대로 소프트웨어 공학에서 의도적,비의도적으로 특정 메모리나 레지스터를 완전히 덮어쓰는 현상을 의미합니다.

SQL Injection

2 min read

Introduction

SQL Injection은 공격자가 Application에서 사용되는 SQL Query 벗어나 의도한 SQL Query를 수행할 수 있는 공격 방법입니다. 일반적으로 SQL Query로 연결되는 사용자 입력 구간이 주로 취약한 부분이며, 이를 통해 DB내 다른 데이터를 조회하거나, 설정에 따라 시스템 권한까지 탈취할 수 있는 취약점입니다.

Cookie Bomb Attack

1 min read

Introduction

Cookie bomb은 비정상적으로 큰 쿠키 값을 이용해서 DOS를 유도하는 공격 방법입니다. 기본적으로 가용성을 침해하는 DOS 공격이 주를 이루며, 이외에도 다른 취약점과 Chain attack 형태로 사용될 가능성이 존재합니다.

LDAP Injection

1 min read

Introduction

LDAP Injeciton은 LDAP(Lightweight Directory Access Protocol)에 대한 Injection 공격으로 사용자의 입력값이 LDAP Query에 직접 영향을 끼칠 수 있을 때 이를 통해 비정상적인 LDAP 동작을 유도하는 공격 방법입니다. 보통의 Injection 취약점과 비슷하게 전반적인 공격 매커니즘은 SQL Injection 등 대다수 Injection 방식과 동일합니다.

History of OWASP TOP 10

1 min read

Click Jacking

2 min read

Introduction

ClickJacking은 frame 등의 환경에서 User Interaction을 유도하여 사용자가 인지하지 못한 상태에서 중요 기능을 수행시키도록 하는 공격 기법을 의미합니다. 기본적으론 피싱과 같이 User Interaction이 필요하지만, Frame 내 포인틴, 투명 레이어 등 CSS 단 처리로 이를 쉽게 인지하지 못하도록 구성하여 상대적으로 성공 가능성이 높습니다.

Web Cache Poisoning

2 min read

Introduction

Web Cache Poisoning은 캐시 서버들의 캐시 정책을 이용한 공격 방법으로 특정한 HTTP Request를 통해 다른 사용자의 서비스 동작에 영향을 줄 수 있는 부분들을 Cache 시켜 서비스를 정상적을 사용하지 못하게 하거나(DOS), 다른 취약점과의 연계를 위한 부분으로 사용할 수 있습니다.

RFD Attack

1 min read

Introduction

RFD(Remote File Download)는 확장자, 파일 내용에 대해 통제 가능한 다운로드 기능을 이용한 공격 기법으로 신뢰 도메인에서 사용자가 공격코드가 포함된 파일을 다운로드하고 실행하도록 유도하여 사용자단 영역에서 명령을 실행할 수 있습니다.

Dependency Confusion

2 min read

Introduction

Dependency Confusion은 supply chain substitution attack 으로도 불리며 서비스에서 사용중인 내부 패키지와 동일한 이름의 패키지를 등록하여 악의적인 패키지가 설치 되도록 유도하는 공격입니다.

CSTI Attack

1 min read

Introduction

CSTI(Client-Side Template Injection)은 공격자가 Template 코드를 기존 template에 include 시켜서 원하는 액션을 수행하도록 하는 공격입니다. 이 때 template injection이 발생하는 위치가 client-side인 경우 CSTI라고 부릅니다.

ESI Injection

3 min read

Introduction

ESIi는 ESI(Edge Side Include) Injection으로 ESI 사용하는 환경에서 해당 Markup에 대한 Injection 공격을 의미합니다.

XXE

2 min read

Introduction

ZAP

7 min read

Introduction

Relative Path Overwrite

2 min read

Introduction

RPO(Relative Path Overwrite)는 relative URL, 즉 상대 경로 기반의 URL을 덮어써서 의도하지 않은 동작을 수행하는 공격 방법입니다. Relative Path Confusion이라고도 불리며 본 문서에서는 RPO로 통일하여 작성하곘습니다.

OAST

3 min read

Introduction

Threat Modeling

2 min read

🚧 저도 공부중인 부분이 많아서 잘못되거나 이상한 부분이 있을 수 있습니다. 이 글을 신뢰하진 마시고, 혹시나 잘못된 부분이 있을 경우 댓글로 알려주시면 정말 감사하겠습니다 :D

XSHM Attack

1 min read

Introduction

XSHM (Cross Site History Manipulation)은 사용자의 브라우저 히스토리를 이용한 공격 방법으로 단순히 이전 history를 변경하여 공격자가 의도한 페이지로 이동되도록 하는 피싱 방법부터, SOP를 우회하거나 CSRF 또는 IFRAME을 이용하여 중요 정보를 탈취하는데 사용할 수 있습니다.

LaTex Injection

1 min read

Introduction

LaTex는 TeX 문법을 사용하는 typesetting system 으로 이를 처리하는 시스템에서 TeX 문법을 주입하여 공격자가 원하는 액션을 처리하도록 유도하는 것으로 LaTex Injection이라고 합니다.

Brute Force

3 min read

Introduction

Brute Force 공격은 지정된 wordlist 또는 문자 패턴을 기반으로 반복적인 웹 요청을 발생시켜 보안적인 문제를 만들어내는 공격 기법입니다. 이러한 개념은 Fuzzing과 유사하나 Fuzzing은 잘못된 형식을 데이터를 보내 서비스의 결함을 유도한다면, Brute force는 Password에 대한 공격과 같이 허용된 값을 찾기 위해 다수의 데이터를 보내는 방식입니다.

SSE Security

3 min read

Introduction

SSE(Server-Sent Event)는 Server Push 기술로 웹 소캣과 유사하게 서버와 Javascript가 서로 통신하여 데이터를 받아올 수 있습니다. 다만 웹소켓의 경우 양방향 통신이 가능하지만, SSE는 서버→클라이언트로 받는 요청만 처리할 수 있습니다.

Kiterunner

1 min read

Introduction

Kiterunner는 Assetnote에서 만든 Content-Discovery 도구로 지정한 위치에 Fuzz/BruteForce 방식의 일반적인 도구가 아닌, 알려진 Swagger Spec 데이터와 자체 스키마로 압축된 데이터 세트를 사용하여 API 스펙을 추측합니다. 그리고 알려진 HTTP Method, Header, Path, Param 등을 전송하며 API Endpoint를 찾는 도구입니다.

Prototype Pollution

3 min read

Introduction

Prototype Pollution은 Javascript 처리 로직의 문제로 Object 들의 prototype을 수정할 수 있을 때 발생하는 보안 문제를 의미합니다. Object의 protype을 변경할 수 있는 경우 의도된 로직을 벗어나거나 DOM에 관여하여 XSS 등의 추가적인 문제를 발생시킬 수 있습니다.

IDOR Attack

1 min read

Introduction

IDOR(Insecure Direct Object References)는 Access Control에서 발생하는 취약점 중 외부에 노출되거나 제공되는 입력이 Object에 직접 참고하고 엑세스할 때 이를 이용하여 본인의 권한을 넘어서는 액션을 수행할 수 있습니다.

Type Juggling

1 min read

Introduction

Type Juggling은 복수의 변수를 비교할 때 사용되는 Loose/Strict Comparison에 따라 개발자가 의도하지 않은 값으로 if 문 등을 통과할 수 있는 취약점을 의미합니다. 일반적으로 PHP가 영향을 받는 것으로 알려져 있습니다. 보통 PHP type juggling 또는 Magic hashes attack으로 많이 알려져 있습니다.

SAML Injection

1 min read

Introduction

SAML Injection은 Security Assertion Markup Language (SAML) 에서 발생할 수 있는 Injection 공격을 의미합니다. SAML Process에서 XML 구문 내 공격코드를 통해 SSO 등 인증 과정을 우회하거나 Signature 검증을 통과할 수 있습니다.

XS-Leaks

2 min read

Introduction

XS-Leaks는 Cross-site Leaks로 CSP, SOP와 같은 보안 정책을 위반하지 않으면서 다른 사이트와의 상호작용을 통해 정보를 추론하고 결과적으로 데이터를 유출할 수 있는 공격방법을 말합니다. 전체적인 느낌은 CSRF와 유사한 부분이 많이 있지만, CSRF가 사용자 대신 Action을 처리한다면, XS-Leaks는 사용자에 대한 정보를 유추하고 추론하는데 포커싱되어 있습니다.

Github-Action Injection

2 min read

Introduction

Github actions에서 사용자가 작성하는 workflow, 개발자가 제공하는 custom actions에서 사용자 입력 값에 대해 정확하게 검증하고 사용하지 않으면 Command Injection의 가능성이 존재하게 됩니다. 일반적으로 Github action injection, Github action script injection 등으로 불립니다.

Email Injection

1 min read

Introduction

Email Injection은 Application에서 사용자로 부터 받은 입력 값이 Email을 처리하는데 사용되고 입력 값에 대한 검증이 미흡한 경우 공격자가 악의적인 파라미터로 메일 내용 등을 변조할 수 있는 공격 방법입니다.

Zest

2 min read

Introduction

NoSQL Injection

2 min read

Introduction

NoSQL Injection은 SQL을 사용하는 것으로 알려진 DBMS를 제외한 나머지 Database에 대한 Injection 공격입니다. 일반적으로 NoSQL 데이터베이스는 기존 SQL 데이터베이스보다 consistency check가 느슨합니다. NoSQL 데이터베이스는 relational constraints와 consistency check를 덜 요구하기 때문에 성능이나 확장에서의 이점이 큽지만 SQL 문법이 아닌 각각의 시스템의 쿼리 문법 등에 대한 Injection 공격은 동일하게 영향을 받습니다.

OGNL Injection

1 min read

Introduction

OGNL Injection은 OGNL(Object-Graph Navigation Language)에서 코드를 주입하는 Injection 공격을 의미하며, OGNL 자체가 Expression Language의 성격을 띄기 때문에 SSTI 또는 EL Injection 과 유사합니다.

EL Injection

1 min read

Introduction

EL(Expression Language) Injection은 Expression을 처리하는 EL interpreter에 대한 Injection 공격으로 SSTI, OGNL Injection과 유사함을 가집니다.

Metasploit Framework

5 min read

Introduction

Metasploit은 대표적인 Penetration testing framework로 Recon, Scan, Exploit 등 Pentest의 기술적인 부분을 많이 커버할 수 있는 도구입니다. H.D Moore가 초기 개발하였으며, 현재는 Rapid7에서 관리되고 있습니다.

SRI

1 min read

Introduction

File Inclusion

1 min read

Introduction

File Inclusion은 동적으로 File을 읽거나 Include(소스코드 내 Built) 하는 기능이 있는 경우 이를 악용하여 시스템 파일을 읽어 탈취하거나 공격자가 만들어둔 소스코드를 Include 하도록 유도하는 공격입니다. 보통 LFI(Local File Inclusion)와 RFI(Remote File Inclusion)로 많이 알려져 있습니다.

How to Hack a MacOS Application

4 min read

Introduction

“How to Hack a MacOS Application”은 Apple의 MacOS에서 동작하는 어플리케이션을 테스팅하는 방법입니다. 전반적인 테스팅 메커니즘과 환경 구성에 대한 내용을 주로 다룹니다.

Ruby on Rails

3 min read

Introduction

Rails(Ruby on Rails, RoR)는 Ruby의 대표적인 프레임워크로 MVC 모델을 사용하는 풀스택 웹 프레임워크입니다. Ruby 특유의 쉽고 직관적인 문법으로 인해 Rails 또한 코드를 이해하는데 어렵지 않으며 scaffold 등의 기능으로 빠르게 웹 서비스를 구성할 수 있습니다.

Jekyll

8 min read

Introduction

Jekyll은 Hugo, Hexo와 함께 굉장히 많이 사용되는 SSG(Static Site Genertor) 입니다. Ruby로 개발되었고 Liquid 문법을 사용하여 템플릿을 통제할 수 있고, 여러가지 기능들 담은 Gem(RubyGem)을 추가하여 쉽게 여러가지 기능들을 만들어낼 수 있습니다.

ORM Injection

1 min read

Introduction

ORM Injection은 ORM(Object Relational Mapping) Layer에서 발생하는 Injection 공격으로 SQL Injection과 밀접한 연관성을 가지고 있습니다.

Subdomain Takeover

1 min read

Introduction

Subdomain Takeover는 Subdomain에 매핑된 서버가 제거 또는 삭제됬을 떄 공격자가 해당 IP, 설정 등을 점유하여 인수할 수 있는 공격 방법입니다. 대표적으로 S3, Github Page, Heroku 등의 서비스를 사용할 때 자주 발생합니다.

Zip Bomb

1 min read

Introduction

Zip Bomb는 Decompression bomb로도 불리며 압축을 풀었을 때 엄청난 리소스를 소모하게 만드는 파일을 이용한 공격입니다. 여러겹의 파일 구조를 가지는 Zip 파일을 만들고 이를 해제하는 컴퓨터에 리소스를 크게 사용하는 방법으로 Zip을 해제하는 기능을 가진 소프트웨어는 체크가 필요한 공격입니다.

Elixir

~1 min read

Introduction

Installation

Ruby

2 min read

Introduction