jyamethyst21 님의 블로그
SQL INJECTION, FILE DOWNLOAD 취약점 본문
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 |
