관리 메뉴

FU11M00N

6-1. bee-box 를 사용하여 SSI Code injection 알아보기! 본문

Web Hacking/bee-box

6-1. bee-box 를 사용하여 SSI Code injection 알아보기!

호IT 2020. 3. 19. 14:38

먼저 SSI 란

 

SSI란 Server Side Includes의 약자로서 웹페이지 내에서 CGI를 사용하지 않고서도 방문자 카운터, 최종변경일 및 CGI환경변수의 사용등을 간단히 사용할 수 있게 해주는 것으로 CGI환경변수 뿐아니라 일반적인 HTML문서 및 특정명령의 실행결과등을 지정한 위치에 삽입할 수 있는 것입니다!

1. 레벨 low

 

사진1-1

사진 1-1과 같이 Firstname Lastname으로 입력할수있는 칸이 존재하고

사진 1-2

Lookup을 입력하면 사용자의 IP가 출력이 됩니다. 그리고 URL을 자세히 보면 ssii.shtml 페이지가 호출되어 

ssii.shtml을 통해 SSI 기능을 사용한다는것을알 수가 있습니다.

 

SSI 지시어는 HTML 주석과 비슷한 형태로 웹 어플리케이션 서버에서 SSI 기능을 설정하지 않으면 브라우저에서 SSI 지시어를 실행하지 않고 무시합니다.

 

사진 1-3

그럼 First name에 SSI 지시어인 <!--#echo var="DATE_LOCAL"-->을 넣어서 현재 시간 정보를 출력해서 수행해주는 것을 입력해보았습니다.

 

그럼 내부 파일을 출력하기위해  속성을 cmd로 변경해서 시도해보겠습니다.

사진 1-4
사진 1-5

 

사진 1-4과 사진 1-5 처럼 cmd 속성을 이용해  ' ls / ' 을 이용해 파일을 출력한 모습입니다!

 

2. 레벨 High(대응방안)

 

사진 1-6
사진 1-7

레벨 상 에서는 사진 1-6과 사진 1-7 처럼 SSI 지시어를 입력하여도 명령어가 실행이 안되고 firstname lastname의 입력 값이 그대로 출력이 되었습니다.

 

그럼 먼저 소스 코드를 보겠습니다.

사진1-8

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

사진1-9

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

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

 

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

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

 

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




Comments