※ HTML 인젝션 - Reflected(GET)
취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격이다.
HTML 태그를 악의적인 사이트에 연결하거나 악성 파일을 다운로드 하도록 유도한다.
<공격 실습>
h태그를 입력해보면 태그가 해석되면서 입력값들이 출력되게 된다.
해당 요청을 URL의 파라미터로 전달할 때는 다음과 같다.
이제 자바스크립트의 alert함수를 이용해 XSS를 시도해보자.
alert창이 뜨는 것을 확인할 수 있다.
해당 공격을 이용하여 쿠키와 같은 정보를 탈취할 수 있고, 악의적인 페이지로 리다이렉션이 이루어질 수 있다.
쿠키값을 가져올 수 있는지 테스트해보자.
만약 쿠키값이 공격자에게 넘어가게 된다면 공격자는 ID/PW없이 사용자로 로그인할 수 있다.
이번에는 img태그를 이용해보도록 하자.
비박스 페이지에 있는 이미지를 가져와보자.
이제 보안 단계를 미디움으로 상향시킨 후 이전 공격을 수행해보자.
스크립트 태그가 이스케이프 처리되어 공격이 막히는 것을 볼 수 있다.
서버에서 입력값이 처리되는 로직을 살펴보게 되면 <, > 문자는 str_replace함수에 의해 치환되고 있다.
하지만 <, >가 아닌 %3C, %3E같은 url 인코딩된 값을 전달하게 되면 해당 로직을 우회할 수 있다.
공격 수행을 위해 double 인코딩을 시도해보자.
%3cscript%3ealert(%22test%22)%3c%2fscript%3e
우회가 성공했음을 확인했다.
이제 보안 레벨을 하이로 옮겨보자.
디코드 과정이 없기 때문에 url 인코딩 값을 전달해도 공격이 막히게 된다.
※ HTML 인젝션 - Reflected(POST)
POST 방식으로 처리하는 로직에서는 바디값에 인자값을 전달하게 된다.
GET방식과 인자값 전달 방식만 다를 뿐 공격수행과정은 동일하다.
※ HTML 인젝션 - Stored(Blog)
악의적인 HTML 태그가 데이터베이스에 저장되며,
블로그에 HTML 코드를 저장하여 관리자가 의도하지 않은 페이지를 다른 사용자들에게 보여주는 공격을 시도한다.
alert함수가 담긴 script 태그를 게시판에 저장하게 되면 글이 읽어질 때 스크립트 함수가 실행된다.
보안 레벨을 하이로 올렸을 때는 태그가 이스케이프 처리되어 저장된다.
'모의해킹 > 웹해킹' 카테고리의 다른 글
[Web Hacking] bWAPP(비박스) SQL Injection (0) | 2020.03.26 |
---|---|
[Web Hacking] bWAPP(비박스) iframe, OS Command, PHP Code, SSI(Server Side Includes) Injection (0) | 2020.03.25 |
[Web Hacking] WebGoat Blind XXE 개념 (0) | 2020.03.23 |
[Web Hacking] WebGoat XXE Modern REST framework 문제풀이 (0) | 2020.03.23 |
[Web Hacking] WebGoat XXE 문제풀이 (2) | 2020.03.23 |