모의해킹/Groot - 스터디

DVWA - Command Injection ( Low )

잉카콜라 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