FILE UPLOAD SECURITY
파일 업로드
실시간 차단
업로드 파일의 확장자를 검증하고 웹셸 등 허용되지 않은 파일을 실시간으로 차단하는 방어 시스템입니다.
PUBLIC SECURITY PROJECTS
GitHub에 공개된 작업만 선별했습니다.
비공개 저장소는 포함하지 않습니다.
아이디어부터 구현과 검증까지
직접 진행한 보안 도구입니다.
FILE UPLOAD SECURITY
업로드 파일의 확장자를 검증하고 웹셸 등 허용되지 않은 파일을 실시간으로 차단하는 방어 시스템입니다.
WEB VULNERABILITY TOOL
반사형 XSS 취약점 점검 과정을 Python 스크립트로 자동화한 학습용 보안 도구입니다.
SECURITY AUTOMATION
브루트포스 실습 과정을 자동화하기 위해 구성한 Python 기반 학습용 도구 저장소입니다.
팀에서 맡은 역할과 결과물을
함께 완성한 프로젝트입니다.
AUTOMATED VULNERABILITY ASSESSMENT
입력 후보 탐색, AI 기반 도구 선택, 9종 로컬 스캐너 실행, 대시보드와 PDF 보고서 생성을 연결한 웹 취약점 자동 진단 도구입니다.
PENETRATION TESTING
가상환경에서 주요 웹 취약점 12건을 식별하고 공격 시나리오, 영향도와 조치 방안을 보고서로 정리한 팀 프로젝트입니다.
MALWARE RISK ANALYSIS
파일 업로드 정적 분석을 기반으로 악성코드 위험도를 추론하고 배치 평가하는 2단계 머신러닝 모듈입니다.
SECURITY STUDY
매주 진행한 CTF와 보안 문제의 분석 과정, 핵심 아이디어와 Write-up을 축적하는 팀 스터디 저장소입니다.
CAPTURE THE FLAG · WRITE-UPS
정답보다 풀이의 흐름을 남깁니다.
가설, 검증, 실패와 우회 과정을 함께 기록합니다.
WEB SECURITY NOTES
취약점 진단과 웹 모의해킹 기록을
두 개의 전문 카테고리로 정리했습니다.
01 / MIGRATED NOTE
점검 목적- PUT, DELETE, TRACE 등 불필요한 HTTP 메소드의 악용 여부 확인- 불필요한 HTTP 메소드(PUT, DELETE, TRACE 등) 요청을 제한하여 서버의 무단 접근 및 악의적인 행위(임의 파일 생성, 데이터 삭제 등)를 방지하기 위함…
READ NOTE ↗02 / MIGRATED NOTE
점검 목적- 유추 가능한 URL 또는 설계상의 오류로 인해 관리자 페이지 및 메뉴에 접근 가능 여부 점검- 관리자 페이지의 URL을 추측하기 어렵게 설정하고, 웹 사이트 설계 오류를 수정하여 비인가자의 관리자 메뉴 접근을 방지하기 위함 판단 기준양호 : 유추하기…
READ NOTE ↗03 / MIGRATED NOTE
점검 목적- 쿠키를 사용하는 경우, 안전한 알고리즘으로 암호화하여 공격자가 쿠키 값 변조를 통해 다른 사용자로 위장하거나 권한을 변경하는 것을 방지하기 위함- 쿠키 변조를 통한 임의의 타 사용자 권한 탈취 여부 점검 참고※ 쿠키(Cookie): 서버가 사용자의 웹…
READ NOTE ↗04 / MIGRATED NOTE
점검 목적- 서버와 클라이언트 간 통신 시 데이터의 암호화 여부 점검- 서버와 클라이언트 간 통신 시 데이터의 암호화 전송 미흡으로 정보 유출의 위험을 방지하고자 함 참고※ Sniffing : 스니퍼(sniff: 냄새를 맡다, 코를 킁킁거리다)를 이용하여 네트워크…
READ NOTE ↗05 / MIGRATED NOTE
점검 목적- 사용자의 세션 ID를 적절히 관리하여 공격자가 불법적으로 접근하거나 비인가적인 세션 탈취를 차단하기 위함 참고※ 세션(Session): 일정 시간 동안 같은 사용자(브라우저)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시…
READ NOTE ↗06 / MIGRATED NOTE
점검 목적- 웹 사이트에서 허용된 경로 외 다른 경로의 파일 접근 및 다운로드 가능 여부 점검- 허용된 경로 외 다른 경로의 비인가된 접근을 방지하여, 공격자가 임의의 경로에 존재하는 파일을 열람하거나 다운로드하는 것을 차단하기 위함 참고 - 애플리케이션의 파라미…
READ NOTE ↗07 / MIGRATED NOTE
점검목적- 웹 애플리케이션 내 업로드 기능 이용 시 악성 파일의 업로드 및 실행 가능 여부 점검- 업로드되는 파일의 확장자에 대한 적절성을 검증하는 로직을 구현하여 악성 파일(Server Side Script, exe, dll, bat 등)의 업로드를 방지하고,…
READ NOTE ↗08 / MIGRATED NOTE
점검 목적- 서비스 제공에 필요한 사용자 입력 및 실행단계의 흐름에 대한 검증의 적절성 여부 점검- 서버 사이드에서 적절한 검증을 통해 비정상적인 입력 및 프로세스 흐름으로 허용되지 않은 웹 애플리케이션 내 발생할 수 있는 논리적 오류를 차단하기 위함 판단 기준…
READ NOTE ↗09 / MIGRATED NOTE
점검 목적- 비밀번호 복구 기능 사용 시, 단순 정보(이름, 사번, 아이디 등)만을 활용하거나 SMS나 이메일 인증 시 발급되는 임시 비밀번호가 동일하거나 유추 가능 여부 점검- 비밀번호 복구 로직을 유추하기 어렵게 구현하고, 인증된 사용자 메일이나 SMS에서만…
READ NOTE ↗10 / MIGRATED NOTE
점검 목적- 타 사용자의 권한을 탈취하여 민감한 데이터 접근 및 수정 가능 여부 점검- 사용자 검증 로직을 서버 사이드에서 구현하여 비인가자로부터 악의적인 접근을 차단하기 위함 참고- 웹 소스코드 참고 판단 기준 양호 : 중요 페이지에 사용자 검증 로직이 구현되어…
READ NOTE ↗11 / MIGRATED NOTE
점검 목적 - 중요 페이지 접근 시 추가 인증 절차 존재 여부 및 인증 로직 우회 여부 점검- 중요 페이지 접근 시 추가 인증 절차를 도입하고, 서버 사이드에서 인증 여부를 검증하여 불필요한 정보 노출 및 변조를 차단하기 위함 참고 - 웹 소스코드 점검판단 기준…
READ NOTE ↗12 / MIGRATED NOTE
점검 목적 - 입력값을 통해 외부에서 직접적인 접근이 제한된 내부 서버 자원에 접근하여 악의적인 요청을 처리하거나 중요 정보의 유출 여부 점검- 입력값 검증을 통해 내부 서버 자원에 대한 비인가 접근을 차단하여 중요 정보(개인정보, 금융 정보 등) 탈취, 데이터…
READ NOTE ↗13 / MIGRATED NOTE
점검 목적 - 사용자가 인증된 세션을 가진 상태에서 공격자가 의도한 위조 요청이 전송‧처리되지 않도록 하여 비정상적인 상태 변경을 방지하기 위함 - 공격자는 사용자가 로그인된 세션을 악용하여 인증정보 없이도 위조된 요청을 전송할 수 있음. 이로 인해 사용자의 의도…
READ NOTE ↗14 / MIGRATED NOTE
점검 목적 - 악성 스크립트가 다른 사용자의 브라우저에서 실행되는 취약점 존재 여부 점검- 사용자 입력값에 대한 검증을 실시하여, 사용자 세션 탈취, 악성 코드 삽입 등의 악의적인 스크립트 실행을 차단하기 위함 XSS이란? - 악의적인 스크립트를 웹 페이지에 삽입…
READ NOTE ↗15 / MIGRATED NOTE
점검 목적 - 내 중요 정보(개인정보, 금융 정보 등) 및 불필요한 정보(주석 내 디버깅 정보, 초기 샘플페이지, 백업 파일 등)의 노출 여부 점검 여기서 말하는 중요 정보란? - [ 고유식별정보(주민등록번호), 비밀번호(로그인 비밀번호, 계좌 비밀번호, 공인인증…
READ NOTE ↗16 / MIGRATED NOTE
점검 목적 - 사용자 정의 에러 페이지를 설정하여 기본 서버 에러 페이지 내 불필요한 정보(서버 버전 정보, 시스템 절대 경로, 스택 트레이스 등)의 제공을 차단하기 위함 보안 위협 - 에러 페이지 내 서버 및 응용 시스템의 상세한 정보를 포함한 경우, 시스템 구…
READ NOTE ↗17 / MIGRATED NOTE
점검 목적 - 디렉터리 인덱싱 취약점을 제거하여 특정 디렉터리 내 불필요한 파일 정보의 노출 및 비인가자가 민감한 파일에 대한 접근을 차단 디렉터리 인덱싱 취약점이란?- 특정 디렉터리의 초기 페이지(index.html, home.html, default.asp 등…
READ NOTE ↗18 / MIGRATED NOTE
점검 목적- 웹 애플리케이션 내 SQL문으로 해석될 수 있는 입력값 허용을 차단하고 운영 중인 데이터베이스에 대한 비인가된 접근 및 조작을 방지하여, 데이터 무결성과 보안성을 확보하기 위함 판단 기준- 양호 : 임의로 작성된 SQL 쿼리 입력에 대한 적절한 검증을…
READ NOTE ↗19 / MIGRATED NOTE
SSTI injection 이란?- 웹 애플리케이션에서 사용자 입력값이 템플릿 엔진(Template Engine)에 의해 적절한 검증 없이 처리될 때 발생하는 보안 취약점입니다. - 공격자가 이름 칸에 {{ 7 * 7 }} 같은 코드를 입력합니다. 서버가 이를 단…
READ NOTE ↗20 / MIGRATED NOTE
XXE injection이란?- 웹 애플리케이션이 XML 데이터를 처리할 때, 외부 엔티티(External Entity) 정의를 적절히 제한하지 않아 발생하는 취약점입니다.- 공격자는 이를 악용하여 서버 내부의 파일을 읽거나, 내부 네트워크의 다른 서버에 요청을…
READ NOTE ↗21 / MIGRATED NOTE
XPath injection 이란? - 공격자가 웹 애플리케이션의 입력창에 악의적인 XPath 쿼리를 주입하여, 백엔드의 XML 데이터베이스나 구조화된 데이터를 비정상적으로 조회하거나 조작하는 공격 기법입니다. SQL vs Xpath 차이 - SQL 인젝션이 관계…
READ NOTE ↗22 / MIGRATED NOTE
SSI injection이란?- 웹 애플리케이션이 사용자로부터 입력받은 데이터를 적절한 검증 없이 HTML 페이지에 포함할 때 발생하는 삽입 공격 취약점- 공격자가 HTML 코드 안에 SSI 지시어를 삽입하여 서버 측에서 임의의 코드를 실행하거나, 민감한 파일에…
READ NOTE ↗23 / MIGRATED NOTE
- 점검 방법 Step 1) 웹 애플리케이션 기능 내 전달되는 파라미터 값에 대하여 운영체제 명령어 삽입 후 실행 여부 확인 조치 방법 1. 웹 애플리케이션 설계 시 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현하고, 언어/프레임워크에서 제공하는 안전한…
READ NOTE ↗24 / MIGRATED NOTE
LDAP는 공격자가 웹 애플리케이션의 입력창에 악의적인 LDAP 구문을 삽입하여, 백엔드 LDAP 서버의 쿼리 로직을 조작하는 코드 인젝션 공격입니다.SQL 인젝션이 데이터베이스를 공격한다면, LDAP 인젝션은 사내 주소록, 권한 관리 시스템, 로그인 인증 서버…
READ NOTE ↗25 / MIGRATED NOTE
점검 내용 : 웹 애플리케이션 내 다양한 인젝션 공격(LDAP, 운영체제 명령 실행, SSI, XPATH, XML, SSTI 인젝션 등)에 대해 외부 입력값이 쿼리나 명령어로 삽입되어 비인가된 접근이나 코드 실행의 가능 유무 점검 점검 목적 : 비인가된 접근, 데…
READ NOTE ↗26 / MIGRATED NOTE
- HTTP보다 HTTPS로 암호화 기능 사용할 것 (특히 민감한 데이터)- 웹 스토리지 보호 대책 (해킹 쿠키에 HttpOnly 플래그 추가 할 것) XSS 공격이 발생되어도 민감한 데이터를 보호할 수 있음- 검증된 암호화 사용 (데이터들을 암호화하여 저장해야 함)
READ NOTE ↗27 / MIGRATED NOTE
평문으로 된 패스워드 노출 실습 - 과거에는 회원가입 된 DB 정보가 평문으로 저장되는 경우가 많았음 (지금은 암호화시킴) 실습 회원 가입 페이지를 간단하게 구현해 놓은 것 필자는 test라는 명령어를 입력해서 회원가입을 저장시킴밑에 저장된 문구가 출력 밑에 다운…
READ NOTE ↗28 / MIGRATED NOTE
웹 스토리지HTML5 이전에는 쿠키를 이용하여 데이터를 저장해야 했다. 하지만 쿠키에 데이터를 저장하면 두 가지 제약 사항이 생긴다. 1. 쿠키는 요청 메시지가 전달될 때 자동으로 전송되기 때문에 요청이 일어날 때마다 데이터가 전송되어 성능 저하가 발생됨2. 각…
READ NOTE ↗29 / MIGRATED NOTE
- 민감한 데이터 정보란?다음과 같다.각종 개인정보(주민등록번호, 카드 정보, 건강 정보, 종교, 정치 성향, 가족 구성원 등 사생활 관련 정보 포함)패스워드, 세션 ID, 세션 토큰 등과 같은 로그인에 사용되는 정보업무상 기밀 등 비공개를 관리되는 정보 데이터가…
READ NOTE ↗30 / MIGRATED NOTE
1. 필요한 파일 형식만 업로드하게 한다 (확장자와 파일의 내용을) 검사한다2. 파일을 사용자가 접근할 수 없는 경로에 저장한다.3. 파일이 업로드되는 디렉터리의 실행권한을 제거한다.4. 위에 1번과 같은 내용인데 (php 같은 확장자를 차단하거나 그 파일의 내용…
READ NOTE ↗31 / MIGRATED NOTE
파일업로드 취약점이란? - 파일을 올리는 기능에 적절한 보안 대책이 적용되지 않을 때 발생함Ex) 게시판에 파일을 업로드할 때, 프로필에 사진을 올릴 때 등 파일을 올릴 때 아무 파일이나 올리게 되면 웹쉘(webshell) 공격에 당할 수 있음 웹쉘이란?- web…
READ NOTE ↗32 / MIGRATED NOTE
1. 외부 사용자가 입력한 파일 이름을 인클루드에 사용하지 않는 것 (즉, 입력값 검증이 있어야 함)2. 화이트리스트 검증을 사용할 것 (인클루드에 사용할 파일의 이름 목록을 작성해 해당 파일만 허용하고 나머지 파일 이름은 모두 차단해야 함
READ NOTE ↗33 / MIGRATED NOTE
파일 인클루전이란?- 주로 PHP 애플리케이션을 대상으로 발생함 - include라는 함수를 이용해(다른 파일을 소스코드에 직접 인클루드 시킬 수 있는 기능)- 외부 사용자가 지정할 수 있는 경우 파일 인클루전 취약점 여부를 파악할 수 있음 RFI, LFI로 나뉨…
READ NOTE ↗34 / MIGRATED NOTE
CSRF 공격 대응은 2가지로 나뉜다 1. 요청메시지의 레퍼러(Referer) 헤더를 검사해 웹 메일이나 타 사이트에서 피싱을 당해 전송되는 요청을 실행하지 않는다. 레페러(Referer) - 이전 웹 페이지의 주소를 알려주는 헤더임 즉, 정상적인 요청인지 아닌지…
READ NOTE ↗35 / MIGRATED NOTE
- CSRF는 2008년 옥션 해킹으로 개인정보를 유출한 사례가 있는 취약점 중 하나이다. 공격 단계는 다음과 같음 (시나리오 기반)1. 사용자가 웹사이트에 정상적으로 접속하여 로그인한다.2. 사용자가 웹사이트에 로그인되어 있는 동안, 공격자가 이메일을 보내 악성…
READ NOTE ↗36 / MIGRATED NOTE
- 시큐어 코딩을 이용해서 보안을 강화하면 되는데 DVWA를 임파서블 레벨로 바꾸면 방명록에 들어가면 항상 탈취당하는 것이 탈취가 안 되는 것을 볼 수 있음 $message = htmlspecialchars($name); 코드에서 htmlspecialchars()…
READ NOTE ↗37 / MIGRATED NOTE
XSS란?- 공격자가 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후 웹 사용자의 웹 브라우저에서 해당 코드가 실행되게 만드는 공격임.- 클라이언트 쪽을 공격함- 세션쿠키를 탈취를 주목적으로 함- 다양한 형태의 코드로 공격이 가능함 대표적으로 두 가지 공격기…
READ NOTE ↗38 / MIGRATED NOTE
1. exec(), system()와 같은 함수를 사용 제한1-1. 써야 한다면 사용자가 입력한 명령어를 제한하도록 확실히 점검해야 함 2. 화이트리스트 방식으로 적절한 입력을 할 수 있도록 사용할 것
READ NOTE ↗39 / MIGRATED NOTE
- 커멘드 인젝션(command injection) 이란?웹 요청 메시지에 임의의 시스템 명령어를 삽입해 웹 서버에서 명령어를 실행하도록 하는 공격임 사용자가 입력한 값을 적절한 입력값 검증 없이 시스템 명령어의 일부분으로 전달하면 공격자는 이 값을 조작하여 임의…
READ NOTE ↗40 / MIGRATED NOTE
1. 입력값을 검증할 것 (화이트리스트 방식을 권고)2. 시큐어 코딩을 이용할 것 "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 위 코드는 SQL 쿼리문을 조작할 수 있기 때문에 SQL 인젝션…
READ NOTE ↗41 / MIGRATED NOTE
SQLmap 이란?- SQL 인젝션 공격을 하는 자동화 튤이다.- 파이썬으로 개발된 CLI 기반의 프로그램이다. -u : 필수 옵션으로 공격을 시도할 URL를 지정함--cookie : 로그인이 필요한 경우, 로그인하고 난 다음 발급된 세션 쿠키 값을 지정한다.--…
READ NOTE ↗42 / MIGRATED NOTE
실습 1을 입력했더니 " User ID exists in the database." 문구가 뜬다 해석하면 당신의 ID는 데이터베이스에 존재한다 "라는 문구가 뜬다 즉, (에러가 발생하지 않도록 처리하는 루틴이 구현되어 있음을 추측할 수 있다) 여기서 재밌는 점은…
READ NOTE ↗43 / MIGRATED NOTE
SQL 인젝션 이란? - 웹사이트의 회원정보 등 개인정보를 탈취하고자 오래전부터 지속적으로 사용된 공격임 사용된 예시로는- 2011년 소니에서 100만 명의 회원 정보와 350만 개의 디지털 쿠폰 등이 공격자에게 유출되었음.- 어니나머스가 WTO 사이트를 공격하여…
READ NOTE ↗44 / MIGRATED NOTE
- 세션 ID가 노출되면 공격자는 그 세션 ID를 이용하여 인증과정을 우회해서 다른 사용자가 웹 사이트에 접속할 수 있음URL로 세션 ID를 전달하면 노출되는 위험이 있음 - 대다수의 웹 서버는 웹 요청을 전달받으면 요청 URL를 로그 파일에 기록함 (아래와 같음…
READ NOTE ↗45 / MIGRATED NOTE
불필요한 정보 노출 삭제- 반드시 필요한 경우가 아니라면, 서버 헤더의 제공되는 정보를 삭제하여 전송할 것- 웹 방화벽과 같은 보안 장비를 이용하여 일괄적으로 헤더를 삭제하는 것이 가능- 불필요한 기본 설치 파일, 백업 파일, 텍스트 파일은 모두 실제 서버에서 운…
READ NOTE ↗46 / MIGRATED NOTE
구글과 네이버 같은 검색 엔진들은 대부분 웹 로봇을 이용하여 웹사이트의 정보를 수집하게 됨. 웹 로봇 역시 크롤러의 일종임 웹사이트 관리자는 robots.txt 파일을 웹사이트의 가장 상위 디렉터리에 위치시켜, 웹 로봇에게 해당 웹사이트의 정보 수집을 허용하거나…
READ NOTE ↗47 / MIGRATED NOTE
DirBuster- URL 목록 파일을 사용해 각 URL을 자동으로 입력해 보는 방식으로 웹 애플리케이션 구조를 파악함숨겨진 페이지를 찾을 수 있다.- 목록 파일을 사용해 정보를 찾는 기법을 브루트 포스 공격이라 칭함 주로 사용자의 패스워드를 찾는 기법임 DirB…
READ NOTE ↗48 / MIGRATED NOTE
디렉터리 인덱싱 취약점이란? = 디렉터리 리스닝- 웹 서버의 잘못된 설정으로 웹 서버디렉터리의 파일들이 노출되는 취약점이다.과거 국가정보원 8대 홈페이지 취약점으로 선정되었다. 디렉터리 목록을 출력해주는 기능 저번에 nikto 명령어로 찾아낸 디렉터리 인덱싱을 접…
READ NOTE ↗49 / MIGRATED NOTE
웹 취약점 스캐닝이란? - 자동화된 프로그램을 이용하여 웹사이트의 여러 가지 정보를 수집하고 이 정보를 바탕으로 어떤 취약점이 있는지 알아내는 과정이다. TIP- 웹 취약점 스캐너를 이용하면 많은 정보를 수집할 수 있음. 단 많은 트래픽을 유발하므로 반드시 담당자…
READ NOTE ↗50 / MIGRATED NOTE
모의해킹에서 대상을 지정하면 가장 처음에 수행하게 되는 것이 바로 정보 수집이다. 수집될 정보는 크게 두 가지로 분류한다 1. 웹 애플리케이션을 서비스하기 위한 호스트 환경( OS, Web server, Web Framework etc..) 2. 웹 애플리케이션…
READ NOTE ↗일치하는 기록이 없습니다.
ABOUT THIS LOG
이곳은 모의해킹과 취약점 진단 프로젝트를 중심으로 분석 과정, 재현 증거와 대응 방안을 정리하는 개인 정보보안 기술 블로그입니다.
모든 점검과 실습은 허가된 대상과 가상환경에서 수행하며, 발견 자체보다 근거 있는 판정과 개선까지 연결하는 것을 목표로 합니다.
github.com/W-Rookie ↗