BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
웹 취약점 진단(LFI&CI)
1. 개요
웹 애플리케이션에서 자주 큰 문제로 이어지는 지점은 입력값 검증 부재(Lack of Input Validation)다. 사용자가 넣은 값을 서버가 충분히 확인하지 않고 신뢰할 때 이런 문제가 생긴다.
2. 로컬 파일 인클루션(Local File Inclusion, LFI)
2.1 개념
LFI는 서버의 페이지 포함(Include) 기능을 악용해, 내부 파일(/etc/passwd 등)을 읽게 만드는 취약점이다.
- 원리:
include($page)같은 코드에서$page경로를 제대로 통제하지 않을 때 발생한다.
2.2 진단 및 공격 기법
확인할 때는 보통 아래 기법을 먼저 살핀다.
- 경로 탐색(Path Traversal)
상위 디렉토리로 이동하는../문자를 이용하는 방식이다.
예시:page=../../../../etc/passwd - 널 바이트(Null Byte) 우회
일부 구형 PHP 환경에서는 뒤에 붙는 확장자(.php) 처리를 흐트러뜨리기 위해%00같은 입력이 언급되곤 한다. 최신 버전에서는 대부분 패치됐다.
2.3 자동화 도구
lfimap은 LFI 점검에 자주 언급되는 파이썬 기반 도구다.
python3 lfimap.py -u "http://target/vulnerable.php?page=FUZZ" -a
다양한 래퍼(Wrapper)와 필터 우회 패턴을 자동으로 시도해 보는 용도로 알려져 있다.
3. 커맨드 인젝션(Command Injection)
3.1 개념
웹 애플리케이션이 시스템 함수(system(), exec())를 통해 운영체제 명령을 실행할 때, 사용자 입력이 그대로 섞여 의도하지 않은 명령까지 실행되는 취약점이다.
대표적으로 관리자 페이지의 "Ping Test" 같은 기능이 예시로 많이 나온다.
3.2 쉘 메타 문자(Shell Meta Characters)
리눅스와 윈도우 쉘에는 명령을 구분하거나 이어 붙일 때 쓰는 메타 문자가 있다.
;(세미콜론): 앞 명령이 끝난 뒤 다음 명령을 이어서 실행한다.&&(AND): 앞 명령이 성공했을 때만 다음 명령을 실행한다.|(Pipe): 앞 명령의 출력을 뒤 명령의 입력으로 넘긴다.$()또는`(Backtick): 명령 실행 결과를 문자열처럼 치환한다.
3.3 주의사항: URL 인코딩
HTTP에서는 &, ; 같은 문자가 파라미터 구분자처럼 특별한 의미를 가진다.
그래서 이런 문자를 넣어 확인할 때는 URL Encoding을 같이 고려해야 한다.
&->%26- Burp Suite에서는
Ctrl + U로 빠르게 인코딩할 수 있다.
3.4 진단 기법
진단은 수동과 자동화 보조를 함께 보는 편이 많다.
- 수동 진단: Repeater로 입력값과 응답 변화를 직접 비교해 본다.
- Intruder 활용: 다양한 메타 문자와 우회 패턴을 넣었을 때 응답 길이(Length)나 시간 차이(Time-based)가 달라지는지 비교한다.
4. 실무에서는?
실무에서는 이 두 취약점을 모두 우선순위 높게 본다.
- LFI는 단순 파일 열람으로 끝나지 않고 더 큰 문제로 이어질 여지가 있다.
- Command Injection은 서버 명령 실행과 직접 맞닿아 있어서 발견 즉시 치명적으로 평가되는 경우가 많다.
- 블랙리스트 필터링만으로 막는 방식은 한계가 뚜렷하다. 결국은 안전한 API 사용과 서버 측 검증이 근본 대책이다.

