프로젝트/DVWA 실습 29

DVWA 실습 #3-3 - Command Injection(high)

2021/01/05 - [프로젝트/DVWA 실습] - DVWA 실습 #3 - Command Injection DVWA 실습 #3 - Command Injection DVWA의 두 번째 실습 대상인 Command Injection이다. 주어진 IP 주소로 ping 명령을 수행하는 시스템이며 이를 이용하여 커맨드 인젝션을 실습해볼 수 있다. 커맨드 인젝션? 커맨드 인젝션이란 사용자가 haruhiism.tistory.com 문제 해결 방법 High 단계에서는 Medium 단계와 동일하게 관련 문자를 필터링하여 커맨드 인젝션을 방지하고 있으나 '|'를 '| '로 착각하여 치환하는 바람에 보안 취약점이 발생하게 되었다. 지난 포스트에 언급했듯이 '|'는 파이프라인 문자로 왼쪽 명령어의 출력을 오른쪽 명령어에 입력..

DVWA 실습 #3-2 - Command Injection(medium)

2021/01/05 - [프로젝트/DVWA 실습] - DVWA 실습 #3 - Command Injection DVWA 실습 #3 - Command Injection DVWA의 두 번째 실습 대상인 Command Injection이다. 주어진 IP 주소로 ping 명령을 수행하는 시스템이며 이를 이용하여 커맨드 인젝션을 실습해볼 수 있다. 커맨드 인젝션? 커맨드 인젝션이란 사용자가 haruhiism.tistory.com 문제 해결 방법 Medium 단계에서는 '&&'과 ';'만 필터링하고 있다. 하지만 '&', '||', '|' 등 이 필터링을 우회할 수 있는 문자는 많기 때문에 다른 문자를 입력해서 어렵지 않게 우회할 수 있다. 결정적으로 str_replace() 함수를 이용하여 '&&'를 ''로 치환하..

DVWA 실습 #3-1 - Command Injection(low)

2021/01/05 - [프로젝트/DVWA 실습] - DVWA 실습 #3 - Command Injection DVWA 실습 #3 - Command Injection DVWA의 두 번째 실습 대상인 Command Injection이다. 주어진 IP 주소로 ping 명령을 수행하는 시스템이며 이를 이용하여 커맨드 인젝션을 실습해볼 수 있다. 커맨드 인젝션? 커맨드 인젝션이란 사용자가 haruhiism.tistory.com 문제 해결 방법 Low 단계에서는 입력에 대한 아무런 필터링도 없기 때문에 단순히 세미콜론 하나로 구분자를 설정해주면 몇번이고 원하는 명령어를 실행시킬 수 있다. 위는 입력폼에 "; id; ls; cat /etc/passwd"를 입력한 결과다. 이는 서버에서 "ping ; id; ls; c..

DVWA 실습 #3 - Command Injection

DVWA의 두 번째 실습 대상인 Command Injection이다. 주어진 IP 주소로 ping 명령을 수행하는 시스템이며 이를 이용하여 커맨드 인젝션을 실습해볼 수 있다. 커맨드 인젝션? 커맨드 인젝션이란 사용자가 취약한 웹사이트의 입력 폼이나 기타 방법을 이용하여 서버에 직접적, 간접적으로 명령어(Bash, CMD 등)를 전송하여 실행시키는 공격 방법이다. RCE(Remote Command Execution)이라고도 하며 입력 폼뿐만이 아니라 사용자의 쿠키값, 레퍼러, HTTP 헤더 등을 서버 측에서 읽어 적절한 검증 없이 시스템 호출에 포함한다면 공격 벡터가 될 수 있다. 이 공격이 가능하려면 웹 애플리케이션에서 사용자 입력을 기반으로 system(), exec(), os.system() 같은 시..

DVWA 실습 #2-3 - Brute Force(high)

2021/01/01 - [프로젝트/DVWA 실습] - DVWA 실습 #2 - Brute Force DVWA 실습 #2 - Brute Force DVWA의 첫 번째 실습 대상인 Brute Force다. 브루트 포스? 브루트 포스는 무작위로 비밀번호를 조합하거나 사전 파일에 정의된 비밀번호를 하나하나 대입해보며 공격하는 방식(또는 두 가지를 합한 h haruhiism.tistory.com 문제 해결 방법 High 레벨부터는 이전 포스트에서 분석했듯이 CSRF 토큰이 포함된다. 이는 서버가 받는 요청이 진짜 사용자가 HTML 폼에서 입력하여 보낸건지 확인하는 방법으로 현재 레벨에서는 숨겨진 폼에 포함되어 같이 전송되고 있다. 이 토큰값은 서버에서 클라이언트에게 보여줄 페이지를 동적으로 생성할 때 같이 생성되어..

DVWA 실습 #2-2 - Brute Force(medium)

2021/01/01 - [프로젝트/DVWA 실습] - DVWA 실습 #2 - Brute Force DVWA 실습 #2 - Brute Force DVWA의 첫 번째 실습 대상인 Brute Force다. 브루트 포스? 브루트 포스는 무작위로 비밀번호를 조합하거나 사전 파일에 정의된 비밀번호를 하나하나 대입해보며 공격하는 방식(또는 두 가지를 합한 h haruhiism.tistory.com 문제 해결 방법 Medium 단계부터는 SQL Injection이 불가능하고 브루트 포스에 대한 방지책으로 로그인이 실패했을 때 2초동안 대기하게 된다. 기존에 1초도 안되서 빠른 응답을 받을 수 있었던 것과 달리 매 시도마다 올바른 비밀번호 입력을 제외하고는 무조건 2초가 걸리지만 반복적으로 들어오는 요청에 대한 대응이 ..

DVWA 실습 #2-1 - Brute Force(low)

2021/01/01 - [프로젝트/DVWA 실습] - DVWA 실습 #2 - Brute Force DVWA 실습 #2 - Brute Force DVWA의 첫 번째 실습 대상인 Brute Force다. 브루트 포스는 무작위로 비밀번호를 조합하거나 사전 파일에 정의된 예시 패스워드를 하나하나 대입해보며 공격하는 방식(또는 두 가지를 합한 hybrid 방 haruhiism.tistory.com 문제 해결 방법 지난 포스트에서 분석한 소스 코드처럼 Low 단계에서는 브루트 포스에 대한 어떤 방어 체계도 갖춰져있지 않으며 SQL Injection에 대한 입력 필터링도 없기 때문에 쉽게 특정 계정에 접속할 수 있다. 현재 admin 계정에 접속하려면 "admin'#"처럼 입력해주면 비밀번호를 입력하지 않고도 로그인..

DVWA 실습 #2 - Brute Force

DVWA의 첫 번째 실습 대상인 Brute Force다. Username과 Password를 입력하여 admin 계정으로 로그인하는 것을 목표로 하고 있다. 브루트 포스? 브루트 포스는 무작위로 비밀번호를 조합하거나 사전 파일에 정의된 비밀번호를 하나하나 대입해보며 공격하는 방식(또는 두 가지를 합한 hybrid 방식)이다. 본래 어떤 시스템에서 특정 개체를 인증하려면 인증서라던지, OTP, 생체 인식 등 여러 분야의 인증 수단을 활용할 수 있지만 웹 애플리케이션에서는 대개 아이디와 비밀번호만을 이용하여 사용자를 인증하고 있다. 이 브루트 포스 공격은 비밀번호(혹은 아이디도)를 가능한 모든 문자를 조합하거나 많이 사용되는 문자를 조합하여 반복해서 로그인을 시도하는 공격으로 전통적이지만 시간만 충분하다면 ..

DVWA 실습 #1 - 칼리 리눅스 설치, DVWA 1.9 설치

화이트 해커를 위한 웹 해킹의 기술 - YES24을 읽으면서 DVWA 실습을 위해 칼리 리눅스에 XAMPP를 설치하여 DVWA 1.9를 구축하였다. 칼리 리눅스 2020 설치 우선 칼리 리눅스를 Kali Linux Custom Image Downloads에서 VMWare 이미지로 설치한 후 기본적인 업데이트 및 한글 설정을 수행하였다. # 기본적인 업그레이드 sudo apt update sudo apt upgrade # 한글 입력기 및 폰트 설치 sudo apt install fcitx-lib* sudo apt install fcitx-hangul sudo apt install fonts-nanum DVWA 설치 DVWA는 최신 버전인 1.9 버전을 DVWA - Damn Vulnerable Web App..