jyamethyst21 님의 블로그

SQL INJECTION, FILE DOWNLOAD 취약점 본문

보안 & IT 지식 🌺

SQL INJECTION, FILE DOWNLOAD 취약점

jyamethyst21 2026. 4. 24. 20:12

1. SQL Injection

1. SQL Injection 정의

SQL Injection은 사용자 입력값이 적절히 검증되지 않은 상태로 SQL 쿼리에 포함될 때 발생하는 공격 기법이다.
공격자는 입력값에 SQL 구문을 삽입하여 데이터 조회, 인증 우회, 데이터 변조 등을 수행할 수 있다.

2. 취약한 구조

SELECT * FROM board WHERE date = '사용자입력값'
 

상기 쿼리는 사용자 입력이 그대로 쿼리에 포함된다.

이 구조에서는 입력값에 SQL 문법을 삽입하면 쿼리 자체를 변경할 수 있다.

3. Injection 가능 여부 확인

이런 경우에는 먼저 쿼리가 조작 가능한지 확인하는 단계가 필요하다.

접근 방식

항상 참이 되는 조건을 삽입한다.
: ' AND 1=1 --
또는 항상 거짓 조건을 삽입한다.
: ' AND 1=2 --

판단 기준

  • 결과가 동일 → 쿼리 조작 가능
  • 결과가 달라짐 → 조건 반영됨

4. Blind SQL Injection (정보 추출)

Bind SQL Injection은 참/거짓 결과만을 이용하여 정보를 추론하는 방식을 사용한다.

4-1. 데이터 길이 확인

우선 특정 데이터를 검색하기 위해서는 특정 데이터의 길이를 알아야 블라인드 SQL Injection을 사용할 수 있다.

Oracle 기준 LENGTH 함수를 이용하여 데이터 길이를 확인할 수 있다.

AND  LENGTH(데이터) = 4

접근 방식

  • 숫자를 1부터 증가시키며 반복, 참이 되는 값이 실제 길이

4-2. 문자 단위 추출

특정 위치의 문자를 하나씩 확인하는 방법은 다음과 같다.

하기 쿼리는 첫번째 글자를 아스키 코드 기준 65 즉, 'A'로 검색하고자 할 때 사용한다.

AND ASCII(SUBSTR(데이터,1, 1)) = 65

사용 함수

  • SUBSTR() → 특정 위치 문자 추출
  • ASCII() → 문자 값을 숫자로 변환

접근 방식

  • 위치를 1부터 증가
  • ASCII 값을 하나씩 비교
  • 참이 되는 값이 해당 문자

4-3. 전체 데이터 복원

이런 경우에는 위 과정을 반복하여 문자열 전체를 복원한다.

1번째 문자 확인
2번째 문자 확인
...
N번째 문자 확인
 

이 방식으로 DB명, 테이블명, 컬럼명 등을 획득할 수 있다.

5. WAF(Web Application Firewall) 우회

예를 들어 웹 방화벽을 우회하여, SQL 인젝션을 시도한다고 가정하자.

5-1. 차단 특징

일반적으로 다음과 같은 키워드가 필터링된다. (WAF 특징 확인 필요)

  • SELECT
  • UNION
  • OR
  • INSERT / UPDATE / DELETE

5-2. 우회 방법

이런 경우에는 쿼리를 변형하여 필터를 우회한다.

1) 주석 활용

SEL/**/ECT
또는
SELECT/* */table_name
→ 키워드를 분리하여 필터 우회

2) 공백 우회

SELECT/**/FROM
→ 공백 대신 주석 사용

3) HTTP Parameter Pollution (HPP)

HTTP Parameter Pollution은 같은 이름의 파라미터를 요청에 여러 번 넣어서 서버와 보안 장비가 서로 다르게 해석하도록 만드는 기법이다.

보통의 요청:
/search?keyword=test

HPP:
/search?keyword=test&keyword=admin

원리

WAF는 첫 번째 keyword만 검사
서버는 두 번째 keyword를 사용

또는

WAF는 각각 따로 검사
서버는 두 값을 합쳐서 처리

6. SQL Injection 핵심 정리

  • 입력값 조작
    → 쿼리 구조 변경
    → 참/거짓 기반 정보 추출
    → DB 정보 획득
  • Blind 방식은 출력 없이도 공격 가능
  • WAF는 완벽하지 않으며 우회 가능
  • 반복적인 조건 검증이 핵심

2. File Download 취약점 (Path Traversal)

1. 취약점 정의

File Download 취약점은 서버에서 파일을 다운로드할 때, 사용자 입력값을 검증하지 않고 파일 경로로 사용하는 경우 발생한다.

이 취약점은 Path Traversal 공격으로 이어질 수 있다.

2. 취약한 구조

아래와 같이 파일을 다운받는 쿼리라면, 파일명 부분에 입력값 검증이 없을 때 임의 파일 접근이 가능해진다.

download.jsp?file=파일명

 

3. 공격 방식 (Path Traversal)

이런 경우에는 상위 디렉터리로 이동하는 문자열을 삽입한다.

../

또한, 시스템 내부 파일을 직접 요청할 수도 있다.

../../../../etc/passwd

4. 추가 정보 수집

이런 경우에는 시스템 내부 파일을 활용하여 추가 정보를 확보한다.

주요 대상 파일

  • /etc/passwd → 사용자 계정 정보
  • /etc/shadow → 암호 정보
  • .bash_history → 사용자가 실행한 명령 기록

5. 서버 설정 파일 분석

이런 경우에는 서버 설정 파일을 확인하여 내부 구조를 파악할 수도 있다.

주요 대상

  • server.xml
  • context.xml

6. DB 정보 확보

5번 과정에서 서버 설정 파일을 확인하게 되면 아래와 같은 DB 정보를 활용할 수도 있다.

DB IP
PORT
계정(ID)
비밀번호(PW)
DB 이름
 

이 정보는 데이터베이스 접근에 직접 활용될 수 있다.

7. File Download 취약점 핵심 정리

파일 다운로드 기능 존재
→ 경로 검증 없음
→ ../ 삽입
→ 시스템 파일 접근
→ 서버 설정 파일 확보
→ DB 정보 획득
→ DB 접근
 

'보안 & IT 지식 🌺' 카테고리의 다른 글

E2E 암호화, JWT  (0) 2026.04.28
FILE UPLOAD 취약점  (0) 2026.04.27
SSRF 취약점 (Server-Side Request Forgery)  (0) 2026.04.23
CSRF, 불충분한 세션 관리 취약점  (0) 2026.04.22
가상 쇼핑몰 사이트 모의해킹  (0) 2026.04.21