관리 메뉴

FU11M00N

2-1. bee-box 를 사용하여 HTML Injection 알아보기! 본문

Web Hacking/bee-box

2-1. bee-box 를 사용하여 HTML Injection 알아보기!

호IT 2020. 3. 15. 19:28

저번에는 bee-box를 배우기 위해 기본적인 OWASP TOP 10

무엇인가에 대해 알아봤는데요,

 

이번에는 A1-Injection 중 에서도 html injection (GET)에 대해 알아보겠습니다.

 

인젝션의 공격 방법은 Reflected(반사) 기법과 Stored (저장) 기법 공격이 있습니다.

 

먼저 Reflected(반사) 기법의 원리는 아래의 사진과 같습니다.

사진 1-1

이 공격은 데이터 전송을 GET 방식으로 전송할 경우 URL에 변수 이름과 값을 노출합니다.

특정 사이트에 있는 URL 주소 입력창에 직접 주소를 입력하여 공격하는 기법으로 사용됩니다.

 

그럼 bee-box로 실습해보겠습니다. 

 

사진 1-2

1. 레벨 low

먼저 First name과 Last name 필드에 

html 코드를 삽입합니다.

 

First name: <h1> Hi!! <h1>

Last name: <img src= http://자신의 주소/bWAPP/images/bee_1.png>

 

사진 1-3

결과는 first name에 썼던 html 코드와 last name에 썼던 html 코드가 출력되어 나오게 되었습니다.

 

사진 1-4

여기서 이 사진의 URL의 주소를보면 입력 부분에 변수가 되었고 변수에 입력하였던 HTML의 태그가 보입니다.

저기에 있는 주소를 일반 사용자에게 유인하여 정상사이트인척 위장하여 더욱더 강한 악성 HTML 코드를 삽입하여

사용자에게 피해를 줄수있습니다.

 

2. 레벨 medium

 

그럼 이번엔 레벨을 medium으로 변경하여 시도해보겠습니다.

 

사진 1-5

아까와 같이 HTML 코드를 삽입하면 공격이 실패하여 코드가 삽입이 안되었습니다.

 

사진 1-6

이것이 이 페이지의 소스코드 중 일부분입니다.

난이도 medium에서는 xss_check_1으로 이동하게 되고

 

xss_check_1의 내용은

 

function xss_check_1($data)
{
    
    // Converts only "<" and ">" to html entities    
    $input = str_replace("<", "&lt", $data);
    $input = str_replace(">", "&gt", $input);
    
    // Failure is an option
    // Bypasses double encoding attacks   
    // %3 Cscript%3 Ealert%280%29% 3C%2 Fscript%3E
    // %253 Cscript%253 Ealert%25280%2529% 253C%252 Fscript%253E
    $input = url decode($input);
    
    return $input;
    

str_replace의 함수를 사용하여 <와 >를  <는 &lt 치환되고 있고 >는 &gt로 치환되고 있습니다.

 

 

사진 1-7

그럼 <와 >를 각각 치환해줘서

사진 1-8

다음과 같이 작성하여 공격을 성공시킵니다.

 

 

3. 레벨 High(대응방안)

 

 

사진 1-9

레벨 High부분에서는 < , >를 우회하여 사용하는 공격이 안됩니다.

해당 코드를 분석하면

 

아까의 사진 1-6과 같이 case : 2 즉 레벨 High는 xss_check_3으로 가게 됩니다.

 

사진 1-10

xss_check_3는 htmlspecialchars 함수를 사용하고 이것은 PHP에서 제공하는 기본 함수입니다.

HTML에서 사용되고 있는 특수문자를 UTF-8으로 반환하고 UTF-8은 유니코드의 한 문자를

1바이트로부터 4바이트까지 인코딩하며 아스키코드도 호환이 가능합니다.

 

즉 html injection을 대응 하기 위해선 htmlspecialchars 함수를 사용하여 HTML에

사용되는 태그들을 인식되지 않게 해야 합니다.

Reference by 비박스 환경을 활용한 웹 모의해킹 완벽실습

Comments