파일업로드

  • 웹 쉘 제작

- r57shell

=> 시그니처 기반 백신탐지 우회 위해 간단히 base64로 인코딩되어있음


1
2
3
4
<?php
    eval(base64_decode("DQplck 어쩌구 웹쉘~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
?>

cs


- c99shell

=> r57shell을 더 발전시킨 웹 쉘


- 최근 eval($_POST['q']) 같은 코드에 'q' 파라미터에 웹 쉘과 명령어를 전송시키는 방법이 많이 사용

=> 대부분의 POST 메소드를 이용해 시스템 명령이나 코드를 실행하는데, 아파치의 로그 파일은 POST 전송 데이터를 기록하지 않기 때문


  • PHP에서 웹쉘에 이용되는 함수 (지기접적으로 시스템 명령을 실행하는 함수)
system, exec ....
  • PHP코드 실행시키거나 callback을 사용하는 함수

eval, preg_replace(/e option) ...



  • 파일 업로드 취약점 공격

- 게시판에 웹 쉘 파일을 업로드 후 해당 웹쉘을 요청하면 php코드 실행


- 많은 게시판들이 이미지를 업로드하면 해당 이미지 출력

=> 이미지 속성값을 이용해 업로드 경로 탐색 가능


속성 

일반


프로토콜 : ~~~

유형 : JPEG 이미지

주소 : http://      /board/data/image1.jpg


크기 : ???kb

픽셀 크기 : 273 x 183 픽셀


만든날짜 : 2017.xx.xx

수정한 날짜 : 2017.xx.xx


=>       /board/data/image1.jpg  >> 웹쉘 요청으로 php 파일 실행


  • 파일 업로드 우회기법

상당히 많은 기법이 있지만 이 절에서는 간단히 3가지 소개


    • php.kr 우회기법

아파치의 AddLanguage 옵션에 의해 발생하는것으로, 파일명이 vuln.php.kr일 경우에도 php파일이 실행된다.

해당 취약점은 확장자가 php가 아니므로 필터링을 우회할 수 있다.

    • htaccess 업로드 취약점
아파치 설정파일인 .htaccess를 업로드
-> 여러 아파치 옵션 변경 가능 (Add Type와 같은 옵션)
-> 원하는 확장자를 php 코드로 실행 가능(txt, jpg 등)
    • 환경취약점
윈도우 환경에서는 파일 업로드 시 파일명에 콜론(:)을 붙일 경우
그 뒤에 문자열은 삭제되어 업로드된다.
ex) abc.php:.jpg -> abc.php



  • 파일 업로드 방어기법

php, htm 등 php실행권한을 가진 확장자 필터링


- 1. "php_value engine off" 내용의 .htaccess 파일 업로드 폴더에 생성한다.

- 2. .htaccess 파일을 사용자가 업로드하지 못하도록 필터링한다.

- 3. 데이터베이스와 연동해 download.php?fileno=3 과 같은 방식으로 파일을 다운로드시켜 파일경로를 알 수 없게 하는 방법


등 다양한 방어기법 존재




  • XSS (크로스 사이트 스크립팅)
  • 쿠키공격 → 쿠키탈취 → 쿠키정보 등록
  • 자바스크립트 이용 ('javascript:document.cookie="쿠키값") + F5


  • DB 해킹
SQL 삽입 취약점 이용 ( PHP, MySQL의 경우)

' or 1=1 #

 ' or '1'='1

 '' or 1=1 #

 " or "1"="1

 ' || 1=1#

 " || 1=1#

      ...

 ') or ('1'='1



- MySQL삽입 Cheat Sheet
: select user(); , select version();  ... 등

- Blind SQL 삽입
:쿼리의 결과의 참/거짓 정보만으로 데이터를 추출해 내는 기법

- URL에서 사용할 경우
: http://127.0.01/example.php?id=1234&password=1' or '1'='1' %23
( %23은 #임)



SQL 삽입 자동화 프로그램


대표적 : pangolin, sql map, Havji


방어기법 : php의 경우 magic_quotes_gpc 라는 옵션이 존재

-> GPC는 GET, POST, COOKIE


해당 옵션은 GPC로 들어오는 ',",\, 널바이트가 존재하는 경우 해당 문장 앞에 역슬래쉬를 붙여준다.

(위 4문자 모두 문자열 처리, 그리고 작음따옴표나 큰 따옴표로 항상 감싸주도록 하자)



'Web & Network' 카테고리의 다른 글

[Web] StyleBot  (0) 2017.06.13
[Web]코드편집기(아톰)  (2) 2017.06.12
HTML Reference(HTML 사전)  (1) 2017.06.12
[맛보기]구글해킹  (0) 2017.03.28
[맛보기]웹해킹 맛보기  (0) 2017.03.21

+ Recent posts