XPath 인젝션
IT위키
더 많은 작업
XPath 인젝션(XPath Injection)은 응용 프로그램이 외부 입력을 검증 없이 이어 붙여 XPath 질의를 만들 때, 공격자가 질의 구조를 바꾸는 문자열을 넣어 인증을 우회하거나 허가되지 않은 XML 데이터를 읽어 내는 공격이다.
String expr = "//users/user[login/text()='" + id +
"' and password/text()='" + pw + "']/home_dir/text()";
- 비밀번호 칸에
' or '1'='1을 넣으면 조건이 항상 참이 되어 비밀번호 없이 첫 사용자의 노드가 선택된다 - XPath 에는 SQL 의 테이블 권한 같은 접근 통제가 없어서, 질의를 조작하면 XML 문서 전체를 읽을 수 있다. CWE-643 도 공격자가 XPath 질의를 바꿔 제한된 XML 내용을 골라 읽을 수 있다고 적는다[2]
- 결과가 참·거짓으로만 드러나도 한 글자씩 추측해 문서 구조와 값을 알아내는 블라인드 기법이 쓰인다
| 취약점 | 주입 대상 | 실행 위치·결과 |
|---|---|---|
| XPath 인젝션 | XML 문서를 조회하는 XPath 식 | 서버에서 XML 데이터 노출, 인증 우회 |
| SQL 인젝션 | 관계형 DB 의 SQL 문 | 서버의 DBMS 에서 실행 |
| LDAP 인젝션 | 디렉터리 검색 필터 | 디렉터리 서버 조회 조작 |
| 크로스사이트 스크립트(XSS) | 웹 페이지에 출력되는 스크립트 | 다른 사용자의 브라우저에서 실행 |
| 크로스사이트 요청위조(CSRF) | 사용자가 모르게 보내는 요청 | 로그인한 사용자의 권한으로 서버 기능 실행 |
| 디렉토리 리스팅 | 주입 없음(서버 설정 문제) | 기본 문서가 없는 디렉터리의 파일 목록 노출 |
- ↑ 「XML Path Language (XPath) 3.1」, W3C Recommendation, https://www.w3.org/TR/xpath-31/, 확인일: 2026-11-04.
- ↑ 2.0 2.1 2.2 「CWE-643: Improper Neutralization of Data within XPath Expressions ('XPath Injection')」, MITRE, https://cwe.mitre.org/data/definitions/643.html, 확인일: 2026-11-04.