728x90
Command Injection
- 외부 입력값을 통해 시스템 명령어가 악의적으로 실행되도록 유도하는 공격

DVWA Command Injection 페이지는 위 사진과 같이 IP Address를 입력하여 ping 명령어를 실행할 수 있는 기능이 구현되어 있었다.

8.8.8.8을 입력해보니 ping 명령어가 잘 실행된 걸 볼 수 있었다.
그 후 Command Injection 공격을 위해 &&를 사용하여 ping 명령어와 함께 ls 명령어를 입력해봤지만, 아무런 결과를 반환하지 않고 있었다.
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Set blacklist
$substitutions = array(
'&&' => '',
';' => '',
);
// Remove any of the characters in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
$html .= "<pre>{$cmd}</pre>";
}
?>
DVWA 깃허브에서 코드를 보면 사용자가 Submit 버튼을 눌렀는지 확인하고, 사용자가 입력한 ip를 가져오고 있다.
아까 입력했었던 &&와 ;라는 문자는 빈문자열로 치환되는 걸 알 수 있었다. ← 블랙리스트 방식
그리고 운영체제에 맞게 ping 명령어를 실행하고 있다.
이 코드에서는 &&와 ;만 필터링하고 있으므로, 다른 문자를 사용하여 Command Injection 해주었다.

| 연산자를 사용하여 앞 명령어(ping)의 실행결과에 상관없이 ls 명령어가 실행되도록 해주었다.
현재 디렉터리 목록이 출력되었고, Command Injection에 성공한 걸 볼 수 있었다.
728x90
'DVWA' 카테고리의 다른 글
| DVWA | Insecure CAPTCHA | medium (1) | 2024.11.20 |
|---|---|
| DVWA | File Upload | medium (0) | 2024.11.20 |
| DVWA | File Inclusion | medium (0) | 2024.11.20 |
| DVWA | CSRF | medium (2) | 2024.11.19 |
| DVWA | Brute Force | medium (0) | 2024.11.19 |