设为主页 | 加入收藏 | 繁體中文

数据库入侵方法


  我们就可以进入了。。。
  有履历的用户就在程序中增加对单引号等特殊字符的过滤。
  但是,一样平常人习惯上有两种登录认证方式我就用ASP的VBScript做例子了:
  一是用select * from ... where username = ' & Request.form("username") & "password = " & Request.form("password"),然后果断结果能否为空来验证。实在还有一种方式:
  用select * from ... where username = ' & Request.form("username"), 然后果断结果会合的暗码能否和输出雷同来验证,这种方式就安全一些了。
  3。利用多语句执行毛病。
  凭据上面的思绪,如果用户凭据书名(比方linux入门)查询所有的书,SQL语句为
  select book.name,book.content from book where bookname='linux入门'
  如果我们输出的不是linux入门而是 linux入门' delete from user where '1' = '1
  从而构成对表的删除。
  成功的条件条件是对方允许多条语句的执行。
  由于程序没有处理界限符“'”孕育发生的毛病的危害水平和结果集的类型及数据库的设置装备摆设有很大的干系。起首说结果集,如果结果集只支持单条的SQL语句,那么你所能做的只是上面提到的那种在暗码框内输出' or '1' = '1来登录,其他的做不了。
  我们还可以用这种方法在数据库里增加用户。
  4。SQL Server装完后自动创立一个办理用户sa,暗码为空。而很多多少人装完后并不去改暗码,这样就留下了一个极大的安全题目,我稍后再细说。
  程序中的毗连一样平常用两种,不是用global.asa便是用SSL文件。SSL文件一样平常人习惯放到到Web的/include或/inc目录下。而且文件名常会是conn.inc、db_conn.inc、dbconninc,等等,横竖有时能猜到。
  如果这个目录没有禁读,一旦猜到文件名就可以了,因为.inc一样平常不会去做联系干系的,直接请求不是下载便是表现源文件。
  还有当重要程序放到一个后缀为.inc的文件而没有处理“'”,当运行堕落时返回的堕落信息中常会暴露.inc文件,我遇到过频频这样的情况。实在可以在IIS里设置来不回应脚本堕落信息的。
  5。数据库的利用。
  如果程序中的毗连用户权限极小,乃至多数表只能读,你就很难有所作为了。这时所能做的是能猜出表名和字段名来举行删除数据或表的操作。
  INSERT语句利用起来讨厌一些,重要是里面有很多多少列,而且还要处理失最后的“)”。
  我就以我最熟习的MS SQL Server来说一些吧。它的默认端标语是1433,你用telnet连一下服务器的这个端口,如果能连上去一样平常是装了MS SQL Server,固然这是可以改失的。
  好了,说一说数据库的利用。
  如果对方的数据直接在Web服务器上而且你晓得端标语,有帐号就干脆用SQL Analyzer来直接毗连数据库。在它里面可以执行SQL语句。常用的是存储历程master.dbo.xp_cmdshell,这是一个扩展存储历程,它只有一个参数,把参数做为体系命令来装给体系执行。
  如果是办理用户就有权执行这个存储历程,而且这时可以执行很多操作,如用ipconfig来看ip设置,用net user来看体系用户。不外用net user /add 用户名 暗码并纷歧定成功,有时会返回一个“指定的登录会话不存在”而不克不及执行,缘故原由我还不明白。
  如果没有权限也没干系,MS SQL Server有个毛病,你可以创立一个临时存储历程来执行,就可以绕过去,如:
  CREATE PROC #cmdshell(@cmdstr varchar(200))
  AS
  EXEC master.dbo.xp_cmdshell @cmdshell
  固然这时是没有权限执行net user /add等的,不外可以查看,可以创立文件。
  反复用echo创立一个FTP脚本,把木马传到一个FTP站点上,然后用存储历程挪用ftp来利用脚本来下载并安装,然后......呵呵:)
  如果数据库没有装在Web服务器上所以没有找到或改了端标语而临时找不到照旧有措施的。
  如果数据库服务器直接从Internet上无法拜访,你可以利用程序里的毛病来删除、修改数据或参加java script语句到数据库,通常他们表现本来应该本身人录入的数据时不去过滤<>,所以可以用java script把它转到其他站点上或做些什么。
  如果只是改了端标语就要看程序里数据库用户的权限了,如果是办理用户,可以用' exec master.dbo.xp_cmshell 'net user /add aaa bbb来创立一个操作体系用户,然后再用' exec master.dbo.xp_cmdshell 'net localgroup /add administrators aaa来把它升级为超级用户。
  如果这台服务器的NetBIOS绑定了TCP/IP,而且C$、D$等办理共享存在,呵呵,祝贺了,你在DOS命令下用net use Z: \ip address$ "bbb" /user:"aaa"就可以把对方的整个C盘映射为你当地的一个网络驱对器Z:了。
  6。数据库里如何留后门。
  创立用户的sp_addlogin、权限分配的sp_addsrvrolemember是用一条语句来果断用户能否有权限执行,也便是说用户都可以执行它,它再来果断用户能否有权执行。
  当你攻入一个数据库时可以用它的Enterprise Manager来连上去修改这些存储历程,因为这些存储历程都没有加密。
  可以在果断的中央加个条件,当这个条件餍足时就不直接执行下去而不论是什么权限的用户挪用它。
  不外改完要细致,这时它的Type成了User,要想改回可以到sysobjects表中把name为sp_addlogin的一条删除,然后再把没有自新的雷同版本的MS SQL Server的同一条记载拷贝进去就可以了。
  固然不要忘了这些默认是不克不及手工修改的,要修改得先把失SQL Server的参数,改完不要忘了再改返来啊:) 这时只要网站的程序有题目,不论程序中的用户权限如何,你都可以随时创立SQL Server的办理用户。
  7。数据库扫描东西。
  ISS DATABASE Scanner
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: