본문 바로가기
Hacking/bWAPP

XSS(Cross-Site-Scripting) Reflected_GET,POST

by 알거음슴 2021. 6. 21.

XSS(Cross-Site-Scripting) Reflected_GET

XSS(Cross-Site-Scripting)

악의적인 스크립트 코드가 데이터베이스에 저장되어 저장된 코드의 내용을 확인한 사용자의 PC에 스크립트 코드가 실행되는 공격.

 

Reflected

반사(Reflected)의 경우 공격자가 스크립트를 삽입한 페이지를 클라이언트가 접근했을 경우, 삽입된 스크립트가 클라이언트에서 실행되는 공격 기법이다, 이를 통해 클라이언트의 정보를 획득 또는 악의적인 동작을 추가적으로 발생시킬 수 있다.

 

 

1. XSS(Cross-Site-Scripting) Reflected_GET(Low)

기존 HTML-Injection Reflected(GET) 과 같은 방식, 이름을 입력 시 입력받은 이름을 출력해주는 페이지로 확인된다 GET_Method 방식으로 전달됨으로 URL을 통해 변수들을 확인할 수 있다.

Burpsuite 로 패킷을 캡쳐시 firstname, lastname 의 변수를 받고 있음을 확인할 수 있다, 스크립트 태그를 입력하여 적용되는 여부를 확인해본다.

<script></script> 구문이 정상적으로 적용되어 XSS 취약점이 있는것으로 확인된다, 구문을 통하여 손쉽게 Cookie값 및 스크립트 구문으로 여러 공격을 시도해볼 수 있다.

 

 

2. XSS(Cross-Site-Scripting) Reflected_GET(High)

High level의 경우를 한번 보자. 기본적인 구조는 동일한 것으로 보여진다, 동일하게 <script></script> 구문 삽입을 통하여 XSS 공격을 시도해본다.

<script> 구문이 문장 그대로 인식되어 출력됨을 확인할 수 있다 low levelhigh level의 소스코드를 비교해보자.

XSS Reflected_GET(low)

function no_check($data)
{
    return $data;
}

XSS Reflected_GET(High)

function xss_check_3($data, $encoding = "UTF-8")
{
    // htmlspecialchars - converts special characters to HTML entities   
    // '&' (ampersand) becomes '&amp;'
    // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set
    // "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set
    // '<' (less than) becomes '&lt;'
    // '>' (greater than) becomes '&gt;' 


    return htmlspecialchars($data, ENT_QUOTES, $encoding);


}

두 소스코드를 비교시 low level의 경우 데이터를 그대로 반환하는것과 달리 high level의 경우 메타캐릭터들을 문자 그대로 인식시키는 htmlspecialchars() 함수를 통해 데이터를 반환하는것으로 확인된다.

 

 

XSS(Cross-Site-Scripting) Reflected_POST

1. XSS(Cross-Site-Scripting) Reflected_POST(Low)

이번엔 POST_Method 방식을 보자. POST방식의 경우 URL에 변수가 노출되는 방식이 아닌 body에 데이터가 담겨져 있는 방식이다 burpsuite를 통해서 동일하게 확인을 진행한다.

GET_Method 방식과 동일하게 변수들이 지정되어있고 이번엔 URL 이 아닌 body 쪽으로 내용이 담겨져있는걸로 확인되고 있다. 변조를 진행해본다.

Cookie 값이 반환되어 XSS취약점을 확인할 수 있다. 기본 GET 방식과 데이터의 위치만 다를 뿐 동일한 방식으로 공격이 진행됨을 확인할 수 있다.

 

 

2. XSS(Cross-Site-Scripting) Reflected_POST(High)

동일한 공격을 시도하였으나 High level의 경우 역시나 메타캐릭터를 그대로 인식하여 적용되지않음을 확인할 수 있다.