Server Side Inclusion/Edge Side Inclusion Injection
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Server Side Inclusion Basic Information
(Introduction taken from Apache docs)
SSI (서버 사이드 포함)는 HTML 페이지에 배치되고, 페이지가 제공되는 동안 서버에서 평가되는 지시어입니다. 이를 통해 기존 HTML 페이지에 동적으로 생성된 콘텐츠를 추가할 수 있으며, 전체 페이지를 CGI 프로그램이나 다른 동적 기술을 통해 제공할 필요가 없습니다. 예를 들어, 다음과 같은 지시어를 기존 HTML 페이지에 배치할 수 있습니다:
<!--#echo var="DATE_LOCAL" -->
그리고 페이지가 제공될 때, 이 조각은 평가되어 그 값으로 대체됩니다:
Tuesday, 15-Jan-2013 19:28:54 EST
SSI를 사용할 시기와 페이지를 완전히 생성할 프로그램을 선택하는 것은 일반적으로 페이지의 정적 부분과 매번 페이지가 제공될 때 재계산해야 하는 부분의 양에 따라 달라집니다. SSI는 위에 표시된 현재 시간과 같은 작은 정보 조각을 추가하는 훌륭한 방법입니다. 그러나 페이지의 대부분이 제공될 때 생성된다면, 다른 솔루션을 찾아야 합니다.
웹 애플리케이션이 확장자가 **.shtml
, .shtm
또는 .stm
**인 파일을 사용하는 경우 SSI의 존재를 추론할 수 있지만, 그것만이 전부는 아닙니다.
전형적인 SSI 표현식은 다음 형식을 가집니다:
확인
Edge Side Inclusion
정보를 캐싱하거나 동적 애플리케이션의 일부로서 콘텐츠가 다음 번에 콘텐츠를 검색할 때 다를 수 있다는 문제가 있습니다. 이것이 ESI가 사용되는 이유로, ESI 태그를 사용하여 생성해야 하는 동적 콘텐츠를 나타냅니다. 만약 공격자가 캐시 콘텐츠 내에 ESI 태그를 주입할 수 있다면, 그는 문서가 사용자에게 전송되기 전에 임의의 콘텐츠를 주입할 수 있습니다.
ESI Detection
서버의 응답에서 다음 헤더는 서버가 ESI를 사용하고 있음을 의미합니다:
이 헤더를 찾을 수 없다면, 서버는 어쨌든 ESI를 사용하고 있을 수 있습니다. 블라인드 익스플로잇 접근 방식도 사용할 수 있습니다. 요청은 공격자의 서버에 도착해야 합니다:
ESI 악용
GoSecure는 다양한 ESI 기능을 지원하는 소프트웨어에 대해 시도할 수 있는 가능한 공격을 이해하기 위한 표를 만들었습니다:
Includes:
<esi:includes>
지시어를 지원합니다.Vars:
<esi:vars>
지시어를 지원합니다. XSS 필터를 우회하는 데 유용합니다.Cookie: 문서 쿠키는 ESI 엔진에 접근할 수 있습니다.
Upstream Headers Required: 상위 애플리케이션이 헤더를 제공하지 않는 한 대리 애플리케이션은 ESI 문장을 처리하지 않습니다.
Host Allowlist: 이 경우 ESI 포함은 허용된 서버 호스트에서만 가능하므로, 예를 들어 SSRF는 해당 호스트에 대해서만 가능합니다.
소프트웨어
Includes
Vars
Cookies
Upstream Headers Required
Host Whitelist
Squid3
Yes
Yes
Yes
Yes
No
Varnish Cache
Yes
No
No
Yes
Yes
Fastly
Yes
No
No
No
Yes
Akamai ESI Test Server (ETS)
Yes
Yes
Yes
No
No
NodeJS esi
Yes
Yes
Yes
No
No
NodeJS nodesi
Yes
No
No
No
Optional
XSS
다음 ESI 지시어는 서버의 응답 내에서 임의의 파일을 로드합니다.
클라이언트 XSS 보호 우회
쿠키 훔치기
원격 쿠키 훔치기
HTTP_ONLY 쿠키를 XSS로 훔치기 위해 응답에 반영하기:
개인 로컬 파일
이것을 "로컬 파일 포함"과 혼동하지 마십시오:
CRLF
Open Redirect
다음은 응답에 Location
헤더를 추가합니다.
Add Header
강제 요청에 헤더 추가
응답에 헤더 추가 (XSS가 있는 응답에서 "Content-Type: text/json" 우회를 위해 유용함)
Add 헤더의 CRLF (CVE-2019-2438)
Akamai debug
이것은 응답에 포함된 디버그 정보를 전송합니다:
ESI + XSLT = XXE
eXtensible Stylesheet Language Transformations (XSLT)
구문을 ESI에서 사용할 수 있으며, 단지 dca
값을 **xslt
**로 지정하면 됩니다. 이는 XSLT를 악용하여 XML 외부 엔티티 취약점(XXE)을 생성하고 악용할 수 있게 할 수 있습니다:
XSLT 파일:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)References
Brute-Force Detection List
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Last updated