Dreamhack - Command Injection Advanced

양병수·2022년 10월 19일
0

individual

목록 보기
4/4
post-custom-banner

드림핵 사이트의 연습 문제를 풀어보았다. (https://dreamhack.io/wargame/challenges/413/)

문제 풀이

  • 메인 화면

Index.php

  • 소스 코드
<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' 로 시작하는 파라미터 값을 escapeshellcmd 함수로 필터링 한다.
    • 이후 /cache/.md5(url) 경로에 저장한다.
  • 취약점 분석

    • escapeshellcmd 함수는 '-' , '/' 등의 문자들을 필터링 하지 못하는 점을 이용한다.
    • curl 명령어의 -o 옵션을 이용해 웹쉘을 파일을 업로드하는 경로에 저장하게 한뒤 실행시켜 FLAG 를 획득한다.

노트

  • 영어 단어:

    fingerprinting: .../ 모의해킹시 정보 수집 단계를 가리키는 말.
    procedural: 절차상의
    oriented: ...지향적인, 우선인, 중요시하는
    paradigm: 패러다임, 범례, 모범
    whereas: (두 가지를 비교할 때) ...한 반면에
    snippet: (작은) 정보, 소식, ...
    enhance: (가치 등을) 향상시키다, 높이다
    interfere: 간섭, 개입 하다
    prerequisite: 전제 조건
    versatility: 다양성, 다재다능함
    compatible: 호환이 되는, ..
    assumption: 추정, 가정
    as opposed to: ...와 대조적으로, ...이 아니라
    featured: ...를 중심으로 한, 주연의, ...
    reliable: 믿을 수 있는, 믿을 만한
    get a foot in the door: 첫발을 들여놓다, 기회를 얻다
    adhere: 고집하다, 부착되다, ...
    KISS(Keep It Simple and Short) principle: 상품 및 광고는 가능한 단순해야 한다는 원칙
    circumvent: (법, 규제 등을) 우회하다, 피하다
    prepend: 접두어를 붙이다, 표현이나 구문을 덧붙이다
    assessment: 평가
    warranty: 품질 보증서
    merchantability: 상품성, 매매할 수 있음

post-custom-banner

0개의 댓글