第6章数据库系统安全技术.ppt
《第6章数据库系统安全技术.ppt》由会员分享,可在线阅读,更多相关《第6章数据库系统安全技术.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1XXX 微信:XXX https:/ 微信:XXX https:/ 数据库系统安全技术本章学习目标 掌握SQL注入式攻击的原理 理解对SQL注入式攻击的防范 掌握使用SQLmap进行SQL注入技术 了解常见的数据库安全问题及安全威胁 了解数据库系统安全体系、机制和需求 了解数据库安全管理原则数据库系统是计算机技术的一个重要分支,从20世纪60年代后期发展至今,已经成为一门非常重要的学科。数据库是信息存储管理的主要形式,是单机或网络信息系统的主要基础。本章通过实例介绍数据库系统的安全特性及数据库系统安全所面临的威胁。3XXX 微信:XXX https:/ SQL注入式攻击SQL(Structu
2、redQueryLanguage,结构化查询语言)能够访问数据库,SQL有很多不同的版本,它们对相同的关键字(SELECT、UPDATE、DELETE、INSERT、CREATE、ALTER和DROP)有相似的使用方式,当前的主流SQL是SQL99。SQL能够执行获取数据库的信息、对数据库查询、向数据库中插入新的记录、删除数据库中的记录和更新数据库中的记录等操作。SQL注入式攻击就是把SQL命令插入到Web表单的输入域或页面的网址(URL)中,欺骗服务器执行恶意的SQL命令。1数据库系统数据库系统分为数据库和数据库管理系统:数据库是存放数据的地方;数据库管理系统是管理数据库的软件。数据库中数据
3、的存储结构称为数据模型,有4种常见的数据模型:层次模型、网状模型、关系模型和面向对象模型。其中,关系模型是最主要的数据模型。MSAccess、MSSQLServer、Oracle、MySQL、Postgres、Sybase、Infomix和DB2等都是关系数据库系统。4XXX 微信:XXX https:/ SQL注入式攻击2SQL注入的条件SQL注入式攻击是一种利用用户输入构造SQL语句的攻击。如果Web应用程序没有适当地检测用户输入的信息,攻击者就有可能改变后台执行的SQL语句的结构。由于程序运行SQL语句时的权限与当前该组件(如数据库服务器、Web服务器等)的权限相同,而这些组件一般的运行
4、权限都很高,而且经常是以管理员的权限运行,所以攻击者获得数据库的完全控制权后,就可能执行系统命令。SQL注入是现今存在最广泛的Web漏洞之一,是存在于Web应用程序开发中的漏洞,不是数据库本身的问题。只有调用数据库的动态页面才有可能存在注入漏洞,动态页面包括ASP、JSP、PHP、Perl和CGI等。当访问一个网页时,如果URL中包含“asp?id=”、“php?id=”或“jsp?id=”等类似内容,那么此时就要调用数据库的动态页面了,“?”后面的id称为变量,“=”后面的值称为参数。注入漏洞存在的一个重要条件是程序对用户提交的变量没有进行有效的过滤,就直接放入SQL语句中了。据统计,网站使
5、用ASP+MSAccess或MSSQLServer的占70%以上,使用PHP+MySQL的占20%,其他不到10%。下面通过实例介绍SQL注入式攻击给Web应用带来的威胁。5XXX 微信:XXX https:/ 实例注入式攻击MS SQL Server 本节要注入的网站如图6.1所示,由于只是为了介绍注入网站的方法,并未实质入侵该网站,同时也是为了对该网站保密,因此在后面的截图中隐藏了该网站的相关信息。图6.1显示的是要被注入网站的首页,将鼠标放在“我院召开平安奥运工作部署会”上,在状态栏显示其URL是http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 第2步
6、:测试“and1=1”。如图6.3所示,在浏览器地址栏中http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 第4步:判断数据库类型。对于不同的数据库,它们的函数和注入方法都有差异,所以在注入之前,还要判断数据库的类型。如果在第1步加单引号后得不到有价值的信息,那么可以利用“anduser0”来判断数据库类型。如图6.5所示,在浏览器地址栏中http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 使用下面的语句:http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 使用下面的语句:http:/ 微信:
7、XXX https:/ 实例注入式攻击MS SQL Server 继续猜测表名,如图6.11所示,在http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 第6步:猜测字段名(用户名和密码字段)。猜出表名以后,将count(*)替换成count(字段名),用同样的方法猜测字段名。如图6.12所示,在浏览器地址栏中http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 第7步:猜测用户名。已知表adminuser中存在admin_name字段,下面使用ASCII逐字解码法猜测用户名。首先,猜测用户名的长度。如图6.14所示,在浏览器地址
8、栏中http:/ 微信:XXX https:/ 实例注入式攻击MS SQL Server 得到admin_name的长度以后,用unicode(substring(admin_name,N,1)获得第N位字符的ASCII码,比如:(1)猜测第1个字符。如图6.16所示,从productid=392and(selecttop1unicode(substring(admin_name,1,1)fromadminuser)0到productid=392and(selecttop1unicode(substring(admin_name,1,1)fromadminuser)121显示正常;如图6.17
9、所示,productid=392and(selecttop1unicode(substring(admin_name,1,1)fromadminuser)122显示不正常,得到第1个字符是“z”(查ASCII码字符表,字符z的十进制编码是122)。图6.17继续猜测第1个字符图6.16猜测第1个字符14XXX 微信:XXX https:/ 实例注入式攻击MS SQL Server 第8步:猜测用户密码。按照猜测用户名的方法猜测用户密码,一般情况下,密码是经MD5加密后存入表中的,如果成功,得到的也是加密后的密码,所以还要对密码进行破解。第9步:修改密码。如果破解密码的难度很大,那么可以修改已经
10、猜测的用户名对应的密码,即http:/ 微信:XXX https:/ 实例注入式攻击Access 本节要注入网站的URL是http:/ 微信:XXX https:/ 实例注入式攻击Access 第3步:测试“and1=2”。如图6.20所示,在浏览器地址栏中http:/ 微信:XXX https:/ 实例注入式攻击Access 使用下面的语句:http:/ 微信:XXX https:/ 实例注入式攻击Access 第6步:猜测字段名(用户名和密码字段)。表名猜出来后,将count(*)替换成count(字段名),用同样的原理猜测字段名。首先猜测用户名字段: 微信:XXX https:/ 实例注
11、入式攻击Access 第8步:猜测用户密码。已知表admin中存在password字段,下面猜测用户admin的密码。猜测密码的长度: 微信:XXX https:/ SQLmap SQLmap是一个强大免费开源的自动化SQL注入工具,主要功能是扫描、发现并利用给定的URL的SQL注入漏洞。目前支持的数据库有:MySQL、Oracle、PostgreSQL、MicrosoftSQLServer、MicrosoftAccess、SQLite、Firebird、Sybase、SAPMaxDB。SQLmap采用4种独特的SQL注入技术:盲推理SQL注入、UNION查询SQL注入、堆查询及基于时间的SQ
12、L盲注入。其广泛的功能和选项包括数据库指纹、枚举、数据库提取、访问目标文件系统,并在获取完全操作权限时实行任意命令。SQLmap命令选项被归类为目标、请求、优化、注入、检测、技巧(Techniques)、指纹、枚举等选项。SQLmap命令语法如下。sqlmapoptions-u|-g|-cSQLmap命令Options(选项)说明如表6.3表6.16所示。21XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 1实验环境实验环境如图6.26所示,使用宿主机(Windows10)、虚拟机KaliLinux(攻击机)、虚拟机WinXPsp3(目标机),KaliLinux和Wi
13、nXPsp3虚拟机的网络连接方式选择“仅主机(Host-Only)网络”。KaliLinux虚拟机有两块网卡,为了能够访问互联网,第二块网卡设置为NAT。从宿主机将文件xampp-win32-1.8.2-6-VC9-installer.exe、DVWA-20200503.zip拖放到目标机中。图6.26实验环境22XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 2安装XAMPP在目标机(WinXPsp3)双击xampp-win32-1.8.2-6-VC9-installer.exe安装XAMPP,安装位置是C:xampp,安装组件选择默认安装,如图6.27所示,安装完
14、成后,出现XAMPP控制面板窗口,如图6.28所示,单击“Start”按钮,开启Apache和MySQL服务。图6.27XAMPP安装组件23XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 图6.28XAMPP控制面板,Apache和MySQL24XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 图6.29数据库设置页面25XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 3安装DVWA在目标机(WinXPsp3),右键单击桌面DVWA-20200503.zip文件,将其解压到C:xampphtdocs,然后将DVWA-
15、master命名为dvwa,因此DVWA的安装位置是C:xampphtdocsdvwa。在IE浏览器的地址栏中输入http:/127.0.0.1/dvwa/并访问,会显示一个数据库设置页面,如图6.29所示。将文件C:xampphtdocsdvwaconfigconfig.inc.php.dist改名为config.inc.php,文件中$_DVWAdb_password=pssw0rd修改为$_DVWAdb_password=,保存config.inc.php文件,如图6.30所示。图6.30修改密码26XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 在图6.28中
16、,重启Apache服务。回到浏览器(如图6.29所示),单击页面下方的“Create/ResetDatabase”按钮,进入登录页面,如图6.31所示。输入默认用户名/密码(admin/password),进入Web应用程序,如图6.32所示。图6.31进入登录页面图6.32进入Web应用程序27XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 4使用SQLmap进行SQL注入下面操作都在攻击机(KaliLinux)中进行。第1步:获得当前会话Cookie等信息在Firefox浏览器中依次选择菜单栏“Tools”“Add-ons”,在搜索栏里输入TamperData,从
17、搜索结果中选择TamperData安装,如图6.33所示。图6.33安装插件TamperData28XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 在Firefox浏览器的地址栏中输入http:/192.168.56.102/dvwa/并访问,输入默认用户名/密码(admin/password),登录Web应用程序,为方便实验,将DVWA安全等级设置为Low,如图6.34所示。使用SQLmap之前,需要获得当前会话Cookie等信息,用来在渗透过程中维持连接状态。单击图6.34右上角的“TamperData”按钮,弹出窗口如图6.35所示,单击“Yes”按钮,启动插件
18、TamperData。再次回到如图6.34所示页面,单击“F5”刷新页面,弹出窗口如图6.36所示,得到当前的Cookie为“security=low;PHPSESSID=b8fkg76oubth7bv28euhttnit5”。再次单击图6.34右上角的“TamperData”按钮,停止插件TamperData的运行。图6.1 被注入网站的首页29XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 图6.34设置DVWA安全等级为Low30XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 图6.35启动插件TamperData31XXX 微信:XX
19、X https:/ 实例使用SQLmap进行SQL注入 图6.36获得当前会话Cookie等信息32XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 第2步:获得目标页面单击图6.34左侧栏的SQLInjection,接下来进入页面的“SQLInjection”部分,输入任意值(asd)并提交,如图6.37所示。图6.37获得目标页面URL33XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 可以看到get请求的ID参数(在浏览器地址栏)如下,这就是所需目标页面的URL。http:/192.168.56.102/dvwa/vulnerabilit
20、ies/sqli/?id=asd&Submit=Submit#第3步:初步验证网站是否可以进行SQL注入执行如下命令初步验证网站是否可以进行SQL注入,结果如图6.38所示。sqlmap-u http:/192.168.56.102/dvwa/vulnerabilities/sqli/?id=asd&Submit=Submit#-cookie=security=low;PHPSESSID=b8fkg76oubth7bv28euhttnit5图6.38初步验证网站是否可以进行SQL注入34XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 第4步:检索当前数据库和当前用户执
21、行如下命令检索当前数据库和当前用户,结果如图6.39所示。sqlmap-uhttp:/192.168.56.102/dvwa/vulnerabilities/sqli/?id=asd&Submit=Submit#-cookie=security=low;PHPSESSID=b8fkg76oubth7bv28euhttnit5-b-current-db-current-user图6.39检索当前数据库和当前用户35XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 第5步:探测MYSQL中用来存放应用数据的数据库名称执行如下命令检索存放应用数据的数据库名称,结果如图6.40
22、所示。sqlmap-uhttp:/192.168.56.102/dvwa/vulnerabilities/sqli/?id=asd&Submit=Submit#-cookie=security=low;PHPSESSID=b8fkg76oubth7bv28euhttnit5-dbs图6.40枚举DBMS中的数据库36XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 第6步:枚举指定数据库中的表执行如下命令枚举指定数据库(DVWA)中的表,结果如图6.41所示。sqlmap-uhttp:/192.168.56.102/dvwa/vulnerabilities/sqli/?
23、id=asd&Submit=Submit#-cookie=security=low;PHPSESSID=b8fkg76oubth7bv28euhttnit5-Ddvwa-tables图6.41枚举指定数据库中的表37XXX 微信:XXX https:/ 实例使用SQLmap进行SQL注入 第7步:枚举指定表中的所有列执行如下命令枚举指定表(users)中的所有列,结果如图6.42所示。sqlmap-uhttp:/192.168.56.102/dvwa/vulnerabilities/sqli/?id=asd&Submit=Submit#-cookie=security=low;PHPSESSI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 数据库系统安全技术 数据库 系统安全 技术
限制150内