docs

Prototype Pollution to RCE

Prototype pollution 은 객체 기반 스크립트 언어라는 자바스크립트 특이성으로 인해 발생합니다. 따라서 Nodejs 등 자바스크립트 엔진 기반 서버에서 존재하는 취약점입니다. 자바스크립트의 자료형은 prototype 속성을 포함하는데 특정 객체 / 클래스의 prototype 데이터의 변조가 가능하다면 이후 그 객체의 생성자를 통해 새로운 인스턴스를 생성 할 때에 참조하는 프로토타입 객체의 속성이 변경됩니다. 위처럼 특정 객체 클래스의 인스턴스의 __proto__ 속성을 추가해 주는 것으로 다음 생성될 인스턴스의 속성에까지 영향을 끼칠 수 있습니다. DOM 과 NodeJS 에서

Sql Injection with NodeJS

Blind Time based Blind

Redis SSRF

redis는 인메모리 캐시 서버로 데이터를 메모리에 보관하기에 상당한 성능을 보입니다. 기본 설정에서 6379번 포트를 사용하고, 수신된 명령어를 라인 단위로 수행합니다. redis는 http 프로토콜을 지원하고 있지 않으므로 gopher 등을 이용하여 ssrf를 유발해야 합니다. 예외적으로 request method 를 자유롭게 수정 가능하거나 첫 라인에 CRLF Injection이 가능한 경우 http 요청을 통해서도 발생할 수도 있습니다. redis 버전에 따라 http request 의 첫 라인과 같이 redis 명령으로 해석되어 오류가 발생하는 경우에도 메시지만 띄우고 다음 라인을

XSS CheatSheet

본 문서는 지속적으로 업데이트됩니다. Basic Advanced Uncommon Tags Sandbox XSS Delimiters Obfuscation Operator Unicode / UTF-8 No Quote No Parentheses No Quote and Parentheses Bypass Uppercase / Lowercase Bypass Replace Bypass Chrome Auditor Script in XML Whitelist Iframe Make Redirection Cookie Hijacking Data Wrapper Variable Make DOM XSS DOM Object Finding Set-Cookie Obfuscate IP Address Escalate XSS Bypass History A Tag XSS without interaction document.createComment php::checkdnsrr() Loop in a line

Quine SQL Injection

Quine SQL 이란 Quine 은 소스코드를 그대로 출력으로 반환하는 프로그램을 의미하는데위의 파이썬 소스코드를 참고하면 어떤 의미인지 쉽게 이해할 수 있을 것이다.이는 대부분의 언어로 작성되어 위키백과에 등재되어 있다. Quine SQL Query 마찬가지로 SQL 언어를 사용해 작성한 Quine 쿼리도 존재하는데, 위가 그 예이다. 여기서 필요없는 부분을 잘라내면 위와 같다. 이런 특성을 이용하여 SQL 인젝션에 응용할 수 있는데사용자 입력과 쿼리 결과값이 같은지 확인하는 검증로직이 존재할 경우에이를 사용하면 우회가 가능할 것이다. Summary 위 식에서

Jsonp Injection Attack

CORS(Cross Origin Resource) HTTP 통신시에, 처음 전송되는 리소스와 다른 도메인으로부터 리소스가 요청될 경우 해당 요청을 Cross-origin HTTP Request 라고 부른다.보안 상의 이유로 대부분의 브라우저들은 이러한 통신을 제한하고 있는데자바스크립트의 XMLHttpRequest 객체로 통신할 때에 사이트 외의 도메인에 요청을 보낼 수 없는 것 또한 이런 이유에서다.CORS는 Jsonp, document.cookie 값 설정, 브라우저 특수 옵션(크롬의 –disable-web-security 옵션 등) 와 같은 방법으로일부 극복이 가능하지만 보안 취약점을 유발할 수 있기에 주의하여 사용하여야 한다. JSONP(JSON with Padding) Jsonp는

JWT None Type Injection Attack

JSON Web Token(RFC 7519)은 JSON 문서에 클레임을 인코딩한 후 서명하는 방법이다. JWT란 JWT 는 웹사이트 사용자 인증에서 종종 쓰이는데, 쿠키에 주로 포함되어 쓰인다.base64로 인코딩되어 온점 2개로 구분되는 header.payload.signature 의 구조를 띈다. https://jwt.io/ 에서 JWT를 간편하게 복호화해 볼 수 있다. Header는 Type와 Algorithm 두 요소를 가지며, alg는 JWT의 세번째 부분인 Signature의 해싱 알고리즘을 지정할 수 있다. Payload는 토큰의 실제 정보가 들어있다.인증에 쓰이는 정보 이외에 추가로 클레임(reserved claim) 이라고 부르는 정보가 포함되는데토큰의