[웹 해킹 #5] OWASP Top 10 2025로 다시 보는 웹 취약점 - dirb, RFI는 왜 한물갔나

무슨 글일까요?
지금까지(#1~#4) 정보 수집, 파일 업로드, 리버스 쉘, 파일 삽입을 한 흐름으로 따라왔습니다. 그런데 시리즈를 쓰면서 계속 마음에 걸린 게 있습니다.
그 내용 상당수가 2010년대 초반 교과서 기준이라는 점입니다. 기법의 원리를 이해하는 데는 그 고전들이 더없이 좋습니다.
하지만 그대로 2026년 실전에 들고 나가면 "분명히 책에선 됐는데 왜 안 되지?"를 연발하게 됩니다.
RFI 튜토리얼을 따라 했는데 안 되고, dirb 를 돌렸는데 한참 걸리고, 정작 요즘 가장 많이 터지는 취약점은 다루지도 않았으니까요.
그래서 마지막 글은 새로운 기법을 또 나열하기보다, 앞 글들에서 배운 것을 현재 좌표에 다시 찍어 보는 데 쓰려고 합니다.
무엇이 살아남았고, 무엇이 죽었으며, 지금 진짜 공부해야 할 건 무엇일까요?
정보 수집 도구의 세대교체
이전글(#1)에서 amass, knockpy, dirb 를 다뤘습니다. amass 는 OWASP가 관리하며 여전히 강력하지만, 요즘 현장의 표준 워크플로우는 조금 달라졌습니다.
서브도메인: subfinder가 1순위가 된 이유
subfinder 가 속도와 간결함으로 사실상 1순위 도구가 되었습니다.
subfinder 는 빠르고 가벼우며 오탐(false positive)을 최소화하도록 설계된 서브도메인 탐색 도구입니다. 다만 여기서 중요한 건 도구 하나의 우열이 아닙니다.
숙련된 실무자들은 단일 도구를 고집하지 않고, 방법론을 봅니다. 폭넓은 발견에는 Amass와 Subfinder를, 심층 OSINT에는 Shodan과 crt.sh를,
검증에는 httpx를 쓰는 식으로 도구를 조합합니다. '최고의 도구'란 없고, 각 단계에 맞는 도구가 있을 뿐이라는 거죠.
# subfinder 설치
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# 기본 수집
subfinder -d example.com
# 핵심: subfinder → httpx 파이프라인으로 '살아있는' 서비스만 추리기
echo "example.com" | subfinder -silent | httpx -silent가장 큰 변화는 도구 자체가 아니라 파이프라인 자동화입니다. subfinder | httpx | nuclei 처럼 수집 → 검증 → 취약점 스캔을 한 줄로 엮는 것이 현대적 방식입니다.
이전글(#1)에서 도구를 하나씩 따로 돌렸다면, 지금은 이들을 물 흐르듯 연결합니다.
디렉터리 탐색: dirb는 사실상 은퇴
이전글(#1)에서 쓴 dirb 는 느립니다. 지금은 아래 셋이 표준입니다.
# ffuf - 가장 빠르고 유연 (멀티스레드)
ffuf -w wordlist.txt -u https://example.com/FUZZ -mc 200,301,302,403
# gobuster - DNS/디렉터리/vhost 모드 지원
gobuster dir -u https://example.com -w wordlist.txt -t 50
# feroxbuster - 재귀 탐색에 강함 (Rust 기반)
feroxbuster -u https://example.com -w wordlist.txt구세대 (이전글#1에서 다룸) | 현세대 (2026) | 핵심 차이 |
|---|---|---|
dirb | ffuf, feroxbuster | 동시 요청(멀티스레드)으로 훨씬 빠름 |
도구 하나씩 수동 실행 | subfinder | httpx | nuclei | 파이프라인 자동화 |
단순 brute | Shodan/Censys API 연동 | 패시브 데이터 적극 활용 |
RFI는 사망, LFI는 진화
이전글(#4)에서 예고했듯, 원격 파일 삽입(RFI)은 거의 박물관 행입니다. allow_url_include 가 PHP 5.2부터 기본 Off 라,
의도적으로 켜 둔 레거시 서버가 아니면 통하지 않습니다. 인터넷의 RFI 튜토리얼 대부분이 실습하면 안 되는 이유죠.
반면 로컬 파일 삽입(LFI)은 살아 있을 뿐 아니라 진화했습니다. 현대적 LFI는 /etc/passwd 를 읽는 데 그치지 않습니다.
이전글(#4)에서 본 php://filter 를 정교하게 연결한 PHP filter chain 기법은, RFI 없이 LFI만으로 원격 코드 실행(RCE)까지 도달합니다.
CTF에서 단골로 나오는 이유이기도 합니다. 핵심은 무게중심이 "파일을 읽는다"에서 "그걸로 코드 실행까지 잇는다" 로 옮겨갔다는 점입니다.
지금 진짜 중요한 것 - OWASP Top 10 2025
여기가 이번 글의 핵심입니다. 앞 글들이 다룬 "파일 업로드 → 웹쉘" 같은 고전 시나리오도 여전히 중요하지만,
신입 입장에서 공부 우선순위를 잡으려면 현재의 위협 지도를 봐야 합니다. 그 표준 지도가 OWASP Top 10입니다.
OWASP 재단은 2025년 11월 워싱턴 D.C.에서 열린 Global AppSec 컨퍼런스에서 8번째 판인 'Top 10 보안 위험' 목록을 발표했고,
최종 버전은 2026년 1월에 정식 릴리스되었습니다. 17만 5천 건이 넘는 CVE 기록을 분석하고 248개의 CWE를 10개 카테고리에 매핑했으며,
전 세계 보안 실무자 설문을 함께 반영해 현대적 공격 벡터를 담아낸 결과입니다. 무엇이 바뀌었는지 짚어 보겠습니다.
변화 1 — SSRF가 별도 항목에서 '접근 제어'로 흡수
2021년판에서 독립 항목이던 SSRF가, 접근 제어 위반에 미치는 상당한 영향을 반영해 깨진 접근 제어(Broken Access Control) 항목에 병합되었습니다.
이 변화가 의미하는 바가 깊습니다. 현대 애플리케이션에서 서비스 수준 접근과 사용자 수준 접근의 경계가 흐려지고 있다는 신호인데,
이는 마이크로서비스·클라우드·API의 광범위한 사용에서 비롯된 직접적 결과입니다.
예전엔 "사용자 권한"과 "내부 서비스 간 통신"이 별개 문제였지만, 이제 둘이 한데 얽혀 버린 거죠.
변화 2 — 공급망과 설정 오류가 상위권으로
보안 설정 오류(Security Misconfiguration) 와 소프트웨어 공급망 실패(Software Supply Chain Failures) 가 모두 상위 3위로 올라왔습니다.
이는 이 공격 벡터들의 증가하는 보편성을 반영합니다.
클라우드·컨테이너·IaC(코드형 인프라) 시대에는 코드 자체보다 설정 한 줄, 의존성 하나가 거대한 노출을 부르기 때문입니다.
공개된 S3 버킷 하나, 디폴트 비밀번호 하나가 전체를 무너뜨립니다.
완전히 새로 추가된 항목은 예외 상황의 부적절한 처리(Mishandling of Exceptional Conditions) 하나뿐입니다.
신입이 잡아야 할 공부 우선순위
순위 | 카테고리 | 왜 중요한가 |
|---|---|---|
1 | Broken Access Control (+SSRF) | 거의 모든 테스트 대상 앱에 영향, 가장 많은 CWE가 매핑됨 |
2 | Security Misconfiguration | 클라우드·컨테이너 시대에 폭증 |
3 | Software Supply Chain Failures | 의존성·CI/CD 파이프라인 공격 |
- | Injection (SQLi, XSS 등) | 고전이지만 여전히 건재 |
SSRF가 왜 뜨는가, 그리고 CSRF는 왜 지는가
이왕 SSRF가 1위 카테고리에 들어왔으니 짚고 갑시다. SSRF는 서버가 공격자가 지정한 URL로 요청을 보내게 만드는 취약점입니다.
클라우드 환경에서는 내부 메타데이터 서버를 노려 인증 토큰을 탈취하는 식으로 악용됩니다.
방어 관점에서 보면 SSRF는 송신(egress) 필터링, URL 허용목록, 그리고 IMDSv2 같은 인프라 통제를 요구합니다.
이전글(#3)에서 본 리버스 쉘 방어(egress filtering)와 방어 원리가 맞닿는다는 점이 흥미롭습니다.
SSRF를 직접 실습하며 익히고 싶다면 PortSwigger가 클라우드 메타데이터 탈취까지 무료 랩으로 제공하니 이 글을 추천합니다. [PortSwigger — SSRF]
반대로, 한때 단골이던 CSRF는 영향력이 크게 줄었습니다. CWE 매핑에는 여전히 등장하지만,
최신 브라우저가 쿠키에 SameSite=Lax 를 기본 적용해 교차 출처 POST 요청이 세션 자격증명을 실어 나르는 것을 차단하기 때문입니다.
현대의 CSRF 공격은 명시적인 SameSite=None 설정이나 same-site 가젯 체인을 요구하게 되어, 2020년 이전과 비교하면 공격 표면이 상당히 좁아졌습니다.
"교과서에 크게 나왔지만 지금은 입지가 줄어든" 또 하나의 사례입니다.
한눈에 보는 '옛날 vs 지금' 총정리
정보수집: dirb → ffuf / feroxbuster
단일 도구 수동 실행 → subfinder | httpx | nuclei (파이프라인)
단순 brute → Shodan/Censys API + CT 로그 적극 활용
파일삽입: RFI → 사실상 사망 (allow_url_include 기본 Off)
단순 LFI → PHP filter chain으로 RCE까지
우선순위: 파일업로드/웹쉘 → 여전히 유효하되, BAC·SSRF·공급망이 상위
CSRF → SameSite 기본값으로 영향력 축소
SSRF (독립 항목) → 접근 제어로 흡수 (경계 붕괴의 신호)
방어초점: 입력값 검증 → + egress 필터링, 화이트리스트,
IMDSv2, 공급망(의존성·CI/CD) 점검시리즈를 마치며
이 5부작은 "공격은 어떻게 이루어지는가"를 정보 수집부터 코드 실행까지 한 흐름으로 따라가 보고, 마지막으로 그 지식을 2026년 현재 좌표에 다시 찍어 봤습니다.
기억할 한 가지는 이겁니다. 고전 기법은 원리를 이해하는 사다리이고, OWASP Top 10 2025는 지금 어디에 집중해야 하는지 알려 주는 나침반입니다. 둘 다 필요합니다. 원리 없이 최신 트렌드만 좇으면 깊이가 없고, 최신 동향 없이 옛 기법만 알면 실전에서 헛다리를 짚습니다. include() 한 줄이 왜 위험한지 이해한 사람만이 그 원리가 SSRF·공급망 같은 새 옷을 입었을 때도 알아볼 수 있습니다.
이 글이 한국어로 된 웹 해킹 입문 자료로서, "명령어만 외우는" 글들과는 조금 다른 결의 마중물이 되었으면 합니다. 다음 시리즈에서는 여기서 예고한 SSRF와 SQL Injection을 실습 환경에서 직접 파 보겠습니다.
이전 글 → [웹 해킹 #4] 파일 인클루전 취약점 (LFI / RFI)
읽어보면 좋을 추천 글
[OWASP Top 10:2025 (공식)] 이 글의 핵심 근거입니다. 10개 카테고리 각각의 설명, 매핑된 CWE, 방어 방법이 공식 문서로 정리되어 있습니다.
본문 요약만 보지 말고 1순위 카테고리(A01)부터 직접 읽어 보길 권합니다. (A01 페이지: https://owasp.org/Top10/2025/A01_2025-Broken_Access_Control/)
[ProjectDiscovery (subfinder / httpx / nuclei 공식)] 본문에서 다룬 현대적 파이프라인 도구들을 만든 곳입니다.
각 도구의 저장소에서 설치·옵션은 물론, 이들을 어떻게 조합해 자동화 워크플로우를 만드는지 예제를 볼 수 있습니다.
[OWASP — Server-Side Request Forgery Prevention Cheat Sheet] 2025년 들어 접근 제어로 흡수될 만큼 중요해진 SSRF의 방어 가이드입니다.
egress 필터링, URL 허용목록 등 본문에서 언급한 방어책의 구체적 구현 방법이 담겨 있습니다.
[PortSwigger — SSRF] 다음 시리즈에서 다룰 SSRF를 미리 실습 랩으로 익히고 싶다면 여기가 최고입니다.
무료 계정으로 클라우드 메타데이터 탈취 시나리오까지 직접 해 볼 수 있습니다.