DOM Clobbering
Web/Web Hacking Techniques
DOM Clobbering란?HTML 요소의 id 혹은 name 속성을 악용하여 JavaScript 전역 변수나 내장 DOM 속성을 덮어쓰는 공격 기법이다.브라우저는 페이지 로드 시 id/name이 지정된 요소를 window, document 객체의 프로퍼티로 등록한다.이 떄 정의되지 않은 변수명과 일치하는 id/name이 존재하면 해당 변수는 그 DOM 요소를 가리키게 된다. 이럴경우, a태그 form 태그와 같은 HTML 태그를 삽입하여 기존 JavaScript 코드의 변수나 프로퍼티를 덮어쓰고, 이를 통해 원래 의도와 다른 동작을 유발하게 된다.보통의 경우 Malicious공격자가 위 a태그를 삽입하면, 브라우저 로딩 시 window.redirecTo가 해당 a태그의 속성을 참조하게되며, XSS가 ..
Flask Debugger (Console Mode) Vulnerabilities
Web/Web Hacking Techniques
Flask Debugger 활성화시 발생할 수 있는 위험은?Flask사용시 디버그 모드(Debug Mode)는 개발 편의를 위해 사용되지만, productioon환경에서 활성화가 되면 심각한 보안 취약점이 발생한다. 이를 악의적인 사용자가 악용할 경우 브라우저에서 임의의 파이썬 코드를 실행할 수 있으며 PIN 보호 또한 신뢰할 수 없다.이를 통해 취약한 Falsk의 디버그 콘솔(/console)을 통해 원격 코드 실행(RCE)이 가능하다.보통, Falsk 디버그 모드가 활성화 될 경우, 애플리케이션 실행 중 오류가 발생하게 되면 브라우저에 디버거 UI가 표시된다.이 때 /console 경로 혹은 코드 오른쪽의 터미널 아이콘을 눌러 콘솔을 실행시킬 수 있다.Flask 디버거 콘솔에서의 RCE 메커니즘Deb..
브라우저의 URL 정규화 방식(Proxy Tool Bypass)
Web/Web Hacking Techniques
다양한 브라우저들(Chrome, Firefox 등)는 RFC 3986에 정의된 "remove dot segments" 알고리즘에 따라 URL의 경로를 정규화 과정을 거치게 된다.예를 들어 /a/b///../../../c 는 /a/b/c 와 같이 축소된다. "..", "/" 은 삭제 혹은 병합되며 경로 조각이 제거된다. URL에 포함된 ASCII 문자나 특수문자를 자동으로 URL인코딩이 이루어지게 된다.Java의 HttpURLConnection 등 프로그램 방식 호출은 기본적으로 원본 문자열을 그대로 전송하므로, 브라우저와 달리 인코딩 없이 결과가 달라질 수 있다.Proxy Tool의 URL 조작 방식대표적으로 Burp Suite 같은 프록시 도구를 사용하면 브라우저처럼 자동 정규화된 URL이 아닌, 사용..
Servcer Side Requests Forgery (SSRF)
Web/Web Hacking Techniques
SSRF란 무엇인가?SSRF는 클라이언트측의 입력값을 위조시켜 위조된 HTTP 요청을 보내, 일반적으로 외부에서 접근이 불가능한 서버 내부망에 접근(Access) 하여, 데이터 유출 및 서버의 기밀성, 가용성, 무결성을 파괴한다. SSRF 의 경우 CSRF 공격과 유사하지만, 공격이 이루어지는 부분이 클라이언트측이냐 서버측이냐의 차이점이 존재한다.💡 SSRF 공격이 성공적으로 Exploit 될 경우 추가 공격으로 이루어지므로, 피해가 크다. 어떻게 발생하는가?모든 클라이언트측의 요청에 응답을 한 서버에서 다루기에는 무리가 있다. 그러므로 각 서버끼리의 API를 통해 서버끼리 내부적으로 통신을 통해 요청과 응답이 이루어진다. 이때 접근 가능한 내부 IP를 통해 이루어지므로 SSRF 의 경우 루프백(Loo..
Encoding Obfuscation
Web/Web Hacking Techniques
💡 해당 다양한 인코딩을 통한 난독화 기법은 portswigger을 상당부분 참고하였습니다.다양한 취약점을 식별하여 해당 취약점에 대한 Exploit을 진행 할 때 Payload에서 문자열 혹은 dot(.), / 등이 필터링 되어 있는 경우고 종종 다수 존재한다. 이 때 이를 우회할 수 있도록 인코딩을 통해 난독화를 이용할 수 있다. 클라이언트와 서버는 다양한 인코딩 방식을 사용하여 서로 시스템간의 데이터를 전송한다. 전달받은 데이터는 디코딩 되어 백엔드단에서 처리되된다.일반적으로 Query 매개변수는 일반적으로 서버측에서 URL 디코딩 되며,HTML 요소의 텍스트 콘텐츠는 클라이언트측에서 HTML 디코딩 된다.URL 인코딩을 통한 난독화Percent-encoding(퍼센트 인코딩) 이라고도 불리며, ..
401&403(Access Control) Bypass
Web/Web Hacking Techniques
HTTP 상태코드 401&403특정 페이지들을 살펴보다 보면, HTTP 상태코드로 401 또는 403으로 반환되는 경우가 종종 있다. 이 두 종류의 코드는 무엇일까?401 UnauthorizeHTTP 표준에서 Unatuhorized(미승인)으로 명시하고 있지만 해당 응답의 경우 비 인증을 의미할 수 있다. 즉 클라이언트 측에서 요청을 보내게 되면, 서버로 부터의 응답을 받기 위해 인증이 이루어져야 한다는 것이다.403 Forbidden흔히 볼 수 있는 응답코드로 권한과 관련되어있다. 해당 요청 클라이언트가 요청한 콘텐츠에 접근할 권한을 가지고 있지 않음을 나타낸다. 서버측에서 해당 클라이언트의 접근을 거부한다는 것이다.Bypass 401&403HTTP 상태코드인 401과 403은 웹 사이트 정찰 과정에서..
ZIP Slip Vulnerability
Web/Web Hacking Techniques
ZIP Slip 취약점이란?Path Traversal 취약점의 한 부분으로 아카이브 파일에서 파일을 추출하는 동안 디렉터리를 통과하는 과정에서 발생한다. 이게 무슨 소리냐? 압축된 파일 혹은 아카이브 파일에서 파일명이 절대경로 로 표시된 경로 명으로 되어 있는 경우, Unarchive 되면서 파명의 절대경로로 파일을 이동시키거나, 동일한 파일이 존재할 경우 이를 덮어쓸 수 있게 된다.왜 발생하는가?이러한 ZIP Slip 취약점은 여러 언어로 작성된 에코시스템에서 발견되지만, 높은 수준의 아카이브 파일 처리를 제공하는 라이브리가 없는 JAVA 환경에서 주로 발견된다. 이는 라이브러리가 존재하지 않기에, 개발자들이 Code Snippet을 통해 수동적으로 만들어지며, 이를 서로 공유하여 사용하기 때문에 발생..
Deserialize_Vulnability for Python_Pickle
Web/Web Hacking Techniques
Deserialize란?역 직렬화로, 직렬화된 데이터 즉, 바이트 스트림을 역연산 하는 과정일 말한다.Serialization계층 구조의 데이터를 바이트 스트림으로 변환하는 작업을 뜻하며, 객체를 저장 및 전송의 편리함 및 다른 플렛폼에서 사용하거나, 객체의 상태를 저장하기 위해 자주 사용된다.직렬화는 어떤 기능을 하는 앤드포인트에서 사용될까?서버와 클라이언트 간의 데이터 전송서버에서 객체를 JSON형식으로 직렬화하여 클라이언트에게 보내고 클라이언트는 해당 JSON을 파싱하여 객체로 변환하며, 보통 REST API, GraphQL등 다양한 웹 API 통신에서 사용된다.데이터베이스 저장 및 조회ORM 사용시 객체를 데이터베이스 레코드로 직렬화되고, 역직렬화가 이루어진다.캐싱서버 측에서 데이터를 캐싱할 떄..