프로젝트/DVWA 실습 29

DVWA 실습 #6-1 - File Upload(low)

2021/01/12 - [프로젝트/DVWA 실습] - DVWA 실습 #6 - File Upload DVWA 실습 #6 - File Upload DVWA의 다섯 번째 실습 대상인 File Upload다. 선택한 파일을 업로드하는 기능을 가진 폼에 필터링이 제대로 구현되어 있지 않아 악성 파일들이 업로드될 수 있으며 이를 이용해 서버 측의 php 엔진에 haruhiism.tistory.com 문제 해결 방법 Low 단계에서는 아무런 필터링도 거치지 않고 "hackable/uploads/" 디렉토리로 업로드된 파일을 동일한 이름과 확장자로 옮기고 있다. 그렇기 때문에 악성 파일을 업로드해도 이를 방어할 수 없다. 업로드된 악성파일(웹쉘)을 다음처럼 참조하면 서버측 엔진으로 웹쉘이 실행되는 것을 볼 수 있다. ..

DVWA 실습 #6 - File Upload

DVWA의 다섯 번째 실습 대상인 File Upload다. 선택한 파일을 업로드하는 기능을 가진 폼에 필터링이 제대로 구현되어 있지 않아 악성 파일들이 업로드될 수 있으며 이를 이용해 서버 측의 php 엔진에서 phpinfo() 등 php 코드를 실행하는 것이 목적이다. File Upload? 현대 웹 애플리케이션에서 사진이나 비디오, 바이너리 등 다양한 파일을 서버에 업로드하는 기능은 거의 필수적으로 구현되어 있다. 하지만 이렇게 업로드되는 파일들을 필터링하지 않거나 사용자가 직접 접근하여 실행시킬 수 있다면 웹 애플리케이션에 심각한 영향을 끼칠 수 있다. 예를 들어 웹쉘 파일이 서버로 업로드될 경우 이 파일이 실행되기만 하면 RCE를 통해 서버 측에서 실행되어 중요 정보를 읽거나 서버를 장악할 수 있..

DVWA 실습 #5-3 - File Inclusion(high)

2021/01/12 - [프로젝트/DVWA 실습] - DVWA 실습 #5 - File Inclusion DVWA 실습 #5 - File Inclusion DVWA의 네 번째 실습 대상인 File Inclusion이다. 각 파일을 클릭하면 특정 php 코드가 실행되며 URL에 파일 이름이 파라미터로 전달된다. 이 특성을 활용하여 웹 서버가 다른 파일을 읽도록 하는 것이 haruhiism.tistory.com 문제 해결 방법 이번에는 Directory Traversal을 시도했을 경우 에러 메시지가 출력되는 게 아니라 아예 전용 문구만 출력되고 아무것도 나타나지 않는다. 그렇다면 '../' 같은 Directory Traversal을 사용하지 않고 직접 절대 경로를 입력하여 파일을 확인해보면 어떨까? '/et..

DVWA 실습 #5-2 - File Inclusion(medium)

2021/01/12 - [프로젝트/DVWA 실습] - DVWA 실습 #5 - File Inclusion DVWA 실습 #5 - File Inclusion DVWA의 네 번째 실습 대상인 File Inclusion이다. 각 파일을 클릭하면 특정 php 코드가 실행되며 URL에 파일 이름이 파라미터로 전달된다. 이 특성을 활용하여 웹 서버가 다른 파일을 읽도록 하는 것이 haruhiism.tistory.com 문제 해결 방법 이번 단계부터는 기초적인 필터링이 적용되고 있다. 이전 단계처럼 Directory Traversal을 이용해 플래그 파일을 읽으려고 하면 파일을 찾을 수 없다는 오류가 발생하는데 오류 로그를 자세히 살펴보면 뭔가 빠진 것을 알 수 있다. "../../hackable/flags/fi.ph..

DVWA 실습 #5-1 - File Inclusion(low)

2021/01/12 - [프로젝트/DVWA 실습] - DVWA 실습 #5 - File Inclusion DVWA 실습 #5 - File Inclusion DVWA의 네 번째 실습 대상인 File Inclusion이다. 각 파일을 클릭하면 특정 php 코드가 실행되며 URL에 파일 이름이 파라미터로 전달된다. 이 특성을 활용하여 웹 서버가 다른 파일을 읽도록 하는 것이 haruhiism.tistory.com 문제 해결 방법 Low 단계에서는 아무런 필터링도 거치지 않고 파일 이름을 파라미터로 받아서 include 하고 있다. 세 개의 파일이 각각 고유의 링크를 가지고 있으며 page 파라미터로 파일 이름을 확장자까지 포함하여 GET메서드로 직접 넘기면 해당 파일의 내용이 페이지에 렌더링 된다. 이 단계에서..

DVWA 실습 #5 - File Inclusion

DVWA의 네 번째 실습 대상인 File Inclusion이다. 각 파일을 클릭하면 특정 php 코드가 실행되며 URL에 파일 이름이 파라미터로 전달된다. 이 특성을 활용하여 웹 서버가 다른 파일을 읽도록 하는 것이 이 실습의 목적이다. File Inclusion? File Inclusion은 실행 시간에 다른 파일을 읽어 동적으로 웹페이지를 생성하는 애플리케이션에서 자주 볼 수 있는 취약점이다. 주로 PHP의 include() 함수가 그 단적인 예인데 예를 들어 데이터베이스 연결 클래스를 만들어 이를 여러 페이지에서 사용하고자 한다면 include("db.php")처럼 불러와서 사용할 수 있다. 마치 C언어에서 사용자 지정 헤더를 include 하는 것과 비슷한 방법으로 꼭 클래스뿐 아니라 다수의 페이..

DVWA 실습 #4-3 - CSRF(high)

2021/01/06 - [프로젝트/DVWA 실습] - DVWA 실습 #4 - CSRF DVWA 실습 #4 - CSRF DVWA의 세 번째 실습 대상인 CSRF다. 이 입력 폼은 비밀번호를 변경하는 시스템이며 이를 로그인한 사용자가 모르게 사용하여 비밀번호를 원하는 비밀번호로 변경하는 공격을 실습해볼 수 있다. CS haruhiism.tistory.com 문제 해결 방법 High 단계에서는 이전 Medium 단계에서 사용한 레퍼러 헤더를 검사하는 방식 대신 CSRF 토큰을 구현하여 올바른 사용자가 작업을 수행하고 있는지 검사하고 있다. 역시 hidden 필드로 구현되어 있으며 서버측에서 매 요청마다 고유하게 생성한 문자열 값이다. 이전 Low, Medium 단계에서 했던 것처럼 사용자에게 링크나 버튼으로 ..

DVWA 실습 #4-2 - CSRF(medium)

2021/01/06 - [프로젝트/DVWA 실습] - DVWA 실습 #4 - CSRF DVWA 실습 #4 - CSRF DVWA의 세 번째 실습 대상인 CSRF다. 이 입력 폼은 비밀번호를 변경하는 시스템이며 이를 로그인한 사용자가 모르게 사용하여 비밀번호를 원하는 비밀번호로 변경하는 공격을 실습해볼 수 있다. CS haruhiism.tistory.com 문제 해결 방법 Medium 단계에서는 레퍼러 헤더를 검사하는 로직이 추가되었다. 그러나 eregi() 함수를 이용한 단순한 문자열 비교기 때문에 레퍼러 헤더에 서버 이름 문자열이 포함되기만 해도 통과할 수 있다. 레퍼러는 해당 사이트에 접속하기전 방문했던 사이트로 예를 들어 DVWA의 CSRF 실습 메뉴에 접근하면 요청 헤더에는 다음과 같은 레퍼러 헤더..

DVWA 실습 #4-1 - CSRF(low)

2021/01/06 - [프로젝트/DVWA 실습] - DVWA 실습 #4 - CSRF DVWA 실습 #4 - CSRF DVWA의 세 번째 실습 대상인 CSRF다. 이 입력 폼은 비밀번호를 변경하는 시스템이며 이를 로그인한 사용자가 모르게 사용하여 비밀번호를 원하는 비밀번호로 변경하는 공격을 실습해볼 수 있다. CS haruhiism.tistory.com 문제 해결 방법 Low 단계에서는 GET 메서드의 파라미터로 새로운 비밀번호와 새로운 비밀번호 확인 문자열을 받아서 요청을 처리하기 때문에 다음처럼 악성 URL을 클릭하면 비밀번호가 URL에 기재된 대로 변경된다. 이를 테스트해보기 위해서 빈 페이지(about:blank)에 자바스크립트를 활용하여 링크 태그를 하나 추가한 후 href 속성을 비밀번호 변경..

DVWA 실습 #4 - CSRF

DVWA의 세 번째 실습 대상인 CSRF다. 이 입력 폼은 비밀번호를 변경하는 시스템이며 이를 로그인한 사용자가 모르게 사용하여 비밀번호를 원하는 비밀번호로 변경하는 공격을 실습해볼 수 있다. CSRF? CSRF, Cross-Site Request Forgery는 사이트 간 요청 위조 공격으로 사용자가 자신의 의지와는 무관하게 공격자가 원하는 행위를 수행하게 된다는 것이 핵심이다. 이는 서버 애플리케이션이 어떤 요청을 보내는 사용자가 본인이 맞는지 확인하지 않고 사용자의 브라우저에 저장된 세션이나 쿠키를 신뢰하는 것을 악용한 공격으로 예를 들어 사용자가 특정 웹사이트에 로그인한 상태에서 정상적인 링크로 위장된 비밀번호 초기화 링크를 클릭하게 되면 서버에서는 정상적인 사용자(웹사이트에 로그인되어 세션이 유..