취약점 유형
Text Based Injection
상세내용
요약
wargame.kr 웹 애플리케이션은 TBI(텍스트 기반 주입)에 취약합니다.
기술
텍스트 인젝션 또는 TBI(텍스트 기반 인젝션)는 사용자 입력을 그대로 일반 텍스트로 애플리케이션 응답에 반영하는 인젝션입니다. 이는 피싱 공격에 사용할 수 있는 콘텐츠 주입 또는 가상 변조라고도 하는 콘텐츠 스푸핑을 수행하는 방법 중 하나입니다. 애플리케이션은 사용자가 제공한 데이터를 적절하게 처리하지 않을 때 텍스트 주입에 취약합니다. 공격자는 일반적으로 매개변수 값을 통해 또는 사용자에게 다시 반영되는 URL에서만 웹 애플리케이션에 콘텐츠를 제공할 수 있습니다. 사용자는 신뢰할 수 있는 도메인의 컨텍스트에서 수정된 페이지를 보게 됩니다. OWASP를 기반으로 하는 이 공격은 신뢰 관계를 악용하는 데 사용됩니다.
즉, 공격자는 텍스트 주입 취약점을 사용하여 사용자가 메시지가 합법적인 것으로 믿도록 피싱할 수 있는 사용자 지정 메시지를 응용 프로그램에 제공할 수 있습니다. 이 공격은 코드 기반 취약성과 사용자 신뢰를 악용하는 데 사용됩니다.
재현 단계
- /static/ URL 경로에 존재하지 않는 문자를 삽입하여 오류 페이지를 만듭니다.
- 생성된 URL은 다음과 같습니다.
http://wargame.kr/static/Hi%20This%20Page%20is%20Server%20Error%20Please%20go%20to%20the%20www.attacker.com/attacker.php%20Thank%20you
해결방법
- 작성된 텍스트는 응답 HTML에서 다시 응답해서는 안 됩니다.
- 애플리케이션은 매개변수에 대해 정의된 값과 유형만 수락해야 하며 변경 내용이 있는지 서버 측에서 확인해야 합니다. 변경이 있는 경우 애플리케이션은 해당 요청을 거부해야 합니다. 또한 페이지 응답에서 URL을 통해 메시지를 구성하고 보내지 마십시오. 속성 파일에 미리 정의된 메시지를 사용하는 것이 좋습니다.
- 기본 오류 페이지의 경우 응용 프로그램이 공격자에게 오류 메시지를 누출하지 않도록 하려면 응용 프로그램 구성에서 기본 오류 페이지를 지정해야 합니다. 표준 HTTP 오류 코드를 처리하는 것은 우수한 보안 방법일 뿐만 아니라 사용자 친화적이며 404, 403, 500 등과 같은 오류 코드에 대한 사용자 지정 오류 페이지를 지정하여 수행할 수 있습니다.
예상 결과 및 파급력
기타사항 및 레퍼런스
https://hackerone.com/reports/1245051
https://hackerone.com/reports/498562
https://hackerone.com/reports/327671
기본 아파치 에러메시지에 요청한 url의 일부가 요청된다는 제보 감사합니다.
하지만 기본적으로 출력되는 메세지에서 별도의 태그등을 활용할 수 없으므로 타 피싱에 활용하거나 할 수 없으므로 영향도가 매우 미비합니다.