실습 환경 구축은 이 글에 설명되어있다. (https://rimystory.tistory.com/18)
HTML Injection - Stored (Blog) 공격 설명: HTML 태그를 블로그 형식의 페이지에 저장하여 관리자가 의도하지 않은 내용을 출력 혹은 권한 없이 우회하여 다른 페이지로 이동하는 공격.
1. 난이도: low
htmli_post.php 페이지의 형식을 사용하기 위해서 Reflected(POST) 페이지로 이동하여 개발자 도구(F12)를 키고 HTML 소스 코드를 복사한다.
[실행 화면]

복사한 코드:
<form action="/bWAPP/htmli_post.php" method="POST">
<p><label for="firstname">First name:</label><br>
<input type="text" id="firstname" name="firstname"></p>
<p><label for="lastname">Last name:</label><br>
<input type="text" id="lastname" name="lastname"></p>
<button type="submit" name="form" value="submit">Go</button>
</form>
다시 Stored(Blog) 페이지로 접속하여 textarea에 위 내용을 붙여넣고 Submit 버튼을 누르면 입력한 코드가 실행된다.
[실행 화면]

안에 내용을 채워놓고 Go 버튼을 누르면 아래와 같이 htmli_post 페이지로 이동할 수 있게 된다.
[결과 화면]

2. 난이도: medium, high
위와 같은 방법으로 HTML 코드를 붙여넣기 하고 Submit 버튼을 눌러보면 해석되지 않고 그냥 문자열로 출력하는 것을 볼 수 있다.
[결과화면]


공격이 실패한 이유를 찾기 위해 /var/www/bWAPP/htmli_stored.php 코드를 확인한다.

if security_level == 1(중) or 2(상) 일 경우,
xss_check_3 함수를 사용하여 Entry 항목에 들어가는 내용을 필터링하는 것을 볼 수 있다.
(대응방안)
xss_check_3 함수의 세부 로직은 앞 글들의 다른 html injection과 마찬가지로 <htmlspecialchars> 함수를 사용하며, /var/www/bWAPP/funtions_external.php에 정의되어 있다. 이 글에서는 사진 및 함수 설명을 생략한다.
'Projects > 애플리케이션 보안' 카테고리의 다른 글
| [bWAPP] PHP Code Injection 공격 실습 (0) | 2025.08.21 |
|---|---|
| [bWAPP] OS Command Injection 공격 실습 (0) | 2025.08.21 |
| [bWAPP] iFrame Injection 공격 실습 (0) | 2025.08.21 |
| [bWAPP] HTML Injection - Reflected (POST) 공격 실습 (2) | 2025.08.18 |
| [bWAPP] HTML Injection - Reflected (GET) 공격 실습 (0) | 2025.08.17 |