본문 바로가기

보안지식/주통기반

[주통기반] 공격 시나리오 정리(SQL, SSI 인젝션)

안녕하세요 이번에는 주통기반에 있는 5번째 6번째 있는 취약점을 연구해보겠습니다.

 

일단 SQLi은 제가 이미 연구한 게 있습니다.

 

https://mynameisarke.tistory.com/category/%EB%B3%B4%EC%95%88%EC%A7%80%EC%8B%9D/SQL

 

'보안지식/SQL' 카테고리의 글 목록

 

mynameisarke.tistory.com

 

간단히 말하자면 SQL문을 삽입하는 공격이죠!

 

정보 변조도 가능하고 정보 탈취도 가능한 매우 위험한 취약점입니다.

 

 

 

이제 SSI 인젝션을 보겠습니다.

 

-SSI(Server Side Includes) 이란?

 

서버 측에서 HTML 문서를 생성할 때 다른 파일의 내용을 포함하여 웹 페이지를 구성하는 기술이라고 합니다.

이 기술을 이용해 웹 페이지의 일부를 동적으로 생성하고 재사용할 수 있게 됩니다!

 

확장자는 shtml을 사용합니다.

 

 

 

실습은 bwapp 통해서 가능합니다.

http://www.itsecgames.com/

 

bWAPP, a buggy web application!

Home bWAPP, or a buggy web application, is a free and open source deliberately insecure web application. It helps security enthusiasts, developers and students to discover and to prevent web vulnerabilities. bWAPP prepares one to conduct successful penetra

www.itsecgames.com

 

여기에 다양한 취약점을 이용해 해킹 가능한 실습 환경이 구축되어 있습니다.

 

다만 조금 설치하는 게 귀찮습니다. 다운하시고 웹 서버 여시고 등등.. 구글에 bwapp 실습 환경 치시면 바로 설치하는 방법 나옵니다.

 

https://www.youtube.com/watch?v=pCDm_bLbrqE 

 

저는 칼리리눅스에 실습 환경 구축하기 위해 여길 참고 했습니다.

 

중간에 php문 ! 지우는 과정이 있는데 그거 놓치시면 안 됩니다!

 

 

어쨌든 바로 실습 시작해 볼게요

 

이거 SSI 선택하고

 

밑에 버튼 hack을 누르면 됩니다.

 

음..

IP 주소를 알려주는 거네요!

 

그럼 한 번 대충 입력해보겠습니다. 123, 123 입력하겠습니다.

 

이렇게 나오네요

lookup 명령어는 ip 주소를 알아낼 때 쓰이는 명령어입니다.

 

원래는 IP주소가 나와야만 하는데 저는 왜인지 안 나오네요..

 

그리고 제가 입력한 123 123이 그대로 나오네요!

그럼 한 번 html에 시스템 명령을 내리는 명령어를 작성해보겠습니다.

 

<!--#echo var="DATE_LOCAL"--> 이렇게 작성하면 날짜가 출력이 됩니다.

 

lookup!

 

제 컴퓨터에 설치한 bee가 계속 오류가 나서 안되는 관계로.. 다른 블로그 사진을 참고 했습니다

 

이렇게 날짜가 나옵니다.

 

이 상태에서 페이지 소스를 보면 

 

저렇게

그대로 명령어가 실행되는 것을 알 수 있죠.

 

그럼 exec 명령어를 이용해 시스템에 명령을 내리면 어떻게 될까요?

<!--#exec cmd="ls" --> 이렇게 하면 파일 목록들이 출력이 되겠죠?

 

 

 

 

이렇게 서버의 파일 목록을 볼 수 있습니다. 이뿐만이 아니라 nc 명령어 통해 원격 제어 명령어를 내릴 수도 있겠죠!

 

 

 

-대응방안

 

xss 공격을 막는 듯이 html Entity로 변환하면 끝입니다!

만약 어렵다면 화이트 리스트 기반으로 허용해 줄 html 태그들을 살려주고

블랙리스트 기반으로 이벤트 핸들러들을 필터링합니다. 예를 들어 onerror, onload 등 이 있겠죠.