This blog is NOT OFFICIAL website of Kali Linux. We just share Tutorials to learn Cybersecurity.

Setup a Vulnerable Web Server DVWA in Kali Linux localhost

Why we need a vulnerable web server?

Attacking on a website or server in internet without legal permission will considered as crime. Practice makes perfect, but where to practice our hacking skills ?

A simple answer is on our localhost. Localhost is a locally hosted web server it can be hosted on our PC and not connected to the internet.

There is a famous quote "There is no place like". This is our home server or local server. This is an awesome place to learn and practice our skills. That's why it is the best place. No place can better then localhost.

How to set up ?

Setting up a vulnerable server is very easy. Now we set up DVWA in our Kali Linux machine.

DVWA stands for Damn Vulnerable Web Application. Oh yes, it is too vulnerable. In this web application security researchers, penetration testers or ethical hackers test their skills and run tools in a legal environment.

setup DVWA in Kali Linux

DVWA is designed for practice some most common web vulnerability. It is made with PHP and mySQL. Let's start without wasting time.

In Linux environment localhost files are stored in /var/www/html directory, so we open a terminal and change our directory to that directory using following command:

cd /var/www/html
Here we clone DVWA from it's Github repository. To clone it we run following command:

git clone
cloning DVWA fron GitHub

After the cloning complete, we rename the DVWA to dvwa (it is not necessary but it will save our effort).

mv DVWA dvwa
Then we change the permission on dvwa directory by using following command:-

chmod -R 777 dvwa/
changing permission of dvwa

Now we have to setup this web application to run properly for that we have to go into /dvwa/config directory.

cd dvwa/config
Using ls command we can the list of files.


configure the DVWA

In the above screenshot we can see the file. This file contains default configuration. We need to make a copy of this file with .php extension name, we are coping this file because in future if anything goes wrong then we have the default values. So we copy this file with .php extension name using following command:-

Then we check the copied file using ls command:


Then we use nano editor to make changes on our newly created PHP file.

The screenshot is following:-


We will make changes in this part the p@ssw0rd to pass and the user from root. Watch the following screenshot:-

changes in file

Then we save it using CTRL+X and press Y to save changes and Enter button to save and exit.

The next is configuring the database.

Here we have opened a new terminal window closing the previous one. We start the mysql at first using following command:-

service mysql start
If there are no errors that means the service is started.

Now let's login to mysql using following command:-

mysql -u root -p
Here in our Kali Linux root is our superuser name, if we have something else then we need to change that user.

In the password field we press Enter without typing password; because we didn't set any password for it, now mysql will open like following screenshot:-

mysql in Kali Linux

Now to setup a database, we start with creating a new user by applying following command:-

create user 'user'@'' identified by 'pass';
Here using this command we are creating a user called 'user' running server on and the password is 'pass'. Remember that this username and password should exactly same as the password and username we have entered in the configuration file of dvwa web application.

creating new user in database

In the screenshot we can see the query is OK. That means the user is created.

Then we grant this user all the privileges over the database. For that we type following command:-

grant all privileges on dvwa.* to 'user'@'' identified by 'pass';
grant user privileges over database

Yes, we have finished the work of database, now we configure the server. For this we need to configure our apache2 server. Let's change our directory to /etc/php/7.3/apache2

Here we are using version 7.3, if we use another version then the path might be change.

cd /etc/php/7.3/apache2
Here we configure the php.ini file using leafpad of any good text editor. We have used mousepad editor.

mousepad php.ini
We need to change the allow_url_fopen and allow_url_include values. We set both of them 'On'. In some cases when we are first time configuring it, we might find that one of this or both of this configuration is set to 'Off'. We have turned both of these configuration to 'On', as the following screenshot:-

server configuration

Then we save and close the file.

Then we start the apache2 server using following command:-

service apache2 start

Let's open the browser and navigate to first open will open the setup.php as shown in the screenshot.

DVWA setup screen

Here we scroll down and click on "Create/Reset Database".

creating database on DVWA
Then it will create and configure the database and we redirected to DVWA login page.

DVWA default login

The default login is
  • Username:- admin
  • Password:- password
After login we are in Damn Vulnerable Web Applications main page. Here is some general information and warnings.
DVWA Main page

On the left side we can see lots of vulnerable pages are available we can practice here.

DVWA have different security levels to change those we navigate to DVWA security. There are some security levels low, medium, high, impossible. We can choose difficulty as we need.

DVWA security Level

Now we can run penetration testing tools and techniques in our localhost.

This is how we can setup DVWA, Damn Vulnerable Web Application in our Kali Linux system. This is very helpful for beginners to advanced users, because of it multilayered security levels.

Tell us which kind of vulnerability you should try at first ? For any problem feel free to comment below, follow us on blogger and Twitter and Medium for more updates and Kali Linux tutorials.
Kali Linux


Post a Comment
  • antuApril 3, 2020 at 12:45 PM

    it worked...thanks...

    Delete Comment
  • Unknown photo
    UnknownApril 15, 2020 at 11:27 AM


    Delete Comment
    • Unknown photo
      UnknownApril 19, 2020 at 1:02 AM

      Its really helpful.

      Delete Comment
      • Moss1980 photo
        Moss1980May 11, 2020 at 3:18 AM

        I'm trying to do this on AWS Ubuntu. Is MySQL a prerequisite or does the installer install mysql?

        I'm hitting an error at service mysql start:

        Failed to start mysql.service: Interactive authentication required.
        See system logs and 'systemctl status mysql.service' for details.
        $ systemctl status mysql.service
        Unit mysql.service could not be found.


        Delete Comment
        • Kali Linux photo
          Kali LinuxMay 12, 2020 at 7:57 AM

          Most probably mysq; doesn't run with user root which is what you need to use systemctl. Therefore you should execute your command using sudo.

          Delete Comment
        • Moss1980 photo
          Moss1980May 13, 2020 at 12:09 PM

          Unfortunately that didn't work. Do I need to install and configure mysql first?

          $ sudo find . -name mysql

          $ sudo service --status-all
          [ + ] acpid
          [ + ] apparmor
          [ + ] apport
          [ + ] atd
          [ - ]
          [ + ] cron
          [ - ] cryptdisks
          [ - ] cryptdisks-early
          [ + ] dbus
          [ + ] grub-common
          [ - ] hibagent
          [ - ]
          [ - ] irqbalance
          [ - ] iscsid
          [ - ]
          [ + ] kmod
          [ - ] lvm2
          [ - ] lvm2-lvmpolld
          [ + ] multipath-tools
          [ - ] open-iscsi
          [ - ] open-vm-tools
          [ - ] plymouth
          [ - ] plymouth-log
          [ + ] procps
          [ - ] rsync
          [ + ] rsyslog
          [ - ] screen-cleanup
          [ + ] ssh
          [ + ] udev
          [ + ] ufw
          [ + ] unattended-upgrades
          [ - ] uuidd
          $ sudo service mysql start
          Failed to start mysql.service: Unit mysql.service not found.

          Delete Comment
          • Kali Linux photo
            Kali LinuxMay 13, 2020 at 12:52 PM

            I think this is because you are using client software and not the server.
            Uninstall and reinstall again


            sudo apt-get purge mysql-server
            sudo apt-get autoremove
            sudo apt-get autoclean


            sudo apt-get update
            sudo apt-get install mysql-server

            Backup entire folder before doing this:

            sudo rm /etc/apt/apt.conf.d/50unattended-upgrades*
            sudo apt-get update
            sudo apt-get upgrade

            Delete Comment
          • Moss1980 photo
            Moss1980May 16, 2020 at 2:33 AM

            Thanks for this, finally got it working!

            I started again with the Kali Linux distro on AWS and that worked. For GUI access, I used this

            Delete Comment
            • Unknown photo
              UnknownJuly 7, 2020 at 7:06 PM

              that worked thanks
              of all the articles i have gone through this one is really legit

              Delete Comment
              • AnonymousSeptember 3, 2020 at 7:58 AM

                It worked perfect!! Thank u so much

                Delete Comment
                • Unknown photo
                  UnknownOctober 13, 2020 at 10:35 PM

                  Bro it worked
                  After closing the virtual machine
                  Again if i want to work on dvwa
                  Should I have to repeat the same procedure

                  Delete Comment
                • TUTOR photo
                  TUTORApril 30, 2021 at 1:54 PM

                  i have this error sir:

                  elcot@boss:/var/www/html/DVWA/config$ mysql -u elcot -p
                  Enter password:
                  ERROR 1698 (28000): Access denied for user 'elcot'@'localhost'

                  please help me

                  Delete Comment
                • spydr photo
                  spydrJune 7, 2021 at 3:06 PM

                  It was explained in a very good manner
                  worked perfectly

                  Delete Comment
                  • Kali Linux photo
                    Kali LinuxJune 7, 2021 at 6:06 PM

                    Your compliment boosts our motivation to do something more awesome. Thanks a lot. There is another easy way to setup dvwa and other pentest labs on our system. You can check our this article.

                    Delete Comment
                  • Unknown photo
                    UnknownJuly 24, 2021 at 4:46 PM

                    Thank you so much.

                    Delete Comment
                    • Krishna photo
                      KrishnaDecember 23, 2021 at 10:55 PM

                      user called 'dvwa' is not running on server What can i do?

                      MariaDB [(none)]> create user 'dvwa'@'' identified by '5r4yyyytthyyttt';
                      ERROR 1396 (HY000): Operation CREATE USER failed for 'dvwa'@''
                      MariaDB [(none)]> create user 'dvwa'@'' identified by '5r4yyyytthyyttt';
                      ERROR 1396 (HY000): Operation CREATE USER failed for 'dvwa'@''
                      MariaDB [(none)]> create user 'dvwa'@'' identified by '5r4yyyytthyyttt';
                      ERROR 1396 (HY000): Operation CREATE USER failed for 'dvwa'@''
                      MariaDB [(none)]>

                      Delete Comment
                    • AnonymousJuly 18, 2022 at 8:04 PM

                      Sir I am face a issue when I browse the local host it show 404 not found url request not found on this sever (server at port-80 )

                      Delete Comment
                    • AnonymousDecember 29, 2022 at 7:37 PM

                      after config file i have changed "dvwa" to "user" and "p@ssword" as changed to "pass" after this step i have started mysql it's started next step "mysql -u root -p" i get stucked in this step bro it occures an error like this bro "ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)" please help regarding this one along with this how can we interlink xampp with dvwa and bwapp?? please put a blog about this bro please

                      Delete Comment