2025/06 11

pugjs 취약점

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- 워게임 풀다가 관련 개념이 나와서 간단히 정리해 보려 한다. pug는 html을 더 효과적으로 보여주는 렌더링 엔진이다. pretty option을 통해 입력 값을 들여쓰기 해서 보여줄 수 있는데, 여기서 RCE가 발생할 수 있다고 한다. visitMixin: function(mixin) { var name = 'pug_mixins['; var args = mixin.args || ''; var block = mixin.block; var attrs = mixin.attrs; var attrsBlocks = this.attributeBlocks(mixin.attributeBlo..

Study 2025.06.26

Unicode case mapping collision

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- 어제 드림핵에서 워게임 문제 풀다가 관련 개념이 나와서 정리해보려고 한다.생각치도 못했는데, 알고 나니까 신기하더라.. Unicode case mapping collision이란?유니코드가 lowercasing, uppercasing 할 때 서로 충돌하여 동일하게 처리되는 현상..이라고 하는데,쉽게 이해하기 위해 예시를 들어보면print('ß'.lower() == 'SS') // Falseprint('ß'.upper() == 'SS') // Trueprint(ord('S')) // 83 python으로 독일어 'ß' 를 대문자화하면 'SS' 와 같다고 인식하는 것을 볼 수 있다. 그리고 저기 있는 'S'는..

Study 2025.06.26

Prototype Pollution

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- Prototype Pollution이란?Javascript는 객체 지향 언어이다. python, java는 class 라는 개념으로 상속을 구현하지만, javascript는 prototype을 이용하여 상속을 구현한다. (물론 class도 사용하지만, 본질은 prototype이긴 함)모든 객체는 최상위 객체를 원형(prototype)으로 삼고 이를 참조하는 방식으로 상속과 비슷하게 구현되는 것. 쉽게 말해 어떤 객체의 프로퍼티를 찾을 때, 자바스크립트는1. 해당 객체 확인2. __proto__로 연결된 부모 객체 확인3. 계속 거슬러 올라가다가 마지막에 전역 객체인 Object.prototype까지 확인4..

Study 2025.06.25

CSP

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- CTF 풀 때 CSP를 포함한 문제가 나왔었다. 중간에 계속 헷갈렸었으니 다시 한번 정리해보는 시간을 가져보도록 해보자. CSP란?Contents Security Policy. 콘텐츠 보안 정책이라고 한다.주요 목표는 XSS 공격을 완화하고 보고하는 것이다. 브라우저는 콘텐츠의 출처를 신뢰하기 때문에 공격자가 주입한 악성 스크립트를 실행한다. 때문에 XSS 공격이 발생하는 것이고.하지만 CSP를 통해서 신뢰할 수 있는 출처나 소스를 지정하면 XSS 공격을 완화할 수 있게 되는 것. 사용 방법은 두 가지가 있는데, HTTP 헤더Content-Security-Policy: default-src 'self'; ..

Study 2025.06.24