'LFI'에 해당되는 글 2건

  1. 2013.05.14 익스프레스엔진(XE) 보안 업데이트
  2. 2009.12.08 안전한 PHP 프로그래밍 (첨부파일 다운 & include 함수)
2013.05.14 17:56

익스프레스엔진(XE) 보안 업데이트

□ 개요

  • 국내 PHP기반의 CMS인 익스프레스엔진(XE)에서 웹쉘을 실행시킬 수 있는 LFI 취약점이 발견됨
  • 취약한 버전을 사용하고 있을 경우, 홈페이지 해킹에 의해 홈페이지 변조, 데이터베이스 정보 유출 등의 피해를 입을 수 있으므로 웹 관리자의 적극적인 조치 필요


□ 해당시스템

  • 영향받는 소프트웨어
    - 익스프레스 엔진 1.7.3.2 및 이전 버전


□ 해결방안

  • 기존 익스프레스 엔진 사용자는 업데이트가 적용된 상위 버전으로 업그레이드 [1]
    ※ 패치 작업 이전에 원본 파일 및 DB 백업 필요
  • 익스프레스 엔진을 새로 설치하는 이용자
    - 반드시 보안패치가 적용된 최신버전(1.7.3.3 이상)을 설치


□ 용어 정리

  • PHP : 동적인 웹사이트를 위한 서버 측 스크립트 언어
  • 익스프레스엔진 : PHP언어로 작성된 홈페이지용 게시판 소프트웨어 또는 프레임 워크
  • 웹쉘(Webshell) : php, jsp, asp 등 스크립트 언어로 되어 있으며, 원격에서 웹서버를 제어할 수 있어 다양한 공격 사용될 수 있는 웹서버형 악성코드
  • LFI(Local File Include) : 사용자 입력 값 검증이 부적절하게 이루어져서, 시스템 내부에 존재하는 파일을 읽거나 실행할 수 있는 취약점


□ 문의사항

  • 한국인터넷진흥원 인터넷침해대응센터: 국번없이 118 


□ 기타

  • 본 취약점은 Krcert 홈페이지를 통해 NewHeart님께서 제공해주셨습니다.


[참고사이트]
[1] http://www.xpressengine.com/index.php?mid=download&package_srl=18325662


Trackback 17 Comment 0
2009.12.08 16:42

안전한 PHP 프로그래밍 (첨부파일 다운 & include 함수)

1. 게시판 첨부파일 다운로드 개발시 주의점

국내 대형 IDC 운영사 사이트의 한 게시판에서 첨부파일 다운로드할 때, 내부 파일까지 다운로드할 수 있는 취약점이 있었다.
즉, /etc/ 이하의 파일이나 웹서버 설정 파일, 로그 등을 원하면 쉽게 받아볼 수 있는 취약점이었다.

이를테면 이런식이다. URL/download.html?path=/etc&file=resolv.conf&savename=resolv.txt
(물론 위처럼 직접적으로 URL을 표시하지 않았지만, 눈치만 있으면 쉽게 알 수 있음)
/etc/resolv.conf 를 받아서 PC에 resolv.txt 이름으로 저장하라는 예이다.
'어서오세요. 저희는 개방적인 마인드로 서버의 모든 것을 네티즌에게 원하는대로 다 드립니다.'라고 얘기하는 꼴이다.

이런 취약점을 통해

1) 시스템 사양 파악
  - 퍼미션에 둔감한 SE들이 상당히 많다.
  - 설정 파일 등 OS가 제공하는 기본 퍼미션을 그대로 사용하는 경우가 많다. 그러나 일반 user가 읽지 않아도 되는 파일이 상당히 많고, 실행하지 할 필요가 없는 파일도 매우 많다. 서비스 전에 미리 이런 파일들의 퍼미션을 강화하는게 좋다.
2) 내부 정보의 유출 (서버에 내부 정보 파일이 있다면)
3) 서버의 사양과 설정 파악으로, 시스템의 또다른 취약점까지 발견할 수 있는 위험도 있다.

첨부파일 다운로드시 다음과 같이 프로그래밍을 한다. (개인적으로 정리한 것)

1) 다운로드시 서버내 다운로드 경로를 URL로 지정하는 부분은 없앤다. 다운로드 로드 경로는 웹프로그램 내부 설정을 통해 처리해야.
2) /, \ 이나 .. 등 의 디렉토리 이동과 관련된 것은 사용하지 못하도록 한다. (필터링)
3) 파일명을 지정하지 않도록 하거나, (no=1 이면 게시물 1번의 파일 정보를 DB에서 읽어 다운로드시켜주면 된다.)
4) 암호화 처리하여 지정하게 한다.


2. php프로그래밍에서 include 취약

php에서 include() 함수를 사용할 때 주의하지 않아서, 내부 파일(local inclusion)이나 원격지 파일(remote file inclusion)을 include할 수 있는 취약한 사이트들이 있다.

의도적으로 URL을 통해 값을 넘겨받아 처럼) include하도록 개발하는 경우도 있다.
이를테면 왼쪽 메뉴는 고정인데, 오른쪽 내용만 바뀌는 페이지의 경우 include(page/$inc); 처럼 아주 단순하게 만들어 놓고, URL에는 사이트주소?inc=page1과 같이 처리하는 곳도 있다는 것이다. 유저를 너무나 신뢰하는, 믿음이 강한 개발자다.

1) include되면 원하는 서버 설정 파일을 볼 수 있는 것은 기본이다.

2) local include가 될 때 command를 실행할 수 있는 방법도 있다.
(원격지 파일을 include할 수 없더라도 command를 실행할 수 있음)

웹서버의 웹로그를 이용하는 방법이다. 특정한 방식으로 웹요청을 하여 웹로그에 <? ?> 등의 php tag가 저장되도록 하고, 이 웹로그 파일을 include되도록 하면 된다.
URL에 <? phpinfo(); ?> 를 요청하면 이게 %NN 처럼 인코딩되어 로그에 남기 때문에, 효과가 없다. 따라서 User Agent, Referer, 아파치 인증부분을 통해서 요청한다.

-
XAS(Cross Agent Scripting), XRS 취약점에 대해 (2009.3, 글 좋은진호)

위 XAS, XRS 취약점을 이용하듯이 웹요청을 하면, 웹로그에 <? phpinfo(); ?> 를 남길 수 있다. 위 글대로 요청할 때 웹로그에는 다음과 같이 남는다. 이해되는가? 이제 include에 이 로그파일만 지정해주면 php 명령을 실행할 수 있다. 물론 log파일을 읽을 수 있도록 퍼미션이 된 경우.
코드:

# 공개가 불필요한 부분은 ???로 변경해서 표시했다.

???.???.???.??? - - [??/???/2009:11:47:01 +0900] "GET / HTTP/1.1" 200 3901 "<script>alert('hello')</script>" "Mozilla/5.0 (X11; U; Linux i686; ko; rv:1.9.0.4) Gecko/200??????? Firefox/3.?.?"

-
Local File Inclusion - Tricks of the Trade (글 xeraph)

위의 글은 apache의 인증 부분을 필드에 <? .. ?> 와 같은 명령을 남기는 트릭입니다. 대단한 트릭이다. 어떻게 저런 생각을...

include 취약점을 없애기 위해 다음과 같이 프로그래밍을 한다. (개인적으로 정리한 것)

1) allow_url_include = off. php 5.2.x에서는 allow_url_include가 off로 되어 있다. 그 이전 버전 사용할 때, allow_url_fopen 로 설정하는데, 원격지 파일을 include나 fopen하는 경우가 없다면 off로 한다.
2) include() 함수에 사용되는 변수는 유저가 직접적으로(URL로) 설정할 수 없도록 한다.
3) include() 함수에 사용되는 변수값은 http :// , ftp :// 나 /, \, .. 등 을 필터링 처리한다.
4) 가능하면 register_globals = off


3. 안전한 php 프로그래밍에 관한 글들

-
PHP Security (Error reporting, SQL injections, XSS, file inclusion, XSRF 등)
-
PHP Security: Fortifying Your Website- Power Tips, Tools & How to’s
  ( Register_Globals, Error Reporting, XSS, File Inclusion, PHP Security Tools(PhpSecInfo, PHP Security Scanner, Spike PHP Security Audit Tool) 등)
-
PHP Security (PHP_SELF, Email Header Injection, Including Files, Error Reporting 등)
-
Remote File Inclusion


※ 참여자 : RedBaron, 범냉이, 티니, 좋은진호
※ 11.2(월)에 했던 커피닉스 이야기 중 비중 있는 부분을 별도로 정리했다.

출처 : http://coffeenix.net

Trackback 0 Comment 0