Code::Security/비박스(BWAPP)

비박스(bWAPP) iFrame Injection

태군 코드 2019. 1. 21. 15:23
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.

 

A1 - iFrame Injection

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

 

 

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

 

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

 

ParamURL은 연결할 주소를 받아오고, ParamWidth와 ParamHeight는 내용을 출력할 크기를 지정합니다.

 

 

실제 페이지의 소스코드를 확인해 보시면 bWAPP 디렉토리에 있는 robots.txt 파일의 내용을 출력하는것을 보실수 있습니다.

 

URL에서 ParamUrl 변수의 값은 robot.txt이며, 이 변수에 입력한 내용이 iframe 태그에 추가되어 기존 iframe 태그를 강제로 닫고 URL에 노출된 변수에 악의적인 iframe 태그를 주입하는 방법을 사용해 보겠습니다.

 

iframe태그로 사용자 모르게 악의적인 HTML 페이지를 호출하기 위하여 HTML 페이지를 먼저 만들어 주도록 하겠습니다.

 

<html>

<head>

<h1>Ifrme Injection TEST</h1>

<script>alert("Iframe TEST")</script>

</head>

</html>

 

저같은 경우에는 간단하게 팝업창을 띄우는 HTML 페이지를 만든뒤에 bWAPP 디렉토리 안에 저장을 해놓았습니다.

 

이제 HTML 페이지를 만들었으니 iframei.php 페이지로 이동하여 ParamUrl 변수에 악의적인 HTML 페이지를 호출하는 iframe 태그를 입력 해보도록 하겠습니다.

 

ParamUrl 변수의 값이 원래 페이지의(src="robots.txt") iframe 태그에 추가되기 때문에 "></iframe>을 입력하여 원래 페이지의 iframe 태그를 닫아 줍니다.

 

http://127.0.0.1/bWAPP/iframei.php?ParamUrl=robots.txt"></iframe><iframe src="iframe_test.html" width="250" height="250"></iframe>&ParamWidth=250&ParamHeight=250

 

 

[확인] 버튼을 클릭하면 robots.txt 내용 옆에 iframe_test.html 입력한 내용이 나오게 됩니다.

 

 

여기서 보시면 정상 iframe 태그에 들어가는 넓이와 높이 속성이 문자열로 출력이 되는것을 볼수 있고, 이는 정상 iframe 태그를 강제로 닫았기 때문에 속성이 노출된 것입니다. ParamWidth 변수에 iframe 태그를 주입하면 정상 iframe 태그의 가장 마지막 이기 때문에 ">만 출력이 됩니다.

 

 

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

 

여기서 width부분과 height 부분을 0값으로 넣고 테스트를 해보시고 버프스위트를 이용하여 다시 한번 테스트를 해보시기를 추천드립니다.

 

난이도 상에서는 xss_check_3 함수로 입력 데이터를 우회하고 있습니다. xss_check_3 함수는 functions_external.php에 정의 되어 있고, htmlspecialchars 함수로 입력값을 우회 합니다.


htmlspecialchars 함수는 PHP에서 제공하는 기본 함수로, HTML에서 사용하는 특수 문자를 UTF-8로 반환합니다.
htmlspecialchars 함수에서 반환하는 함수는 특수문자 &, ", ', <, > 입니다. 따라서 HTML 인젝션을 막으려면 htmlspecialchars 함수를 사용하여 HTML 태그에 사용되는 문자들을 인식하지 않게 인코딩 해줍니다.

반응형