DVWA(Damn Vulnerable Web Application)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 애플리케이션 보안 프로세스를 더 잘 이해하도록 돕고, 학생과 교사 모두가 통제된 수업에서 웹 애플리케이션 보안에 대해 배울 수 있도록 돕는 것입니다. 방 환경.
DVWA의 목적은 간단하고 간단한 인터페이스를 사용하여 다양한 난이도의 가장 일반적인 웹 취약점 중 일부를 연습하는 것 입니다. 이 소프트웨어에는 문서화된 취약점과 문서화되지 않은 취약점이 모두 있습니다. 이는 의도적인 것입니다. 가능한 한 많은 문제를 시도하고 발견하는 것이 좋습니다.
빌어먹을 취약한 웹 애플리케이션은 정말 취약합니다! 호스팅 제공업체의 공개 HTML 폴더나 인터넷 연결 서버에 업로드하지 마세요 . 손상될 수 있습니다. NAT 네트워킹 모드로 설정된 가상 머신(VirtualBox 또는 VMware 등)을 사용하는 것이 좋습니다. 게스트 머신 내에서 웹 서버 및 데이터베이스용 XAMPP를 다운로드하고 설치할 수 있습니다.
우리는 누군가가 이 애플리케이션(DVWA)을 사용하는 방식에 대해 책임을 지지 않습니다. 우리는 애플리케이션의 목적을 명확하게 밝혔으며 악의적으로 사용되어서는 안됩니다. 우리는 사용자가 라이브 웹 서버에 DVWA를 설치하지 못하도록 경고하고 조치를 취했습니다. 귀하의 웹 서버가 DVWA 설치로 인해 손상된 경우 이는 당사의 책임이 아니며 이를 업로드하고 설치한 사람의 책임입니다.
이 파일은 DVWA(Damn Vulnerable Web Application)의 일부입니다.
DVWA(빌어먹을 취약한 웹 응용 프로그램)는 무료 소프트웨어입니다. 자유 소프트웨어 재단(Free Software Foundation)이 게시한 GNU General Public License(라이선스 버전 3) 또는 (귀하의 선택에 따라) 조건에 따라 재배포 및/또는 수정할 수 있습니다. 최신 버전.
DVWA(빌어먹을 취약한 웹 애플리케이션)는 유용할 것이라는 희망으로 배포되지만 어떠한 보증도 제공하지 않습니다. 상품성이나 특정 목적에의 적합성에 대한 묵시적인 보증도 제공되지 않습니다. 자세한 내용은 GNU 일반 공중 라이선스를 참조하세요.
DVWA(Dann Vulnerable Web Application)와 함께 GNU General Public License의 사본을 받았어야 합니다. 그렇지 않은 경우 https://www.gnu.org/licenses/를 참조하세요.
이 파일은 여러 언어로 제공됩니다.
아랍어: العربية
중국어: 简体中文
프랑스어: Français
한국어: 한국어
페르시아어: вارسی
폴란드어: Polski
포르투갈어: Português
스페인어: Español
터키어: Türkçe
인도네시아: 인도네시아
베트남어: 베트남어
번역에 기여하고 싶다면 PR을 제출해 주세요. 하지만 이는 Google 번역을 통해 실행하고 전송하면 거부된다는 의미는 아닙니다. 새 'README.xx.md' 파일을 추가하여 번역된 버전을 제출하세요. 여기서 xx는 원하는 언어의 두 글자 코드입니다(ISO 639-1 기반).
다양한 버전의 DVWA가 있지만 지원되는 유일한 버전은 공식 GitHub 저장소의 최신 소스입니다. 저장소에서 복제할 수 있습니다.
자식 클론 https://github.com/digininja/DVWA.git
또는 파일의 ZIP을 다운로드하세요.
참고로 이것은 공식 DVWA 스크립트가 아니며 IamCarron이 작성했습니다. 스크립트를 작성하는 데 많은 작업이 소요되었으며 작성 당시에는 악의적인 작업을 수행하지 않았습니다. 그러나 만일을 대비하여 시스템에서 맹목적으로 실행하기 전에 스크립트를 검토하는 것이 좋습니다. 버그가 있으면 여기가 아닌 IamCarron에 보고해 주세요.
Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS 등 Debian 기반 시스템의 DVWA용 자동 구성 스크립트입니다.
참고: 이 스크립트에는 루트 권한이 필요하며 Debian 기반 시스템에 맞게 조정되었습니다. 루트 사용자로 실행하고 있는지 확인하십시오.
운영 체제: Debian 기반 시스템(Kali, Ubuntu, Kubuntu, Linux Mint, Zorin OS)
권한: 루트 사용자로 실행
그러면 @IamCarron이 작성한 설치 스크립트가 다운로드되어 자동으로 실행됩니다. 우리가 검토할 당시 작성자와 스크립트를 신뢰하지 않았다면 여기에 포함되지 않았을 것입니다. 그러나 누군가가 악의적으로 행동할 가능성은 항상 존재하므로 검토하지 않고 다른 사람의 코드를 실행하는 것이 안전하지 않다고 느끼면 직접 다운로드한 후 수동 프로세스를 따르고 검토할 수 있습니다.
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"
스크립트를 다운로드합니다:
wget https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh
스크립트를 실행 가능하게 만듭니다.
chmod +x 설치-DVWA.sh
루트로 스크립트를 실행합니다.
sudo ./Install-DVWA.sh
VirtualBox에서 실행되는 Kali에 DVWA 설치
XAMPP를 사용하여 Windows에 DVWA 설치
Windows 10에 DVWA(빌어먹을 취약한 웹 애플리케이션) 설치
DVWA를 설치하는 가장 쉬운 방법은 웹 서버 설정이 아직 없는 경우 XAMPP를 다운로드하여 설치하는 것입니다.
XAMPP는 Linux, Solaris, Windows 및 Mac OS X용 Apache 배포판을 설치하기가 매우 쉽습니다. 패키지에는 Apache 웹 서버, MySQL, PHP, Perl, FTP 서버 및 phpMyAdmin이 포함되어 있습니다.
이 비디오는 Windows 설치 과정을 안내하지만 다른 OS에서도 비슷할 것입니다.
hoang-himself와 JGillam 덕분에 master
브랜치에 대한 모든 커밋으로 Docker 이미지가 생성되고 GitHub Container Registry에서 풀다운될 수 있습니다.
얻는 내용에 대한 자세한 내용을 보려면 사전 빌드된 Docker 이미지를 찾아보세요.
전제조건: Docker 및 Docker Compose.
Docker Desktop을 사용하는 경우 두 가지 모두 이미 설치되어 있어야 합니다.
Linux에서 Docker 엔진을 선호하는 경우 해당 설치 가이드를 따르세요.
위와 같이 최신 Docker 릴리스에 대한 지원을 제공합니다. Linux 및 패키지 관리자와 함께 제공되는 Docker 패키지를 사용하는 경우에도 작동할 수 있지만 지원은 최선의 노력을 다할 것입니다.
Docker를 패키지 관리자 버전에서 업스트림으로 업그레이드하려면 Ubuntu, Fedora 및 기타 설명서에 표시된 대로 이전 버전을 제거해야 합니다. Docker 데이터(컨테이너, 이미지, 볼륨 등)는 영향을 받아서는 안 되지만, 문제가 발생할 경우에는 Docker에 알리고 검색 엔진을 사용해야 합니다.
그런 다음 시작하려면 다음 단계를 따르세요.
docker version
및 docker compose version
실행하여 Docker 및 Docker Compose가 제대로 설치되었는지 확인하세요. 출력에서 해당 버전을 볼 수 있어야 합니다.
예를 들어:
>>> docker version
Client:
[...]
Version: 23.0.5
[...]
Server: Docker Desktop 4.19.0 (106363)
Engine:
[...]
Version: 23.0.5
[...]
>>> docker compose version
Docker Compose version v2.17.3
아무것도 표시되지 않거나 명령을 찾을 수 없음 오류가 발생하는 경우 전제 조건에 따라 Docker 및 Docker Compose를 설정하세요.
이 저장소를 복제하거나 다운로드하고 추출합니다(다운로드 참조).
원하는 터미널을 열고 작업 디렉터리를 이 폴더( DVWA
)로 변경하세요.
docker compose up -d
실행합니다.
DVWA는 이제 http://localhost:4280
에서 사용할 수 있습니다.
컨테이너에서 DVWA를 실행하는 경우 웹 서버는 일반적인 포트 80 대신 포트 4280에서 수신 대기합니다. 이 결정에 대한 자세한 내용은 다른 포트에서 DVWA를 실행하고 싶습니다를 참조하세요.
로컬을 변경하고 로컬에서 프로젝트를 빌드하려면 compose.yml
로 이동하여 pull_policy: always
를 pull_policy: build
로 변경하세요.
docker compose up -d
실행하면 Docker가 레지스트리에서 사용 가능한 항목에 관계없이 로컬에서 이미지를 빌드하도록 트리거됩니다.
참고: pull_policy
.
이상적으로는 이 앱을 개발하고 테스트할 PHP의 최신 안정 버전을 사용해야 합니다.
PHP 5.x를 사용하려는 사람에게는 지원이 제공되지 않습니다.
7.3 미만 버전에는 문제를 일으킬 수 있는 알려진 문제가 있으며, 대부분의 앱은 작동하지만 무작위로 작동하지 않을 수 있습니다. 그러한 이전 버전을 사용해야 할 타당한 이유가 없으면 지원이 제공되지 않습니다.
Debian 기반 Linux 배포판을 사용하는 경우 다음 패키지 (또는 이에 상응하는 패키지) 를 설치해야 합니다.
아파치2
libapache2-mod-php
mariadb-서버
mariadb-클라이언트
PHP php-mysqli
PHP-GD
이 전에 업데이트를 수행하여 모든 항목이 최신 버전인지 확인하는 것이 좋습니다.
적절한 업데이트 적절한 설치 -y apache2 mariadb-server mariadb-client php php-mysqli php-gd libapache2-mod-php
이 사이트는 MariaDB 대신 MySQL에서 작동하지만 MariaDB는 기본적으로 작동하므로 MySQL이 올바르게 작동하려면 변경해야 합니다.
DVWA는 해당 구성 파일의 더미 복사본을 제공하며, 이 복사본을 제자리에 복사한 다음 적절하게 변경해야 합니다. Linux에서는 DVWA 디렉터리에 있다고 가정하고 다음과 같이 수행할 수 있습니다.
cp config/config.inc.php.dist config/config.inc.php
Windows에서 파일 확장자를 숨기면 이 작업이 조금 더 어려울 수 있습니다. 이에 대해 확실하지 않은 경우 다음 블로그 게시물에서 자세한 내용을 설명합니다.
Windows에서 파일 확장자를 표시하는 방법
구성 파일을 수정하는 대신 환경 변수를 사용하여 대부분의 설정을 지정할 수도 있습니다. Docker 또는 Kubernetes 배포에서는 이를 통해 새 Docker 이미지를 생성하지 않고도 구성을 수정할 수 있습니다. config/config.inc.php.dist 파일에서 변수를 찾을 수 있습니다.
기본 보안 수준을 "낮음"으로 설정하려면 compose.yml 파일에 다음 줄을 추가하면 됩니다.
환경: - DB_SERVER=db - DEFAULT_SECURITY_LEVEL=낮음
데이터베이스를 설정하려면 메인 메뉴에서 Setup DVWA
버튼을 클릭한 다음 Create / Reset Database
버튼을 클릭하세요. 그러면 일부 데이터가 포함된 데이터베이스가 생성/재설정됩니다.
데이터베이스를 생성하는 동안 오류가 발생하면 ./config/config.inc.php
내에서 데이터베이스 자격 증명이 올바른지 확인하세요. 이는 예제 파일인 config.inc.php.dist와 다릅니다.
변수는 기본적으로 다음과 같이 설정됩니다.
$_DVWA[ 'db_server'] = '127.0.0.1';$_DVWA[ 'db_port'] = '3306';$_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd ';$_DVWA[ 'db_database' ] = 'dvwa';
MySQL(Kali에서는 MariaDB가 기본값임) 대신 MariaDB를 사용하는 경우 데이터베이스 루트 사용자를 사용할 수 없으므로 새 데이터베이스 사용자를 생성해야 합니다. 이렇게 하려면 루트 사용자로 데이터베이스에 연결한 후 다음 명령을 사용하십시오.
MariaDB [(none)]> create database dvwa;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user dvwa@localhost identified by 'p@ssw0rd';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all on dvwa.* to dvwa@localhost;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
일부 도구는 인증과 잘 작동하지 않으므로 DVWA와 함께 사용할 수 없습니다. 이 문제를 해결하기 위해 인증 확인을 비활성화하는 구성 옵션이 있습니다. 이렇게 하려면 구성 파일에서 다음을 설정하면 됩니다.
$_DVWA[ 'disable_authentication' ] = true;
또한 수행하려는 테스트에 적합한 보안 수준을 설정해야 합니다.
$_DVWA[ 'default_security_level' ] = '낮음';
이 상태에서는 로그인이나 쿠키 설정 없이도 모든 기능에 접근할 수 있습니다.
./hackable/uploads/
- 웹 서비스에서 쓰기 가능해야 합니다(파일 업로드용).
Linux 시스템에서는 /etc/php/xx/fpm/php.ini
또는 /etc/php/xx/apache2/php.ini
에서 찾을 수 있습니다.
RFI(원격 파일 포함)를 허용하려면:
allow_url_include = on
[allow_url_include]
allow_url_fopen = on
[allow_url_fopen]
PHP가 모든 오류 메시지를 표시하는지 확인하려면:
display_errors = on
[display_errors]
display_startup_errors = on
[display_startup_errors]
변경한 후에는 PHP 서비스 또는 Apache를 다시 시작하십시오.
이는 "안전하지 않은 CAPTCHA" 실습에만 필요합니다. 해당 실습을 사용하지 않는 경우 이 섹션을 무시해도 됩니다.
https://www.google.com/recaptcha/admin/create에서 API 키 쌍을 생성했습니다.
그런 다음 ./config/config.inc.php
의 다음 섹션으로 이동합니다.
$_DVWA[ 'recaptcha_public_key' ]
$_DVWA[ 'recaptcha_private_key' ]
기본 사용자 이름 = admin
기본 비밀번호 = password
...쉽게 무차별적으로 강요당할 수 있습니다 ;)
로그인 URL: http://127.0.0.1/login.php
참고: DVWA를 다른 디렉터리에 설치한 경우에는 달라집니다.
이는 Debian, Ubuntu 및 Kali와 같은 Debian 기반 배포판을 사용하고 있다고 가정합니다. 다른 배포판의 경우에는 그대로 따르되 적절한 경우 명령을 업데이트하세요.
Docker Desktop을 사용하는 경우 그래픽 애플리케이션에서 로그에 액세스할 수 있습니다. 최신 버전에서는 일부 사소한 세부 사항이 변경될 수 있지만 액세스 방법은 동일해야 합니다.
로그는 터미널에서도 액세스할 수 있습니다.
터미널을 열고 작업 디렉터리를 DVWA로 변경하세요.
병합된 로그 표시
도커 작성 로그
로그를 파일(예: dvwa.log
로 내보내려는 경우
docker 작성 로그 > dvwa.log
우리는 몇 가지 이유로 기본적으로 포트 80을 사용하지 않습니다.
일부 사용자는 이미 포트 80에서 무언가를 실행하고 있을 수 있습니다.
일부 사용자는 루트 없는 컨테이너 엔진(예: Podman)을 사용할 수 있으며 80은 권한 있는 포트(< 1024)입니다. 추가 구성(예: net.ipv4.ip_unprivileged_port_start
설정)이 필요하지만 직접 조사해야 합니다.
compose.yml
파일에서 포트 바인딩을 변경하여 다른 포트에 DVWA를 노출할 수 있습니다. 예를 들어 다음을 변경할 수 있습니다.
포트: - 127.0.0.1:4280:80
에게
포트: - 127.0.0.1:8806:80
이제 DVWA는 http://localhost:8806
에서 액세스할 수 있습니다.
DVWA를 자신의 장치뿐만 아니라 로컬 네트워크에서도 액세스할 수 있도록 하려는 경우(예: 작업장을 위한 테스트 시스템을 설정하는 경우) 포트에서 127.0.0.1:
을 제거할 수 있습니다. 매핑(또는 LAN IP로 교체). 이렇게 하면 사용 가능한 모든 장치에서 수신됩니다. 안전한 기본값은 항상 로컬 루프백 장치에서만 수신 대기하는 것입니다. 결국 그것은 여러분의 컴퓨터에서 실행되는 매우 취약한 웹 애플리케이션입니다.
포함된 compose.yml
파일은 Docker가 시작될 때 DVWA 및 해당 데이터베이스를 자동으로 실행합니다.
이를 비활성화하려면 compose.yml
파일에서 restart: unless-stopped
행을 삭제하거나 주석 처리하면 됩니다.
이 동작을 일시적으로 비활성화하려면 docker compose stop
실행하거나 Docker Desktop을 사용하여 dvwa
찾아 중지를 클릭하세요. 또한 컨테이너를 삭제하거나 docker compose down
실행할 수 있습니다.
Linux 시스템에서 Apache는 기본적으로 access.log
및 error.log
두 개의 로그 파일을 생성하며 Debian 기반 시스템에서는 일반적으로 /var/log/apache2/
에 있습니다.
오류 보고서, 문제 등을 제출할 때 각 파일의 마지막 5줄 이상을 포함하시기 바랍니다. 데비안 기반 시스템에서는 다음과 같이 얻을 수 있습니다:
tail -n 5 /var/log/apache2/access.log /var/log/apache2/error.log
이 문제가 발생하면 파일 위치를 이해해야 합니다. 기본적으로 Apache 문서 루트(웹 콘텐츠 검색이 시작되는 위치)는 /var/www/html
입니다. 이 디렉토리에 hello.txt
파일을 넣은 경우, 이 파일에 액세스하려면 http://localhost/hello.txt
를 탐색해야 합니다.
디렉토리를 생성하고 거기에 파일을 넣은 경우 - /var/www/html/mydir/hello.txt
- 그런 다음 http://localhost/mydir/hello.txt
로 이동해야 합니다.
Linux는 기본적으로 대소문자를 구분하므로 위의 예에서 이들 중 하나를 탐색하려고 하면 404 Not Found
표시됩니다.
http://localhost/MyDir/hello.txt
http://localhost/mydir/Hello.txt
http://localhost/MYDIR/hello.txt
이것이 DVWA에 어떤 영향을 미치나요? 대부분의 사람들은 git을 사용하여 DVWA를 /var/www/html
에 복제합니다. 이렇게 하면 모든 DVWA 파일이 포함된 /var/www/html/DVWA/
디렉터리가 제공됩니다. 그런 다음 http://localhost/
로 이동하여 404
또는 기본 Apache 시작 페이지를 가져옵니다. 파일이 DVWA에 있으므로 http://localhost/DVWA
로 이동해야 합니다.
또 다른 일반적인 실수는 Linux 디렉터리 일치에 관한 한 dvwa
DVWA
아니기 때문에 http://localhost/dvwa
를 탐색하는 것입니다. 그러면 404
가 표시됩니다.
따라서 설정 후 사이트를 방문하여 404
오류가 발생하면 파일을 어디에 설치했는지, 문서 루트를 기준으로 파일이 어디에 있는지, 사용한 디렉터리의 대소문자는 무엇인지 생각해 보세요.
이는 일반적으로 다른 문제를 숨기는 하나의 구성 문제입니다. 기본적으로 PHP는 오류를 표시하지 않으므로 설정 프로세스 중에 오류 표시를 켜는 것을 잊은 경우 데이터베이스 연결 실패와 같은 다른 문제로 인해 앱 로드가 중지되지만 무엇을 알려 주는 메시지가 나타납니다. 잘못된 내용은 숨겨집니다.
이 문제를 해결하려면 PHP 구성에 설명된 대로 display_errors
및 display_startup_errors
설정한 다음 Apache를 다시 시작하십시오.
설정 스크립트를 실행할 때 다음이 표시되면 구성 파일의 사용자 이름 또는 비밀번호가 데이터베이스에 구성된 것과 일치하지 않는다는 의미입니다.
Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES).
오류는 사용자 이름 notdvwa
사용하고 있음을 알려줍니다.
다음 오류는 구성 파일이 잘못된 데이터베이스를 가리키고 있음을 나타냅니다.
SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa'
사용자 dvwa
사용하고 있으며 notdvwa
데이터베이스에 연결을 시도하고 있음을 나타냅니다.
가장 먼저 해야 할 일은 구성 파일에 넣었다고 생각하는 내용이 실제로 거기에 있는지 다시 확인하는 것입니다.
예상한 것과 일치하면 다음으로 해야 할 일은 명령줄에서 사용자로 로그인할 수 있는지 확인하는 것입니다. 데이터베이스 사용자가 dvwa
이고 비밀번호가 p@ssw0rd
라고 가정하고 다음 명령을 실행합니다.
mysql -u dvwa -pp@ssw0rd -D dvwa
참고: -p 뒤에는 공백이 없습니다.
다음이 표시되면 비밀번호가 올바른 것입니다.
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 14
Server version: 10.3.22-MariaDB-0ubuntu0.19.10.1 Ubuntu 19.10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [dvwa]>
명령줄에서 연결할 수 있으므로 구성 파일에 문제가 있을 가능성이 높습니다. 다시 확인한 후 여전히 작동하지 않으면 문제를 제기하세요.
다음과 같이 표시되면 사용 중인 사용자 이름이나 비밀번호가 잘못된 것입니다. 데이터베이스 설정 단계를 반복하고 프로세스 전체에서 동일한 사용자 이름과 비밀번호를 사용하는지 확인하십시오.
ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)
다음과 같은 메시지가 나타나면 사용자 자격 증명은 정확하지만 사용자에게 데이터베이스에 대한 액세스 권한이 없는 것입니다. 다시 설정 단계를 반복하고 사용 중인 데이터베이스 이름을 확인하세요.
ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'
발생할 수 있는 최종 오류는 다음과 같습니다.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
이는 인증 문제는 아니지만 데이터베이스 서버가 실행되고 있지 않음을 나타냅니다. 다음으로 시작하세요
sudo 서비스 mysql 시작
다음과 유사한 오류:
Fatal error: Uncaught mysqli_sql_exception: Connection refused in /var/sites/dvwa/non-secure/htdocs/dvwa/includes/dvwaPage.inc.php:535
데이터베이스 서버가 실행되고 있지 않거나 구성 파일에 잘못된 IP 주소가 있음을 의미합니다.
데이터베이스 서버가 어디에 있을 것으로 예상되는지 확인하려면 구성 파일에서 다음 줄을 확인하세요.
$_DVWA[ 'db_server' ] = '127.0.0.1';
그런 다음 이 서버로 이동하여 실행 중인지 확인하세요. Linux에서는 다음을 사용하여 이를 수행할 수 있습니다.
systemctl 상태 mariadb.service
그리고 당신은 이와 같은 것을 찾고 있습니다. 중요한 점은 그것이 active (running)
이라고 되어 있다는 것입니다.
● mariadb.service - MariaDB 10.5.19 데이터베이스 서버 로드됨: 로드됨(/lib/systemd/system/mariadb.service; 활성화됨; 사전 설정: 활성화됨) 활성: 2024년 3월 14일 16:04:25 GMT 이후 활성(실행 중)입니다. 1주 5일 전
실행 중이 아닌 경우 다음을 사용하여 시작할 수 있습니다.
sudo systemctl 중지 mariadb.service
sudo
를 기록하고 요청 시 Linux 사용자 비밀번호를 입력했는지 확인하세요.
Windows에서는 XAMPP 콘솔에서 상태를 확인하세요.
최신 버전의 MySQL에서는 PHP가 더 이상 기본 구성의 데이터베이스와 통신할 수 없습니다. 설정 스크립트를 실행하려고 시도하고 다음 메시지가 표시되면 구성이 완료되었음을 의미합니다.
Database Error #2054: The server requested authentication method unknown to the client.
두 가지 옵션이 있는데 가장 쉬운 방법은 MySQL을 제거하고 MariaDB를 설치하는 것입니다. 다음은 MariaDB 프로젝트의 공식 가이드입니다.
https://mariadb.com/resources/blog/how-to- migration-from-mysql-to-mariadb-on-linux-in-five-steps/
또는 다음 단계를 따르세요.
루트로서 다음 파일을 편집하십시오: /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
줄 아래에 다음을 추가합니다: default-authentication-plugin=mysql_native_password
데이터베이스 다시 시작: sudo service mysql restart
데이터베이스 사용자의 인증 방법을 확인하세요.
mysql> mysql.user에서 호스트, 사용자, 플러그인을 선택합니다. 여기서 mysql.user.User = 'dvwa';+------------+--------------- --+------------+| 호스트 | 사용자 | 플러그인 |+------------+-------+---------------- -------+| 로컬호스트 | 드브와 | caching_sha2_password |+------------+------+---------------- -------세트 내 +1개 행(0.00초)
caching_sha2_password
보일 것입니다. 그렇다면 다음 명령을 실행하십시오.
mysql> ALTER USER dvwa@localhost는 'p@ssw0rd'에 의해 mysql_native_password로 식별됩니다.
검사를 다시 실행하면 이제 mysql_native_password
표시됩니다.
mysql> mysql.user에서 호스트, 사용자, 플러그인을 선택합니다. 여기서 mysql.user.User = 'dvwa';+------------+------+--------- -----+| 호스트 | 사용자 | 플러그인 |+-----------+------+------------+| 로컬호스트 | 드브와 | mysql_native_password |+----------+------+------------+1 행 세트 (0.00초)
이제 설정 프로세스가 정상적으로 작동합니다.
더 많은 정보를 원하시면 다음 페이지를 참조하세요: https://www.php.net/manual/en/mysqli.requirements.php.
데이터베이스 서버가 실행되고 있지 않습니다. Debian 기반 배포판에서는 다음을 사용하여 이를 수행할 수 있습니다.
sudo 서비스 mysql 시작
이러한 오류가 발생할 수 있는 데에는 몇 가지 이유가 있지만 실행 중인 데이터베이스 서버 버전이 PHP 버전과 호환되지 않을 가능성이 가장 높습니다.
이는 최신 버전의 MySQL을 PHP로 실행하고 제대로 작동하지 않을 때 가장 일반적으로 발견됩니다. 최선의 조언은 MySQL을 버리고 MariaDB를 설치하는 것입니다. 이는 우리가 지원할 수 있는 것이 아닙니다.
자세한 내용은 다음을 참조하세요.
https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-관련-errors/
Apache에는 웹 서버에서 명령을 실행할 수 있는 충분한 권한이 없을 수 있습니다. Linux에서 DVWA를 실행하는 경우 루트로 로그인했는지 확인하세요. Windows에서는 관리자로 로그인합니다.
SELinux에 문제가 발생할 수 있습니다. SELinux를 비활성화하거나 다음 명령을 실행하여 웹 서버가 데이터베이스와 통신할 수 있도록 허용하십시오.
setsebool -P httpd_can_network_connect_db 1
최신 문제 해결 정보를 보려면 git repo에서 공개 티켓과 마감 티켓을 모두 읽어보세요.
https://github.com/digininja/DVWA/issues
티켓을 제출하기 전에 저장소에서 최신 버전의 코드를 실행하고 있는지 확인하세요. 이것은 최신 릴리스가 아니며 마스터 브랜치의 최신 코드입니다.
티켓을 제출하는 경우 최소한 다음 정보를 제출해 주세요.
운영 체제
보고하는 오류가 발생한 직후 웹 서버 오류 로그의 마지막 5줄
데이터베이스 인증 문제인 경우 위의 단계를 진행하고 각 단계를 스크린샷으로 확인하세요. 데이터베이스 사용자 및 비밀번호를 보여주는 구성 파일 섹션의 스크린샷과 함께 이를 제출하세요.
무엇이 잘못되고 있는지, 어떤 일이 발생할 것으로 예상되는지, 문제를 해결하기 위해 무엇을 시도했는지에 대한 자세한 설명입니다. "로그인 중단"만으로는 귀하의 문제를 이해하고 해결하는 데 충분하지 않습니다.
저는 몇 가지 취약점을 살펴보고 이를 탐지하는 방법과 이를 악용하는 방법을 보여주는 몇 가지 튜토리얼 비디오를 함께 만들려고 합니다. 지금까지 제가 만든 것은 다음과 같습니다.
반영된 XSS 찾기 및 활용
이에 대한 지원은 제한되어 있습니다. 문제를 제기하기 전에 디버깅 작업을 준비했는지 확인하십시오. 단순히 "작동하지 않습니다"라고 주장하지 마십시오.
기본적으로 SQLi 및 Blind SQLi는 사이트에서 사용하는 MariaDB/MySQL 서버에 대해 수행되지만 대신 SQLite3에 대해 SQLi 테스트를 수행하도록 전환할 수도 있습니다.
SQLite3을 PHP와 함께 작동시키는 방법을 다루지는 않겠지만, php-sqlite3
패키지를 설치하고 활성화되었는지 확인하는 간단한 사례여야 합니다.
전환하려면 구성 파일을 편집하고 다음 줄을 추가하거나 편집하면 됩니다.
$_DVWA["SQLI_DB"] = "sqlite";$_DVWA["SQLITE_DB"] = "sqli.db";
기본적으로 database/sqli.db
파일을 사용합니다. 파일을 엉망으로 만든 경우에는 간단히 database/sqli.db.dist
맨 위에 복사하면 됩니다.
문제는 MySQL의 경우와 정확히 동일하며 대신 SQLite3에 대해 실행됩니다.
귀하의 모든 기여에 감사드리며 이 프로젝트를 최신 상태로 유지해 주셔서 감사합니다.
아이디어나 개선 사항이 있거나 단순히 공동 작업을 하고 싶다면 언제든지 프로젝트에 기여하고 참여할 수 있으며 자유롭게 PR을 보내주세요.
간단히 말해서, 하지 마십시오!
1년에 한 번씩 누군가가 앱에서 발견한 취약점에 대한 보고서를 제출합니다. 일부는 잘 작성되어 있으며 때로는 유료 펜 테스트 보고서에서 본 것보다 더 낫습니다. 일부는 "헤더가 누락되었습니다. 나".
2023년에 누군가가 취약점 중 하나에 대해 CVE를 요청하기로 결정했을 때 이는 완전히 새로운 수준으로 높아졌으며 CVE-2023-39848이 제공되었습니다. 많은 웃음이 이어졌고 이를 수정하는 데 시간이 낭비되었습니다.
앱에 취약점이 있으며 의도적입니다. 대부분은 수업을 통해 수행할 수 있는 잘 문서화된 문서이고, 나머지는 "숨겨진" 문서로서 스스로 찾을 수 있는 문서입니다. 숨겨진 추가 기능을 찾는 기술을 정말로 과시하고 싶다면 블로그 게시물을 작성하거나 동영상을 제작하세요. 해당 기능과 귀하가 어떻게 발견했는지 알고 싶어하는 사람들이 있을 수 있기 때문입니다. 링크를 보내주시면 참고 자료에 포함시킬 수도 있습니다.
프로젝트 홈: https://github.com/digininja/DVWA
DVWA 팀이 제작함