일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 미터프리터
- programmers
- meterpreter
- 라우터
- todo List
- 웹해킹
- 정보시스템
- Suninatas
- StringBuilder
- study
- 취약점진단
- SQL Injection
- algotithm
- leetcode
- SQLMap
- hackerrank
- 모드 설정
- HTML Injection
- stock price
- metasploit
- 써니나타스
- todo
- Router
- java
- 모의해킹
- CSRF
- 취약점
- Algorithm
- ToDoList
- wpscan
- Today
- Total
보안 / 개발 챌린저가 목표
모의해킹 실습 (3) 본문
▶ 파일 다운로드 취약점
- 절대경로 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 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
⑤ SQLGate for MSSQL을 이용하여 DB에 로그인.
☞ ID : sa / PW : kisec1234 / SQL Server : 10.10.0.153 / 데이터베이스 : oyesmall
☞ 학원에서 실습한 것이라 SQL Server 다를 수 있음!
❓ 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 형태를 입력해봄.
☞ 동작하지 않음. 그 이유는 서버 쪽에서 설정된 무언가에 의해 막히고 있다는 것. 이를 어떤 형태로 막고 있는지, 패턴을 알아내어 우회하여야함.
③ 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 |