Directory Listing
·
Web Study
Directory Listing웹 서버가 특정 디렉터리(폴더)에 대해 기본 문서(index.html, index.php 등)을 찾지 못했을 때, 그 폴더 안에 있는 파일/하위 디렉터리 목록을 그대로 보여주는 기능 발생원인주된 원인은 서버 설정 때문이다. 대표적으로해당 디렉터리에 index 파일이 없음웹 서버에서 자동 인덱싱(autoindex) 기능이 켜져 있음접근 제어가 제대로 설정되지 않음개발/테스트용 디렉터리를 운영 환경에 그대로 둠즉, 서버가 보여줄 메인 문서가 없으니, 대신 폴더 안 목록이라도 보여주자 라고 동작하는 것이다.어떤 서버에서 보이나Apache: Apache에서는 Options Indexs 설정이 있으면 디렉터리 목록이 보일 수 있다. Nginx: Nginx에서는 autoindex on..
Host Split Attack
·
Web Study
Host Split AttackURL 안의 호스트명(Hostname)을 처리하는 과정에서, 일부 Unicode 문자가 정규화(normalization)/IDN 처리 과정에서. / : @ # 같은 URL 구조를 바꾸는 문자처럼 변형되면서, 프로그램이 처음 이해한 호스트의 실제 전송 이동 시점의 호스트가 달라지는 취약점이다. 핵심은 보안 판단은 원래 문자열 기준으로 했는데, 나중에 정규화 후 URL 구조가 바뀌어 다른 도메인으로 해석된다는 것이다. 쉽게 말해,trusted.example 안의 하위 도메인이라고 믿었는데, Unicode/IDNA 변환 뒤에는 evil.example/path.trusted.example 같은 전혀 다른 구조로 바뀌어 오픈 리다이렉트 우회, OAuth 토큰 탈취, 도메인 검증 우회..
HTTP Session Hijacking
·
Web Study
HTTP Session HijackingHTTP Session Hijacking은 공격자가 다른 사용자의 유효한 세션을 탈취해서, 그 사용자로 가장하는 공격이다. 웹 애플리케이션은 보통 세션 ID를 통해 사용자 인증 상태를 유지한다. 이 세션ID가 노출/예측/고정/재사용되면 공격자는 피해자 비밀번호를 몰라도 로그인된 상태를 그대로 가로채서 행동할 수 있다.SessionHTTP는 기본적으로 stateless이다.즉, 요청 1번과 요청 2번이 같은 사용자인지 자체적으로 기억하지 못한다.그래서 서버는 사용자가 로그인하면 서버 측에 세션 상태를 만들고, 클라이언트에게는 그 세션을 식별할 세션 식별자(session identifier)를 내려준다.이 값은 일반적으로 Set-Cookie 헤더를 통해 쿠키로 저장되고..
Parameter Tampering Attack
·
Web Study
Parameter Tempering Attack공격자가 클라이언트와 서버 사이에서 전달되는 파라미터를 임의로 수정해서, 애플리케이션 데이터나 동작을 바꾸는 공격이다. URL query string, hidden form field, cookie 등으로 전달되는 값을 조작으로, 예시로는 사용자 자격, 권한, 상품 가격, 수량 같은 값 변경이 있다. 핵심은 서버가 사용자가 보낸 값을 믿으면 안되는데 믿었을 때 생기는 문제 CWE-472: hidden field, parameter, cookie, URL값이 변조되지 않을 것이라고 잘못 가정하는 문제를 설명CWE-20: 개발자가 쿠키나 hidden field가 수정 불가능하다고 믿으면 입력 검증 자체를 생략할 수 있다고 설명 ☞ 단순히 "값이 바뀐다"가 아니라..
JS Obfuscation
·
Web Study
JS Obfuscation란?JavaScript Obfuscation(난독화)로, 코드를 원래 기능은 유지한 채 사람이 읽고 분석하기 어렵게 변형시키는 기술이다. 핵심은 **이해를 어렵게 만든다** int a = 1int a = ((123+34+350-34-350)*0)+1 위의 코드는 쉽게 볼 수 있지만, 다양한 함수 또는 방식을 이용해 코드가 눈에 잘 들어오지 않도록 만들 수 있다.대표 기법1. 식별자 변경가장 기본적인 기법으로, 의미 있는 변수명/함수명을 전부 무의미한 이름으로 바꾼다.chechPassword userToken isAdmin위 코드처럼 이름만 봐도 역할이 보이는데 이를 _0x12ab, _0x9f3c 처럼 의미 없는 이름으로 바꾼다. ☞ 사람은 코드를 읽을 때 이름을 많이 본다. de..
AWK Code Injection
·
Web Study
AWKAWK는 Unix/Linux에서 텍스트 처리에 사용되는 프로그래밍 언어/도구이다.파일이나 입력 스트림에서 패턴을 찾고 처리하는 데 매우 강력하다.Code Injection코드 인젝션(Code Injection)이란, 공격자가 프로그램이 처리하는 입력값에 악성 코드를 삽입해 프로그램이 의도치 않은 동작을 하도록 만드는 공격이다. 사용자 입력을 AWK 명령에 그대로 포함시킬 때 취약점이 생긴다.취약점 코드 예시#!/bin/bash# 사용자로부터 검색할 이름을 입력받아 파일에서 찾는 스크립트USER_INPUT="$1"awk "/$USER_INPUT/ { print }" users.txt쉘 스크립트에서 사용자 입력을 AWK에 직접 넣는 경우가 대표적이다.정상적인 사용./search.sh "Alice"# →..
CVE-2022-29078
·
Web Study
드림핵 ejs@3.1.8 문제를 보고 분석을 해보았다.해당 취약점은 CVE-2022-29078 취약점을 기준으로 EJS 엔진에서 SSTI 취약점이 발견되었고 RCE까지 가능했던 취약점이다. EJS란: EJS(Embedded JavaScript templates)의 줄임말로, Node.js에서 많이 쓰는 서버 사이드 템플릿 엔진서버에서 HTML을 만들 때, HTML 안에 같은 문법으로 값을 끼워넣거나/JS로직을 실행해서 완성된 HTML 문자열을 만들어 브라우저로 내려준다. SSTI란: 사용자 입력이 템플릿으로 들어가서, 템플릿 엔진이 그 입력을 데이터가 아니라 템플릿/코드/옵션처럼 해석해버리는 취약점위 취약점은 사용자 입력으로 EJS 렌더 옵션을 덮어써서 템플릿 컴파일 시 생성되는 JS 코드에 악성 구문..
Prototype Pollution
·
Web Study
Prototype Pollution공격자가 Object.prototype 같은 전역(공통) 프로토타입에 임의의 속성을 추가/변조해서, 이후 생성되는 많은 객체들이 그 속성을 상속받도록 만드는 취약점 JS는 객체에서 속성을 찾을 때 없으면 프로토타입 체인을 따라 올라가며 찾는데, 이때 전역 프로토타입(Object.prototype)이 오염되면, 앱 전체 로직이 예상 밖으로 바뀔 수 있다. 프로토 타입을 오염시키면모든 객체가 영향받음: 새로 만들어지는 모든 객체에 악의적인 속성이 추가됨권한 우회: 접근 제어 로직을 우회할 수 있음원격 코드 실행: 특정 조건에서 임의의 코드를 실행할 수 있음서비스 거부: 애플리케이션을 중단시킬 수 있음Prototype Pollution 발생 원리기본 메커니즘Prototype ..
CVE-2025-29927
·
Web Study
CVE-2025-29927명칭: Next.js Middleware 인증/권한 우회Next.js에서 미들웨어(Middleware)에만 의존해서 인증/권한 체크를 해둔 경우, 공격자가 특정 내부용 헤더를 흉내 내서 미들웨어 실행을 ‘건너뛰게’ 만들고 보호된 페이지에 접근할 수 있는 취약점입니다.미들웨어(Middleware)가 뭐지?Next.js 문서 기준 Middleware는 요청이 라우트(페이지/핸들러)에 도착하기 전에 실행되는 코드라고 정의가 되어있습니다. 무슨 일을 하는데?로그인했는지 확인 → 안 했으면 /login으로 보내기인증 쿠키/토큰이 없으면 NextResponse.redirect(new URL('/login', req.url)) 같은 식으로 로그인으로 보냄특정 권한(관리자)인지 확인 → 아니면..
XS - Search
·
Web Study
보호되어 있는 글입니다.