처음부터 차근차근

인증 쿠키값 속이기, 파일 업로드 공격, zipbomb 본문

정보보안

인증 쿠키값 속이기, 파일 업로드 공격, zipbomb

_soyoung 2022. 5. 25. 11:57
반응형

쿠키와 세션의 차이점

  쿠키 세션
저장되는 곳 클라이언트 서버
저장형태 텍스트 형식 Object 형
만료기간 저장시 설정하는데 설정하지 않으면 브라우저 종료시 소멸 정확한 시점을 알 수 없음
자원 한 도메인에 20, 쿠키당 4KB, 300 서버가 허용하는 한 용량에 제한 없음

 

 

인증쿠키값 속이기(Spoof Authentication Cookie)

-> 쿠키 에디터(Cookie Editor)를 사용해서 쿠키 값을 바꿔 로그인 세션을 변경한다.

 

절차 정리

1. ID:webgoat로 로그인하여 sessionID1를 생성한 후, sessionID1의 쿠키를 저장
2. 다른 사용자 ID:aspect로 로그인하여 sessionID2의  쿠키를 저장
3. 다시 ID: aspect로 로그인 
4. 쿠키에디터를 이용하여 sessionID2의 쿠키 를 sessionID1의 쿠키로 수정-> 서버로 보냄
5. 서버는 ID: webgoat로 착각하여 ID: webgoat의 자료를 클라이언트에 넘겨줌

 

실습

1. 쿠키 에디터 설치

크롬 웹 스토어에서 쿠키 에디터를 설치한다.

2. webgoat 서버 실행

java  –jar  WebGoat-container-7.1-exec.jar -httpPort 2001

 

3. 팀원 1의 서버로 가서 로그인한 뒤 [Session Management Flaws] -> [Spoof  an Authentication Cookie] 클릭

 

4. id, 비번 : aspect로 로그인한 뒤 사이트에 '암호를 저장하기' 팝업창에서 예를 눌러 aspect의 쿠키를 저장한다. 

 

5. 쿠키에디터로 가서 AuthCookie 값을 메모장에다 복사해놓는다.

 

6. 로그아웃하고 다시 id, 비번 : webgoat로 로그인한다.

 

7. 쿠키에디터로 가서 webgoat의 AuthCookie 값에다 아까 저장해놓은 aspect의 AuthCookie값을 대입한다.

 

8. 그 다음 Refresh하면 webgoat 사용자가 Cookie에 의해 aspect로 변경된 것을 볼 수 있다.

 ↓

 

 

파일 업로드 공격

파일업로드 취약점

게시판 등에서 스크립트 파일의 업로드에 대한 규제가 없을 경우 이를 악용한 해커에 의해 악성 스크립트 파일이 수행될 수 있는 보안 취약점


파일업로드취약점을 이용하여 악의적이 파일을 업로드하는 방법

  1. 서버에 업로드할 그림(jpeg)파일을 준비
  2. 서버에 업로드할 그림 파일이 저장된 경로를 파악
  3. 서버에 업로드할 악의적일 파일을 준비
  4. 2 에서 파악한 경로를 이용하여 서버에 악의적인 파일을 업로드 
  5. 서버 공격


실습

1. 조원2의 webgoat 서버로 들어가서 [Malicious Execution] -> [Malicious File Execution] 클릭

2. 그 다음 아무 이미지 파일이나 upload하고, 새로 생긴 이미지 미리보기에서 마우스 오른쪽을 눌러 이미지 주소 복사를 누름. 이렇게 하면 http://ip주소:포트/WebGoat/uploads/cat.jpg 같이 이미지가 업로드되는 경로를 알 수 있음.
이 업로드 경로를 잠시 메모장에다 복붙


3. 서버에다 올릴 악의적인 파일을 하나 만듦

ksyUpload.jsp

<HTML>
<%
	java.io.File file = new java.io.File("guest_ksy.txt");
	file.createNewFile();
	out.println("file created" + request.getRealPath(file.getName()));
%>
<script> alert("ksyfile.jsp is running"); </script>
</HTML>

 

서버에 ‘guest_ksy.txt’의 파일을 생성하고 ‘ksyfile.jsp is running’의 메시지 상자를 띄우는 파일임

 


4. 방금 만든 파일을 서버에다 upload

조원의 서버에 guest_ksy.txt가 잘 업로드 된것을 확인함

 


5. http://ip주소:포트/WebGoat/uploads/ksyUpload.jsp로 url 치고 들어가서 파일 실행

 

 

Denial of Service (ZipBomb)

ZipBomb(압축폭탄) 이란

프로그램이나  시스템이 압축파일을 풀 때, 갑자기 용량이 커져서(폭발을 일으킴) 시스템을 종료시키는 악의적인 행위를 일으킬 수 있는 파일이다.
평소에는 평범한 zip파일 이지만 Anti-Virus 소프트웨어 검사를 하려고 시도하는 등 이 파일의 압축을 해제 하는 순간, 컴퓨터가 받아들일 수 없을 만큼의 용량이 되어 해당 프로그램이 종료시킨다.

 

실습

bombksj4.zip
0.04MB

zipbomb 파일을 다운받는다.

이 zip 파일은

이렇게 압축을 풀기 전에는 1메가도 안되는 파일이지만

 

압축을 푸는 순간 43MB가 되어버린다.

 

이 파일을 조원의 서버에다 업로드하는 실습이다.

 

1. 조원의 webgoat 서버로 들어가서 [Denial of Service] -> [ZipBomb]을 클릭

2. 그 다음 zipbomb를 업로드 한다.

조원의 서버

조원의 서버에 zipbomb 파일이 잘 업로드 된 것을 확인했다.

만약 이 서버가 최대 40mb의 저장공간을 사용하는데 이렇게 한 번의 upload로 40mb를 넘어버리는 저장 공간을 모두 사용해버리면 서버가 다운되어 서비스를 못할 것이다.

 

 

 

 

출처 : 정보보안(22-1학기)고수정교수 강의 내용 변형 및 요약

반응형
Comments