apache 확장자 처리문제 , mod_mime

http://hacker.or.kr/entry/Apache-%EC%84%A4%EC%A0%95-%EB%AC%B8%EC%A0%9C%EC%A0%90-modmime-Module
http://httpd.apache.org/docs/2.2/en/mod/mod_mime.html#multipleext
http://www.php.net/manual/en/install.unix.apache2.php
http://coffeenix.net/board_view.php?bd_code=1671


  • 현상
    • apache 를 사용하는 서버에서
      a.php.xxx 로 서버에 파일을 생성
      • 파일 내용은 <? echo "HACK"; ?>
    • 웹URL로 해당 파일 호출
      • http://XXXXXX.com/a.php.xxx
    • 호출결과
      • HACK 이라는 문자열이 출력된다
      • 즉, PHP로 동작을 한다
  • 원인
    • Files with Multiple Extensions
      • 아파치의 mod_mime 에서는 다중 확장자 처리가 된다.
      • 즉, aaa.xxx.yyy 일 경우 xxx와 yyy가 확장자가 되며, AddType에 등록된 내용을 체크하게 된다.
        (이 때 xxx 와 yyy 가 둘다 AddType으로 등록되어있으면, 마지막 yyy의 type으로 동작하게 된다.
        xxx만 AddType이 되어있으면 xxx의 type으로 동작하게 된다.)
      • ex > a.php.jpg 일 경우 jpg로 동작(즉, 파일을 다운로드 받으면 php의 소스가 보이게 된다.)
  • 문제점
    • 많은 게시판 에서는 "a.php." 같은 파일을 업로드할 때 마지막 확장자만 체크한다.
      많은 그리고 파일 다운로드 링크를 직접URL로 사용한다.
      이럴 경우 악의적 쉘이 들어있는 php 파일일 경우 해킹을 당할 수 있다.
  • 해결책
    • 업로드시 체크
      • 확장자 체크방식을 업로그 금지 정규식 
        /\.(php|php3|php4|php5|html|htm|inc)/ 
        처럼 사용
    • 다운로더.php 사용(직접링크 URL사용 금지)
      • 다운로더.php 를 사용하면 php파싱이 되지 않고 일반 바이너리 파일로 출력만 하기 때문에 악성php가 동작하지 않는다.
    • 아파치 설정
      • AddType은 사용금지
      • <FilesMatch "\.ph(p[2-6]?|tml)$">
            SetHandler application/x-httpd-php
        </FilesMatch>
        <FilesMatch "\.phps$">
            SetHandler application/x-httpd-php-source
        </FilesMatch>
        이 구문을 대신 설정해서 사용
    • 기타 등등
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자