[웹 해킹 & 시큐어 코딩] 08. 파일 업로드 취약점

2023. 12. 8. 03:00·📗 self-study/📗 inflearn

 

 

 

🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

 

위아래 1줄씩 띄우고 중요한 부분은 볼드 효과

 

 

 

 

📍 파일 업로드 취약점이란?

👉🏻 File Upload Vulnerability: 서버 사이드 스크립트에 적힌 코드가 비정상적인 파일을 업로드하여 사용자를 공격함

👉🏻 해당 공격을 당하게 되면 OS Command 공격처럼 서버에 명령어를 실행할 수 있게 됨

👉🏻 파일 업로드나 다운로드의 경우 웹 사이트에서 반드시 필요한 필수 기능에 속하기 때문에 많은 사용자가 해당 위험에 노출될 수 있음

👉🏻 방화벽이나 웹 쉘 솔루션을 통해 방어 가능

 

 

📍 공격 원리 분석

👉🏻 1) 파일 경로 + 파일 이름으로 이루어진 경로 파악

👉🏻 2) 파일 출력(File Output)

👉🏻 3) 웹 쉘 접근 및 실행을 하게 됨

 

 

 

📍 웹쉘이란 무엇인가?

👉🏻 Web(월드 와이드 웹) + Shell(사용자와 커널 간의 대화를 하기 위한 인터페이스)

👉🏻 즉, 웹 페이지상에서 원격지 서버의 시스템 명령어를 실행할 수 있는 도구이며 시스템 명령뿐 아니라 파일 업/다운로드, 조회 및 수정도 가능함

 

언어별 시스템 함수

언어 함수
PHP passthru, system, `(백 쿼터), excl, popen, escapeshellcmd, eval, shell_exec, assert ...
JSP Runtime.getRuntime().exec("").processBuilder("")
ASP CreateObject("wscript.shell").exec("cmd/c"&cmd), eval, Execute ...
ASPX WinExec(), ShellExecute() ...

 

 

 

📍 검증 로직 구현

👉🏻 확장자 검증

👉🏻 이미지 검증

👉🏻 파일 사이즈 검증

 

 

 

📍 확장자 검증 로직에 대한 이해

      // ____ 확장자로 확인하여 업로드 불가한 확장자를 등록해 놓음
webshell.jsp

 

방식 장점 단점 알맞은 기능
블랙 리스트 방식
: 허용하지 않은 확장자만 막음
다양한 파일 업로드 가능 다양한 우회 가능성 존재 다수 파일 업로드
(예: 자료실)
화이트 리스트 방식 (추천)
: 허용한 확장자만 업로드 가능
우회 가능성이 제한적 다양한 파일 업로드 불가능 특정 파일 업로드
(예: 이미지 업로드)

 

👉🏻 업로드(운동화.jsp) > 확장자 파싱 (.jsp) > 검증 (jsp가 업로드 가능한가?) > 통과/return

 

 

 

📍 대응 방안

👉🏻 파일명에 대한 검증

1) 확장자 검증

2) 서버 측에서 파일명 생성

 

crehacktive.png 라는 파일명이 있으면 > 시간-밀리세컨드나 랜덤 문자열로 서버에서 파일명 따로 생성하여 저장함!

위와 같이 진행하게 되면 사용자가 파일명 변조 불가능하여 아래 관점에 대해서 안전해짐

1) 보안적 관점

2) 예외상황 관점

 

👉🏻 올바른 업로드 경로(서브 사이드 스크립트가 실행되지 않는 경로) 설정

1) 웹 디렉터리 이외의 경로 - WEB-INF의 경우 서브 사이드 스크립트가 실행되지 않는 경로이므로 해당 경로로 설정하면 좋음

2) 스크립트 실행 권한 제거

...
String gubun = request.getParameter("gubun");

// \(역 슬래시) 문자를 /(슬래시) 문자로 치환
gubun = gubun.replace("\\", "/");

// gubun 변수에 대해 /, .. 문자 존재 시 경고창 출력 및 어플리케이션 종료
if(gubun.indexOf("/") != -1 || gubun.indexOf("..") != -1) {
	out.println("<script>alert('허용되지 않은 문자 존재함'); history.back(-1);</script>");
    return;
}

// 업로드 로직 진행
...

 

 

 

 

출처

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

https://www.inflearn.com/course/%EC%9B%B9%ED%95%B4%ED%82%B9-%EB%B3%B4%EC%95%88-%EC%8B%9C%ED%81%90%EC%96%B4%EC%BD%94%EB%94%A9

 

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 - 인프런 | 강의

정보보안 입문자와 웹 개발자 분들을 위한 웹 해킹 입문 강의! 본 강의를 시작으로 웹 해킹을 재미있게 시작해보세요!, 웹 개발자, 정보보안 입문자를 위한 웹 해킹 학습!언제, 어떤 위험 상황에

www.inflearn.com

 

 

저작자표시 비영리 변경금지 (새창열림)
'📗 self-study/📗 inflearn' 카테고리의 다른 글
  • [웹 해킹 & 시큐어 코딩] 10. URL 접근 제한 미흡 취약점
  • [웹 해킹 & 시큐어 코딩] 09. 파라미터 변조 취약점
  • [웹 해킹 & 시큐어 코딩] 07. 파일 다운로드 취약점
  • [웹 해킹 & 시큐어 코딩] 06. CSRF
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[웹 해킹 & 시큐어 코딩] 08. 파일 업로드 취약점
상단으로

티스토리툴바