HTML 인젝션 공격
📌 인젝션 공격
- 애플리케이션에 비정상적인 입력값을 주입하여 해석기를 속여 프로그램의 흐름을 조작하는 공격이다.
- 주로 데이터베이스나 웹 애플리케이션과 같은 외부 입력을 받아들이는 시스템에서 발생한다.
인젝션 공격의 종류
- SQL 인젝션 : SQL 쿼리를 주입하여 데이터베이스를 조작하거나 민감한 정보를 노출 시키는 공격이다.
- HTML 인젝션 : 악의적인 스크립트를 삽입하여 웬 페이지를 렌더링을 조작하거나 브라우저엑서 실행도록 하는 공격이다.
- OS Command 인젝션 : 명령어를 주입하여 운영 체제 명령을 실행시키거나 시스템을 제어하는 공격이다.
📌HTML 인젝션
취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격이다.
HTML 인젝션 공격에 취약한 페이지 유형
- HTML을 지원하는 게시판
- Search Page
- Join Form Page
- Referrer를 이용하는 Page
- 사용자로부터 임의의 값을 입력받아 화면에 그대로 출력하는 페이지
HTML 인젝션 공격이 가능한지 확인하는 방법
- 입력하는 값이 이외에 HTML 태그를 포함한 구문을 입력하고 결과를 확인한다.
- 입력하는 값 이외에 HTML 태그를 포함 한 구문에서 HTML 태그를 인코딩하여 결과를 확인
- ”<” = %3C, “>” = %3E, “/” = %2F
- … 인코딩한 결과에서 %만 %25로 한번더 인코딩하여 결과를 확인한다.
인젝션 공격이 가능한 페이지를 확인하면 공격자는 사용자가 연결을 요청한 페이지에 HTML 태그를 삽입하여 의도하지 않은 내용을 보게하거나 악의적인 사이트에 연결하도록 할 수 있다.
📌 HTML 인젝션 반사(Relfected) 기법 - GET방식
GET방식으로 전달되는 페이지에서 취약점이 있는 경우, URL의 매개변수에 악의적인 HTML 태그를 삽입하여 사용자게에게 보내고 사용자가 해당 링크를 클릭할 때 HTML 태그가 실행되도록하는 공격 기법이다. 이를 통해 공격자는 사용자의 PC에서 악의적인 스크립트 를 실행시킬 수 있다.
Beebox HTML Injection - Reflected (GET) - LOW 실습
취약점
- HTML 태그를 포함한 값을 입력하여 공격을 진행해보자.
- 사용자로부터 입력받은 내용을 그대로 출력하는것으로 보인다.
입력값 이외의 HTML 태그 입력
- HTML 태그 중하나인 h1 태그를 입력해 보았는데 태그를 반영하는것을 확인할 수 있다.
- ’< a >’ 태그를 사용하여 악성 페이지로 유도하는 공격도 할 수 있을것이다.
Beebox HTML Injection - Reflected (GET) - MEDIUM 실습
취약점 확인
- LOW 레벨과 다르게 HTML 태그들이 반영되지않고 그대로 출력되는것을 확인할 수 있다.
- 태그들의 구문을 인코딩하여 입력하고 결과를 확인해보자.
- 입력값에 태그를 인코딩한 값인
%3Ch1%3Ehihi%3C%2Fh1%3E
입력하였다. - 태그를 반영하여 결과를 출력하는것을 확인할 수 있다.
- 위와 마찬가지로 여러가지 공격을 할 수 있을 것이다.
📌 HTML 인젝션 반사(Relfected) 기법 - POST방식
- POST 방식은 매개변수가 URL에 보이지 않아 사용자에게 직접적으로 공격 링크를 전달하여 공격하는 것은 어렵다.
- 그러나 Burp Suite과 같은 프록시 도구를 사용하여 사용자와 서버 간의 통신을 중간에서 가로채고 수정할 수 있다.
- 이를 통해 공격자는 Request 패킷을 하이재킹하여 매개변수의 값을 조작하고, 변경된 값을 서버에 전송합니다
- 그리고 서버의 응답(Response) 패킷을 수정하여 공격자가 원하는 형태로 사용자에게 전달할 수 있다.
Beebox HTML Injection - Reflected (POST) - LOW 실습
취약점 확인
- 태그를 입력하여 반영이 되는것을 확인하였다.
- 버프수트를 이용하여 패킷을 가로채어 파라미터의 스크립트를 작성하고 패킷을 전송하였다.
- 원하는대로 동작하는것을 확인할 수 있다.
Beebox HTML Injection - Reflected (POST) - MEDIUM 실습
- GET 방식과 비슷하게 버프수트를 사용하여 매개변수의 값에 인코딩한 태그 구문을 입력하면 공격이 될 것이다.
📌 HTML 인젝션 저장(Stored) 기법
악의적인 HTML 태그를 데이터베이스에 저장하는 공격 기법이다.
- 악의적인 HTML 태그를 데이터베이스에 저장한다.
- 저장된 태그 내용을 확인한 사용자의 PC가 HTML 태그가 실행되게 하는공격이다.
- 공개적인 게시판에 악의적인 HTML 태그를 올리면 많은 사용자를 대상으로 공격이 가능하다.
HTML Injection - Stored (Blog) - LOW 실습
취약점 확인
- HTML 또는 스크립트 내용을 입력했을 경우 태그를 반영하는것을 확인할 수 있다.
- HTML 태그나 스크립트를 활용하여 여러 공격이 가능할 것이다.
📌 대응방안
- htmlspecialchars 함수를 사용하여 HTMl 태그에 사용되는 문자들을 인식하지 않게 인코딩한다.
댓글남기기