dvwa 실습 (file upload_low)

2022. 12. 8. 03:22·웹/웹 해킹 문제

File Upload 란?

파일 업로드 기능의 취약점을 이용하여 공격자가 악의적인 스크립트 파일을 업로드 후 웹 서버에 침투하여 서버를 장악하는 공격

 

일반적으로 웹 쉘을 업로드하여 시스템 명령어로 서버를 장악한다. 해당 취약점으로 접근 권한 상승, 정보 유출, 악성코드 배포등의 공격이 발생한다.

 

File Upload 실습

 

파일 업로드 기능의 취약점을 이용하여 웹 쉘을 업로드 해보자

 

1.파일이 어떻게 업로드 되는지 'view source'를 통해 분석

 -상단 경로에 해당 .php 파일이 존재하며 업로드 동작 과정을 나타낸다.

상세 분석 (라인: 설명)

1: 해당 파일이 php언어로 구성된다

3~5: post방식으로 가져온 upload의 value 값이 존재하면 “dvwa 웹페이지경로 + hackable/uploads/” url을 target 변수에 저장한다. / 업로드 경로를 저장하는 것이다.

6: php의 “.=”를 통해 url 뒷부분에 파일명을 추가한다. / basename()은 확장자를 제거하는 함수이고 $_FILES는 PHP가 제공하는 변수이며 업로드된 파일 정보를 2차원 배열형태로 정보가 저장된다. [‘uploaded’][‘name’]을 통해 이름을 출력한다.

9~11: move_*함수를 통해 임시 저장한 파일을 url 경로(target)에 저장할 수 없으면 echo문을 출력한다

13~15: 저장할 수 있으면 url 경로에 업로드 됬다고 출력한다.

정리: 소스코드 분석을 통해 별도의 필터링이 없음을 확인하여 일반 파일을 올리면 정상적으로 저장될 것이다.

 

 

 2.파일업로드

 

파일을 업로드 할려고 하는데 업로드 권한(write)이 없다고 한다. 쓰기 권한을 부여하자

 

 

 

/var ~ /uploads 파일경로로 들어가서 chmod 명령어로 쓰기권한을 부여한다

 

 

 

준비한 웹쉘 코드를 업로드한다.

 

위 경로에 웹 쉘이 업로드 되었다.

 

웹 쉘 코드는 다음과 같다.

 

 

 

상세 분석 (라인: 설명)

1: 해당 파일은 php 언어로 구성되어 있다.

3~6: 데이터 전송 태그인 form 태그가 사용되며 GET 메소드 방식으로 전송된다.

8~9: GET 방식으로 가져온 cmd의 value값이 있으면 해당 value값을 시스템 명령으로 처리

 

3. 공격 ( 파일 삭제)

웹쉘 파일이 업로드 된 경로로 진입한다.

 

text부분에 시스템 명령어를 입력해보자

 

text에 pwd를 입력하여 현재 위치경로를 보여준다. 현재 경로를 알았으니 디렉토리에 속해 있는 디렉토리 및 파일을 찾아보자

 

.png파일과 .php파일이 있다. .png 파일을 삭제하자

 

위 명령어를 치면 아래와 같이 파일이 삭제된다.

 

취약점 대응 방안

1.시큐어 코딩

   - 파일의.확장자(php,exe,jsp,dll 등)를 필터링하는 코드를 작성한다.

     

       •서버로부터 파일을 보내 request요청을 하면 파일정보들이 $_FILES 변수에 저장된다 2 차원 배열로 구성되며 name,          tmp_name, size, type 등으로 구성된다.

       •파일을 업로드 하는 php 파일에 필터링을 추가해보자

-기존에 있던 PHP 코드에 type,size에 대한 변수를 추가하고 if 문을 이용하여 jpeg,pnp 형식과 파일크기를 제한하여 파일을 업로드 하도록 한다.
 

 2.시스템 분리

   - 웹 서버와 업로드 되는 서버를 물리적으로 분리한다.

     

3.권한 설정

  - 파일이 업로드 되는 경로의 실행 권한을 제거하여 , 파일이 실행하지 못하도록 한다.

    •웹 쉘이 갖는 권한은 www-data이다. 따라서 업로드 경로의 소유자 부분을 다른 계정으 로 바꾸거나 소유자 권한에서           write 권한을 없앤다.

    •write 권한제거

                                                                                                ↓
                                                                                                ↓

     • 파일 소유권 변경

                                                                                                ↓

                                                                                                ↓

      •파일 소유자와 그룹 권한을 root로 변경하여 기타 권한으로 접근하도록 한다.

      •기타권한은 --- 이므로 upload 권한이 없다.

 

  - Apache conf 파일의 코드를 수정하여 php 코드가 실행하지 않도록 한다.

  - php conf 파일의 코드를 수정하여 php 코드가 실행하지 않도록 한다.

 

 

저작자표시 (새창열림)

'웹 > 웹 해킹 문제' 카테고리의 다른 글

webhacking.kr 36번 write-up  (0) 2022.12.24
Webhacking.kr 33번 write-up  (0) 2022.12.22
webhacking.kr 20번 write-up  (0) 2022.12.07
webhacking.kr 23번 write-up  (0) 2022.12.06
webhacking.kr 47번 write-up  (0) 2022.12.04
'웹/웹 해킹 문제' 카테고리의 다른 글
  • webhacking.kr 36번 write-up
  • Webhacking.kr 33번 write-up
  • webhacking.kr 20번 write-up
  • webhacking.kr 23번 write-up
-송현우-
-송현우-
  • -송현우-
    모험
    -송현우-
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • 웹 (67)
        • 웹 해킹 문제 (45)
        • bandit( overthewire ) (0)
        • 기술 (5)
        • 웹 취약점 정리 (2)
        • 웹 해킹 보고서 (0)
        • 모바일 해킹 정리 (0)
        • 모의해킹 실무 과정 (15)
      • 모바일 (0)
      • 인프라 (10)
        • Infra 보안점검 (10)
      • 클라우드 (0)
      • 네트워크 (1)
        • 네트워크 기초 이론 (1)
      • 자격증 (11)
        • 정보보안기사 (2)
        • 정보처리기사 (2)
        • CPPG (1)
        • 리눅스마스터2급 (1)
        • bhpt (4)
        • 컴활 (1)
      • ISMS-P (1)
      • 개발 (16)
        • 백준 (12)
        • 게임 (3)
      • CS (1)
      • 공부 계획 (1)
      • 정리노트 (0)
      • CTF 대회 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    너의 평점은
    2주차 정리
    백준
    주요정보통신기반시설 기술적 취약점 분석 평가 방법 상세 가이드
    bwapp
    문제풀이
    wehacking.kr
    webhacking
    불충분한 인증
    웹해킹
    2023년도 4회차 실기
    webhacking.kr 43번
    정보보안기사 합격 수기
    webhacking.kr
    write-up
    행렬덧셈
    write up
    WarGame
    불충분한 인가
    webhacking.kr 21
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
-송현우-
dvwa 실습 (file upload_low)
상단으로

티스토리툴바