본문 바로가기
Projects/애플리케이션 보안

[bWAPP] iFrame Injection 공격 실습

by rimystory 2025. 8. 21.

실습 환경 구축은 이 글에 설명되어있다. (https://rimystory.tistory.com/18)

 

iFrame Injection 공격 설명: HTML 문서 안에서 또 다른 HTML 문서를 출력하는 태그. 주로 악성 URL을 삽입한 후 사이즈를 0으로 설정하여 숨기고 리다이렉트 시키거나 경고창을 띄울 수 있다.

1. 난이도: low

iframei.php 페이지는 GET 방식으로 데이터를 전송받으므로 아래 사진과 같이 URL에 변수를 노출한다.

또한 개발자도구(F12)로 코드를 확인하면 iframe 태그를 사용하여 robots.txt 파일의 내용을 출력한다는 것을 확인할 수 있다.

 

따라서 iframe 인젝션 공격을 위해 악의적인 html 페이지를 생성한다.

간단하게 vi로 /var/www/bWAPP/bad.html에 작성했다.

 

저장(wq)한 후 공격 페이지로 돌아와 URL에 iframe 인젝션 공격을 실행한다. URL에 입력한 내용은 아래와 같다.

 

(복사+붙여넣기 할 경우 자신의 IP주소를 확인하고 수정해야 한다.)

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

 

[결과화면] 

bad.html에 입력한 바와 같이 alert 창이 떴다. 공격 성공.

 

alert 창을 끄면 아래와 같이 해당 페이지에 iframe 태그가 주입된 것을 확인할 수 있다.

 

[결과화면]

 

위 결과와 달리 사용자가 눈치채지 못하도록 iframe의 width와 height 속성을 수정하여 공격할 수도 있다.

 

<공격 코드>

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

 

[결과화면]

 

이렇게 공격하면 이전 공격과 달리 옆에 수상한 글이나 속성이 뜨지 않는다. 공격 성공.

 

2. 난이도: medium, high

(대응방안)

난이도를 중/상으로 설정하면 사용되는 함수가 이전 html 인젝션 공격과 같이 xss_check_3과 4를 사용하여 입력 데이터를 우회하는 것을 볼 수 있다. 해당 함수의 상세 로직은 이전 html 인젝션 공격과 동일하게 <htmlspecialchars> 함수를 사용한다.

(/var/www/bWAPP/funtions_external.php 파일을 열어 확인할 수 있다.)