|
커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
|
|
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
truefeel 카페 관리자
가입: 2003년 7월 24일 올린 글: 1277 위치: 대한민국
|
올려짐: 2005.11.02 수, 9:57 pm 주제: php 취약점 (6가지) |
|
|
php 4.4.1 업그레이드를 해봤는데, 특정 부분이 제대로 실행안되는 걸로 보여 다시 4.4.0으로 다운그레이드를 했습니다.
어느 부분의 문제인지는 php 스트립트 파일을 살펴봐야할 듯.
혹시 업하시는 분은 꼼꼼히 테스트 해보세요.
phpinfo의 XSS 취약점은 아주 예전부터 있었는데, 지금도 그런 문제가 있나보네요.
-------------------------------------------------------------------------
출처 : 안랩코코넛(http://www.coconut.co.kr/) 보안 취약점 권고문 메일
※ 메일로 받은 건 pdf 파일이어서 다르곳에서 text를 찾아 올렸습니다.
| 인용: |
㈜안랩코코넛
보안취약점 권고문
2005.11.1
권고문번호
CCN-VR-2005-019
제목
PHP의 다양한 취약점
최초작성일
2005.11.1
출처
The PHP Group
OS
모든운영체제
응용프로그램(버전)
PHP 4.0.x
PHP 4.1.x
PHP 4.2.x
PHP 4.3.x
PHP 4.4.x
PHP 5.0.x
취약성 분류
구현 오류
입력값 검증 오류
Cross-Site Script
Buffer Overflow
서비스거부등
원격공격가능여부
가능
Exploit 존재여부
없음
자동화된공격도구존재여부
없음
보안문제개요
PHP의 다양한 취약점들이 발견되었습니다.
공격자는 발견된 취약점을 악용하여 보안설정우회, XSS (Cross-Site Scripting), 서비스거부, 인가 받지 않은 시스템접속과 같은 공격을 수행할 수 있습니다.
취약성 상세설명
1) POST 매개변수처리함수오류에의한GLOBAL 변수변경취약점
"Multipart/form-data" POST 방식으로 파일업로드 기능 구현시, 클라이언트로부터 전달된 변수값을 처리하는 extract(), import_request_varibales() 함수구현상의 오류로 원격의 공격자가 GLOBAL 환경변수값을 변경할 수 있는 취약점이 존재합니다. PHP 환경을 정의하는 php.ini 파일내에서 매개변수 처리순서를 지정하는 variables_order 지시자값은 기본적으로 'EGPCS'(Environment, GET, POST, Cookie, Server)로 설정되어 있으며, 이러한 경우 해당 취약점을 이용한 공격에 취약할 수 있습니다.
2) PHP parse_str() 함수 오류에 의한 register_globals 활성화취약점
주어진 문자열을 URL을 통한 질의문자열(Query String)처럼 처리하는 parse_str() 함수의 오류로 php.ini 파일내에서 환경변수/매개변수들을 전역변수로 등록할지 설정하는register_globals 지시자를 'on'으로 활성화할 수 있습니다. (PHP 4.2.0 부터는 php.ini 파일내 register_global 지시자의 기본값은 off 임)
3) phpinfo()함수의Cross-Site Scripting 취약점
PHP의 다양한 정보를 출력해주는 phpinfo() 함수에 입력값검증오류에 의한 Cross-Site Scripting 취약점이 존재합니다.
공격자가 취약한 phpinfo() 함수를 이용하여 웹사이트를 구축한경우, 해당 웹사이트에 방문한 사용자의 웹브라우저에서 악의적인 스크립트를 실행하는 Cross-Site Scripting 공격이 가능합니다.
4) PCRE 라이브러리Buffer Overflow 취약점
Perl 언어와의정규표현식(regular expression) 호환성을제공하는PCRE (Perl Compatible Regular Expression) 라이브러리에Buffer Overflow 취약점이존재합니다. 공격자는해당취약점을악용하여조작된정규표현식을처리토록하므로서대상시스템에서임의의명령어를실행할수있습니다.
5) ext/curl, ext/gd 확장모듈오류에의한보안설정우회취약점
PHP 확장모듈 중 이기종간의 통신을 지원하는 curl(Client URL Library) 모듈과 다양한 이미지처리를 지원하는 gd(Graphic Design) 모듈의 구현상의 오류로 원격의 공격자가 허가되지 않은 파일에 접근할 수 있는 취약점이 존재합니다.
공격자는 해당 취약점을 악용하여 php.ini 파일 설정 중 php 스크립트 소유권과 해당 php 스크립트가 참조하는 파일의 소유권을 비교하는 safe_mode 지시자설정과 php 스크립트가 참조할 수 있는 파일의 디렉토리 위치를 제한하는 open_basedir 등의 지시자 설정 값과 관계없이 임의의 파일에 접근할 수 있습니다.
6) Virtual() 함수오류에 의한 보안설정 우회 취약점
Apache2 에서 실행가능한 스크립트를 include 하는 virtual() 함수의 구현상의 오류로인해 safe_mode, open_basedir 등과 같은 보안설정을 우회하여 임의의 파일에 접근할 수 있는 취약점이 존재합니다.
보안문제해결방안
1) 벤더에서제공하는패치적용
http://www.php.net/downloads.php
참조사이트
1) PHP 4.4.1. Release Announcement
http://www.php.net/release_4_4_1.php
2) PHP Security Update Fixes Multiple Restriction Bypass Vulnerabilities
http://www.frsirt.com/english/advisories/2005/2254
|
* 관련 자료
- PHP PHPInfo Cross-Site Scripting Vulnerability
http://www.securityfocus.com/bid/7805/info |
|
| 위로 |
|
 |
truefeel 카페 관리자
가입: 2003년 7월 24일 올린 글: 1277 위치: 대한민국
|
올려짐: 2005.11.03 목, 1:31 pm 주제: Re: php 취약점 (php 4.4.1에서 base64_decoding함수의 호환성) |
|
|
| truefeel 씀: | php 4.4.1 업그레이드를 해봤는데, 특정 부분이 제대로 실행안되는 걸로 보여 다시 4.4.0으로 다운그레이드를 했습니다.
어느 부분의 문제인지는 php 스트립트 파일을 살펴봐야할 듯.
혹시 업하시는 분은 꼼꼼히 테스트 해보세요.
|
4.4.1에서 base64_decode() 함수사용할 때 공백(" ")문자가 포함된 경우 이전 버전과 다른 결과가 나옵니다.
php 4.4.0과 4.4.1의 소스를 살펴보니
- 4.4.1은 공백문자를 무시하고 decoding합니다.
- 4.4.0이전은 공백을 +로 변환하여 decoding합니다.
base64 encoding은 a-z, A-Z, 0-9, +, / 등 64개의 문자와 padding 문자인 = 만 사용합니다.
여기서 '+'의 기호가 포스팅된 후에는 ' '으로 바뀔 수 있으니 다음과 같은 경우에는 4.4.1 사용시 주의해서 사용하기 바랍니다.
1) base64_encode()로 인코딩된 결과가 저장된 쿠키를 php에서 decoding할 경우
2) base64_encode()로 인코딩된 것을 웹에서 Posting하여 decoding할 경우
(포스팅하면 + 가 ' '으로 변경되므로)
3) 임의로 만든 문자열에 공백이 포함된 문자열을 decoding할 경우
위의 경우에는 4.4.0이전 버전과 decoding 호환성을 위해서
base64_decode() 함수 호출 전에 공백을 + 로 replace 할 필요가 있습니다.
다음 소스를 4.4.1과 그 이전 버전에서 테스트해보면 확인할 수 있습니다.
| 코드: |
$szOrig = "coffeenix 커피닉스 .....";
$szEnc = base64_encode($szOrig);
$szDec = base64_decode($szEnc);
$szDecSpace = base64_decode("Y29mZmVlbml4IMS/x8e00L26IC 4uLi4u"); // 중간에 공백문자있음
echo "Orig = $szOrig<br>Enc = $szEnc<br>Dec = $szDec<br>변형된 문자를 Dec = $szDecSpace<br>";
|
|
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 있습니다 답글을 올릴 수 있습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB © 2001, 2005 phpBB Group
|