Security Study/Web
[WEB] SSTI (Server-Side Template Injection) for Jinja2
0. Server-Side Template Injection SSTI(Server Side Template Injection)은 공격자가 서버측 템플릿 구문을 통한 악성 페이로드를 페이지에 삽입하여 실행되도록 하는 공격기법이다. 간단한 예시를 통해 이해해보자. ... ... {value} ... ... 위의 코드가 template engine에서 처리 되어 value 파라미터에 "Hello world"가 전달된다면 아래와 같이 치환된다. ... ... Hello world ... ... 이 때, 임의의 실행 가능한 코드를 넘겨준 경우, 서버측에서 실행 과정을 거친 후 결과가 반환된다. 예를 들면 7*7 이라는 식이 49라는 값으로 반환되어 사용자에게 출력된다. {{7*7}} # output: 49 SST..
[WEB] DOM Clobbering XSS (DOM Based XSS)
이 글에선 DOM Clobbering이 무엇인지에 대해 소개하고, DOM 취약점을 Clobbering 기술을 이용하여 어떻게 exploit 해야하는지, 방어는 어떠한 방식으로 이루어지는지에 대해 설명할 것이다. 0. Basic 1) DOM Clobbering XSS vs DOM Based XSS 처음 DOM Clobbering XSS를 접했을 때, DOM Based XSS랑 다른건가? 라는 생각이 들었다. XSS의 종류에 대해 간단하게 짚고 넘어가보자. 위 그림을 보면 알 수 있듯이, XSS에는 2가지 종류 Stored(Persistent) XSS, Reflected XSS로 구분이 가능하다. DOM Based XSS는 Stored 형태로 나타날 수도 있고, Reflected 형태로 나타날 수도 있다. ..
[WEB] JWT(JSON Web Token) Attack
0. Basic 1) JWT란? JWT란, JSON Web Token의 약자로 JSON 문서를 Base64로 인코딩 후 서명하는 방식을 말한다. 대부분 웹사이트 사용자 인증에 사용되고, 쿠키에 주로 포함되어 쓰인다. JWT는 사용자의 정보나 세션 만료 시간 등을 JSON 문서 형식(Dictionary)으로 나타낸다. 2) JWT 구성 JWT의 형태는 다음과 같다. 세 부분으로 나뉘어져 있고, 각각은 .(dot) 으로 구분된다. Frame) Header . Payload . Signature Header alg: 어떤 알고리즘을 이용하여 서명(Sign)을 할 것인가? typ: 미디어타입. 옵션값이며 JWT일 경우 "JWT" Base64({ "alg": "HS256", "typ": "JWT" }) Paylo..
[WEB] SQL Injection & 필터링 우회 방법
Basic SQL Injection DML(Data Manipulation Language) Select: 데이터를 조회하는 구문 (Ex: Login Form) SELECT uid, title, boardcontent FROM boards \ WHERE boardcontent like '%abc%' LIMIT 5 # "like" != "=" / 와일드카드 사용 시 like 사용 필수 # %: 아무 문자열 (와일드카드) # _: 아무 문자 (와일드카드) Insert: 데이터를 추가하는 구문 INSERT INTO boards (title, boardcontent) \ VALUES ('title 1', 'content 1'), ('title 2', 'content 2'); Update: 데이터를 수정하는 구문..