ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DVWA - Command Injection ( Low )
    모의해킹/Groot - 스터디 2023. 6. 3. 00:16

    DVWA - Command Injection ( Low ) 입니다

     

     개요 

    이 포스팅에서는 DVWA(Damn Vulnerable Web Application)  -  Command Injection, Low 단계 실습을 진행하면서 공부했던 내용에 대한 내용을 정리해 보았고, 모두 본인이 소유한 가상머신에서 실습이 이루어졌습니다

    실습환경
    M1 MacBook Air
    16G RAM
    UTM - 가상머신
    Kali Linux 2023.1  - Apple Silicon (ARM64)

     

     

     목차 

    1. 취약점 설명 및 분석  -  소스코드 분석, Command Injection

    2. Command Injection 실습

    3. 대응방안

    4. Reverse Shell

     

     

     

     취약점 설명 및 분석 

     

     소스코드 분석 

    // 위치 : /var/www/html/dvwa/vulnerabilities/exec/source -> low.php
    	<?php
    
            if( isset( $_POST[ 'Submit' ]  ) ) {
    /*5*/       // 입력값 가져오기
                $target = $_REQUEST[ 'ip' ];
    
                // OS를 결정하고 ping 명령을 실행
                if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
    /*10*/          // 윈도우
                    $cmd = shell_exec( 'ping  ' . $target );
                }
                else {
                    // *nix ( ~~nix 인 운영체제 )
    /*15*/          $cmd = shell_exec( 'ping  -c 4 ' . $target );
                }
    
                // 마지막 사용자를 위한 피드백
                $html .= "<pre>{$cmd}</pre>";
    /*20*/  }
    
            ?>

    4 ~ 6
    사용자가 입력한 값이 있다면 입력값을 target 변수에 담아준다

    9 ~ 16
    운영체제에 따라 다른 명령어를 실행해야 해서 윈도우인 경우와 아닌 경우로 나뉜다

    19
    실행 결과를 화면에 출력한다

     

     

     Command Injection 

    DVWA - Command Injection ( Low )는 입력값이 ip 주소라면 ip 주소 이후에 입력된 모든 값을 target 변수로 가져온다

    그리고 입력된 값을 그대로 쉘 명령어로 실행시킨 후 실행 결과를 사용자의 화면에 그대로 보여준다

     

     

     

     Command Injection 실습 

     

     Command Injection 적용하기 

    입력창에 입력을 하면 입력한 값이 그대로 쉘로 옮겨져서 실행이 된다

    따라서 Command Injection 을 하기 위해선 1줄 명령어를 사용해야 하기에 1개의 줄에 여러 개의 명령어를 적을 수 있도록 해야 한다

    127.0.0.1; ls
    # localhost의 ip 주소; 현재경로의 목록
    # ip 주소 뒤에 ;(세미콜론)을 사용해 주어야 한다

     

    상위 폴더에 어떤 폴더들이 있는지 확인한다

     

    상위 폴더에서 brute 폴더를 선택해서 이동해 보았다

     

    위와 같은 방식으로 계속 이동하여 low.php 라는 소스코드를 화면에 출력하는 데 성공하였다

     

     

     

     대응방안 

    이 경우 ip 주소를 이용하는 경우이므로 ip주소의 형식 이외에 ls, cat 과 같은 문자가 포함되어 있다면 제거해주어야 한다

    입력의 첫 시작이 문자라면 정상적으로 작동하지 않음을 이용하여 ip의 최대 자리수인 15자리로 자리수를 제한하는 방법도 있지만 127.0.0.1 같은 경우 ip 의 주소가 짧기에 효율적이지 않다

     

     

     

     Reverse Shell 

    Reverse Shell 을 실행시키기 위하여 여러 가지 시도를 해 보았고 local환경에서 kali linux로 접속을 하여 성공하였다

     

     

     

     문제풀이 

    https://ruang0124.tistory.com/206

     

     참고자료 

    https://youtu.be/HMYqJuo2FEo  -  Reverse Shell

    728x90
Designed by Tistory.