bWAPP - 5. iFrame Injection

Web hacking|2022. 1. 29. 14:01

                                                                     5. IFrame Injection

 

 

 

iFrame HTML 문서 안에서 또 다른 HTML 문서를 출력하는 태그로 사용되며, 어느 위치든 상관없이 인젝션 공격을 할 수 있습니다. iFrame 인젝션은 독립적으로 만들 수 있어 HTML 인젝션 중에서도 공격에 자주 사용되며, 주로 악성 URL을 삽입한 후 사이즈를 0으로 설정하여 숨기는 방법을 사용합니다.

 

- Low 레벨 -

iFrame Injection 실습페이지의 화면 입니다.

 

'iframei.php' 페이지를 보시면 GET 방식으로 데이터를 전송하기 때문에 URL에 변수를 노출합니다.

 

 

http://192.168.1.82/bWAPP/iframei.php?ParamUrl=robots.txt&ParamWidth=250&ParamHeight=250

 

 

 

 

소스코드 확인 결과 bWAPP 디렉토리에 있는 robots.txt 파일의 내용을 출력하는 것을 확인

 

html 파일을 하나 만든다.

<html>

           <head>

                     <h1>Iframe Injection</h1>

                                <script>document.write(document.cookie)</script>

           </head>

</html>

 

 

 

- LOW 결과 및 입력 값 -

http://192.168.1.82/bWAPP/iframei.php?ParamUrl=robots.txt"></iframe><iframe src="iframe_bWAPP.html"

width="250" height="250"></iframe>&ParamWidth=250&ParamHeight=250

 

만든 htmlurl에 주입결과 악의적은 html 페이지를 호출하게되었다.

iframe 태그에 추가되기 때문에 "></iframe> 입력하여 원래 페이지의 iframe 태그를 닫아

줍니다.

iframe 값을 입력후 페이지의 소스 코드를 다시 확인하시면 원래 있던 iframe 태그가 닫히고 악의적으로 주입한 iframe 태그가 추가된 것을 확인할수 있습니다.

즉 새로운 코드가 추가되었다.

 

 

출처https://securitycode.tistory.com/102 

 

 

 

 

 

- Medium 레벨 -

 

low레벨에서와 마찬가지로 ParamUrl을 조작했을 때, iframe_injection.html이 출력되지 않는 것을 볼 수 있다.

소스코드를 보면, ParamUrl GET방식으로 받지 않고, robots.txt로 지정해놓은 것을 확인할 수 있다.

vi iframei.php  

 

 

해당 url을 이용하여 low와 유사하게 진행해봤다.

http://192.168.1.82/bWAPP/iframei.php?ParamUrl=robots.txt&ParamWidth=250&ParamHeight=250"></iframe><iframe src="iframe_bWAPP.html"

width="250" height="250"></iframe>

 

하지만 \역슬래쉬가 붙는 것을 확인할 수 있다.

그래서 addslashes() 함수가 사용된다는 것을 알 수 있다.

addslashes() 함수를 거치게 되는데 addslashes() 함수란 ', '', \, NULL과 같은 문자앞에 \(역슬래쉬)를 붙이는 함수를 말한다.

 

- Medium 결과 및 입력 값 1번 -

iframe_bWAPP.html " " 로 감싸지 않기

 

http://192.168.1.82/bWAPP/iframei.php?ParamUrl=robots.txt&ParamWidth=250"></iframe><iframe src=iframe_bWAPP.html

width="250" height="250"></iframe>&ParamHeight=250

 

 

 

- High 레벨 -

 

function_external.php xss_chech_3함수를 확인해봤다.

 

htmlspecialchars함수를 이용해

웹 브라우저에서 iframe 태그에 사용되는 문자들을 HTML태그로 해석하지 않게 입력 데이터를 utf-8로 인코딩한다.

함수를 보면 HTML의 특수문자들을 변환한다고 되어있다.

이후 htmlspecialchars함수를 통해 utf-8로 반환한다.

 

따라서 iframe_injection.html이 출력되지 않는 것을 볼 수 있다.

 

공격은 불가능 하지만 이런식으로 대응이 가능하다는 것을 알았다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                       

댓글()