Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

HW_chick hacker

DVWA 실습 - Reflected Cross Site Scripting (XSS) 본문

Activity/DVWA

DVWA 실습 - Reflected Cross Site Scripting (XSS)

{{HW}} 2024. 7. 16. 02:58

반사된 XSS 실습

 


low 단계

test 입력 시 "Hello test" 로 출력된다.

 

http://웹 주소/dvwa/vulnerabilities/xss_r/?name=test#

해당 name값에 그대로 들어가며 기본적인 script 알림 구문을 넣어보겠다.

 

<pre>태그 안에서 <script> 태그가 탈출한다. 그 외에도 html 태그들도 삽입된다.

 

medium 단계

 

low 단계처럼 script구문을 넣으면 <script>태그가 필터링이 되어 있다.

script가 아닌 필터링 되지 않는 구문을 넣어 보며 우회 해보겠다.

 

<img src=x onerror=alert(1)>

 

 

high 단계

-> 필터링이 되지 않고 입력되는 값 그대로 출력이 된다.

 

해당 'name' 변수는 if, else를 활용해 htmlspecialchars를 활용해 XSS를 대응하고 있다.

 


XSS 대응 방안

HTML Entity 형태로 태그 문자를 치환

 

태그 사용을 제한하기 위해 태그 문자(<,>)는 HTML Entity 형태로 치환하여 입력된 태그 문자는 문자열로만 인식되도록 구현한다.

 

화이트리스트 방식으로 태그 제한

 

블랙리스트 방식으로 태그 제한

 

블랙리스트 방식으로 <script> 태그가 입력될 경우 공백으로 치환되도록 구현해야 한다.

화이트리스트 방식이 좀 더 보안적인 측면에서 우수하지만 블랙리스트 방식에 비해 사용성이 떨어질 수 있어 다방면에서 고려하여 구현해야한다.

 

입력 글자 수 제한

 

데이터베이스에서 입력 필드 길이 제한

 

"<script>alert(1)</script>"와 같이 사용하려면 최소 10자 이상을 작성해야하기 때문에 불필요한 입력 문자 수가 길 필요가 없는 입력 필드는 길이를 제한하여야 한다.

-> 클라이언트 측에서 maxlenth 속성을 삭제하여 우회 할 수 있기 때문에 데이터베이스에서도 길이 제한을 적용해야 한다.

 

- 보안 라이브러리(AntiXSS, OWASP 등)을 사용하여 개발한다.

'Activity > DVWA' 카테고리의 다른 글

DVWA실습 -File Inclusion  (0) 2024.07.25
DVWA실습 - SQL Injection  (0) 2024.07.18
DVWA실습 - Command Execution  (0) 2024.07.16
DVWA 실습 - Brute Force  (0) 2024.07.12