Evo. G Tech Team Forum
Welcome to Evo. G Tech Team Forum. We have moved to a new website : www.evogtechteam.com

Thanks you.

by Evo. G Tech Team Management.

【转载】【分享】漏洞类

Go down

【转载】【分享】漏洞类 Empty 【转载】【分享】漏洞类

Post by cyjian on December 12th 2014, 09:52

ASP网站漏洞解析及黑客攻击防范方法


如何更好的达到防范黑客攻击,本人提一下个人意见!第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码。如果在细节上注意 防范,那样你站点的安全性就大大的提高了。即使出现了SQL Injection这样的漏洞,攻击者也不可能马上拿下你的站点。
  由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言。但是, 由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机。事实上,安全不仅是网管的事,编程人员也必须在某些安全细节上注意,养成良好的安全习 惯,否则会给自己的网站带来巨大的安全隐患。目前,大多数网站上的ASP程序有这样那样的安全漏洞,但如果编写程序的时候注意一点的话,还是可以避免的。
  1、用户名与口令被破解
  攻击原理:用户名与口令,往往是黑客们最感兴趣的东西,如果被通过某种方式看到源代码,后果是严重的。
  防范技巧:涉及用户名与口令的程序最好封装在服务器端,尽量少在ASP文件里出现,涉及与数据库连接的用户名与口令应给予最小的权限。出现次数多的用 户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及与数据库连接,在理想状态下只给它以执行存储过程的权限,千万不要直接给予该用户修改、插入、 删除记录的权限。
  2、验证被绕过
  攻击原理:现在需要经过验证的ASP程序大多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入。
  防范技巧:需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。
  3、inc文件泄露问题
  攻击原理:当存在ASP的主页正在制作且没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中查看到数据库地点和结构的细节,并以此揭示完整的源代码。
  防范技巧:程序员应该在网页发布前对它进行彻底的调试;安全专家则需要加固ASP文件以便外部的用户不能看到它们。首先对.inc文件内容进行加密, 其次也可以使用.asp文件代替.inc文件使用户无法从浏览器直接观看文件的源代码。inc文件的文件名不要使用系统默认的或者有特殊含义容易被用户猜 测到的名称,尽量使用无规则的英文字母。
4、自动备份被下载
  攻击原理:在有些编辑ASP程序的工具中,当创建或者修改一个ASP文件时,编辑器自动创建一个备份文件,比如:UltraEdit就会备份一 个.bak文件,如你创建或者修改了some.asp,编辑器会自动生成一个叫some.asp.bak文件,如果你没有删除这个bak文件,攻击者可以 直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。
  防范技巧:上传程序之前要仔细检查,删除不必要的文档。对以BAK为后缀的文件要特别小心。
  5、特殊字符
  攻击原理:输入框是黑客利用的一个目标,他们可以通过输入脚本语言等对用户客户端造成损坏;如果该输入框涉及数据查询,他们会利用特殊查询语句,得到 更多的数据库数据,甚至表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查,仍有可能被绕过。
  防范技巧:在处理类似留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript语句,如无特殊要求,可以 限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但要在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检 查。
  6、数据库下载漏洞
  攻击原理:在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他也能够下载这个Access数据库文件,这是非常危险的。
  防范技巧:
 (1)为你的数据库文件名称起个复杂的非常规的名字,并把它放在几层目录下。所谓 “非常规”, 打个比方说,比如有个数据库要保存的是有关书籍的信息, 可不要给它起个“book.mdb”的名字,而要起个怪怪的名称,比如d34ksfslf.mdb, 并把它放在如./kdslf/i44/studi/的几层目录下,这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。
 (2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:
  DBPath = Server.MapPath(“cmddb.mdb”)
  conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath
  假如万一给人拿到了源程序,你的Access数据库的名字就一览无余了。因此建议你在ODBC里设置数据源,再在程序中这样写:
  conn.open“shujiyuan”
 (3)使用Access来为数据库文件编码及加密。首先在“工具→安全→加密/解密数据库”中选取数据库(如:employer.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,可存为:“employer1.mdb”。
  要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。
  接下来我们为数据库加密,首先打开经过编码了的 employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具→安全→设置数据库密码”,接着输入密码即可。这样即使他人得到了 employer1.mdb文件,没有密码他也是无法看到 employer1.mdb中的内容。7、防范远程注入攻击
  这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.
  比如:
  If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd") =”fqy#e3i5.com” then
  ……..more………
  End if
  我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:
  if not (rs.BOF or rs.eof) then
  login="true"
  Session("username"&sessionID) = Username
  Session("password"& sessionID) = Password
  ‘Response.cookies(“username”)= Username
  ‘Response.cookies(“Password”)= Password
  下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了.
  怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9)
  <%
  server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
  server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
  if mid(server_v1,8,len(server_v2))<>server_v2 then
  response.write "<br><br><center>"
  response.write " "
  response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱改参数!"
  response.write "
"
  response.end
  end if
  %>
‘个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个.
  ‘这个是过滤效果很好,建议使用.
  if instr(request.servervariables("http_referer"),"http://"&request.servervariables("host/") )<1 then response.write "处理 URL 时服务器上出错。
如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与国家安全部门来调查你的IP. "
  response.end
  end if
  程序体(9)
  本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者 可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章:
  ------------len.reg-----------------
  Windows Registry Editor Version 5.00
  [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&E)]
  @="C:\Documents and Settings\Administrator\桌面\len.htm"
  "contexts"=dword:00000004
  -----------end----------------------
  -----------len.htm------------------
  
  ----------end-----------------------
  用法:先把len.reg导入注册表(注意文件路径)
  然后把len.htm拷到注册表中指定的地方.
  打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧
  单击搞定! 后记:同样的也就可以对付那些限制输入内容的脚本了.
  怎么办?我们的限制被饶过了,所有的努力都白费了?不,举起你de键盘,说不。让我们继续回到脚本字符的过滤吧,他们所进行的注入无非就是进行脚本攻 击。我们把所有的精力全都用到ACTION以后的页面吧,在chk.asp页中,我们将非法的字符全部过滤掉,结果如何?我们只在前面虚晃一枪,叫他们去 改注册表吧,当他们改完才会发现,他们所做的都是那么的徒劳。8、ASP木马
  已经讲到这里了,再提醒各位论坛站长一句,小心你们的文件上传:为什么论坛程序被攻破后主机也随之被攻击者占据。原因就在……对!ASP木马!一个绝 对可恶的东西。病毒么?非也.把个文件随便放到你论坛的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木马被上传到服务器呢?方法很简单,如果你 的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式,和压缩文件就完全可以,多给自己 留点方便也就多给攻击者留点方便。怎么判断格式,我这里收集了一个,也改出了一个,大家可以看一下:
  程序体(10)
  '判断文件类型是否合格
  Private Function CheckFileExt (fileEXT)
  dim Forumupload
  Forumupload="gif,jpg,bmp,jpeg"
  Forumupload=split(Forumupload,",")
  for i=0 to ubound(Forumupload)
  if lcase(fileEXT)=lcase(trim(Forumupload(i))) then
  CheckFileExt=true
  exit Function
  else
  CheckFileExt=false
  end if
  next
  End Function
  ‘验证文件内容的合法性
set MyFile = server.CreateObject ("Scripting.FileSystemObject")
  set MyText = MyFile.OpenTextFile (sFile, 1) ' 读取文本文件
  sTextAll = lcase(MyText.ReadAll): MyText.close
  '判断用户文件中的危险操作
  sStr ="8 .getfolder .createfolder .deletefolder .createdirectory 
  .deletedirectory"
  sStr = sStr & " .saveas wscript.shell script.encode"
  sNoString = split(sStr," ")
  for i = 1 to sNoString(0)
  if instr(sTextAll, sNoString(i)) <> 0 then
  sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
  Response.write "<center><br><big>"& sFileSave &"文件中含有与操作目录等有关的命令"&_
  "<br><font color=red>"& mid(sNoString(i),2) &"</font>,为了安全原因,<b>不能上传。<b>"&_"</big></center></html>"
  Response.end
  end if
  next
  程序体(10)
  把他们加到你的上传程序里做一次验证,那么你的上传程序安全性将会大大提高.
  什么?你还不放心?拿出杀手锏,请你的虚拟主机服务商来帮忙吧。登陆到服务器,将PROG ID 中的"shell.application"项和"shell.application.1"项改名或删除。再将”WSCRIPT.SHELL”项 和”WSCRIPT.SHELL.1”这两项都要改名或删除。呵呵,我可以大胆的说,国内可能近半以上的虚拟主机都没改过。只能庆幸你们的用户很合作,否 则……我删,我删,我删删删……
比较常见的一些漏洞和描述


在这里以window xp系统为例来进行介绍,其常见的系统漏洞如下。

1.UPNP 服务漏洞
漏洞描述:应许攻击者执行任意指令。
Window XP 默认启动的UPNP(Universal Plug and Play)服务存在严重的安全漏洞。UPNP体系面向无线设备、办公用网络设备间提供     TCP/IP连接和Web访问功能,该服务可用于检测和集成UPNP硬件。
UPNP 协议存在的安全漏洞使攻击者可无法获取任何Window XP的系统访问权限,从而进行攻击,还可通过控制多台装有Window XP 系统的计算机发起分布式攻击。

2.升级程序漏洞
漏洞描述:如将Window XP 升级至Window XP Pro,会重新安装IE,以前打的IE补丁程序将被全部清除。
Window XP的升级程序不仅会删除IE的补丁文件,还会导致微软的升级服务器无法正确识别IE是否存在缺陷,即Window XP Pro系统存在以下两个潜在威胁:
1.某些网页或HTML邮件的脚本可自动调用Window的程序。
2.可通过IE漏洞窥视用户的计算机文件。

3.帮助和支持中心漏洞
漏洞描述:删除用户系统的文件。
通 过帮助和支持中心提供的集成工具,用户可获取针对各种主题的帮助和支持。Window XP帮助和支持中心存在的漏洞,可使攻击者跳过特殊网页(在打开该网页时调用错误的函数,并将存在的文件或文件夹名字作为参数传送)使上传文件或文件夹的 操作失败。随后该网页可在网站上公布,以攻击访问该网站的用户或被作为邮件传播来攻击。攻击者利用该漏洞只可删除文件,不会获得其他权利,因此,攻击者既 无法获取系统管理员的权限,也无法读取或修改文件。

4.压缩文件夹漏洞
漏洞描述:Window XP的压缩文件夹可按攻击者的选择运行代码。
在安装有Plus包的Window XP系统中,“压缩文件夹”功能应许将ZIP文件作为普通文件夹处理。“压缩文件夹”功能存在以下两个漏洞:
1.在解压ZIP文件时,会有未经检查的缓冲存在于程序中以存放被解压文件,因此很可能导致浏览器崩溃或攻击者的代码被运行。
2.解压缩功能在非用户指定目录中放置文件,这样,攻击者可在用户系统的已知位置中放置文件。

5.服务拒绝漏洞
漏洞描述:服务拒绝。
Window XP 支持点对点协议(PPTP)作为远程访问服务实现的虚拟专用技术。由于在其控制用于建立,维护和扯开PPTP连接的代码段中存在未经检查的缓存,导致 Window XP的实现中存在漏洞。通过向一台存在该漏洞的服务器发送不正确的PPTP控制数据,攻击者可损坏核心内存并导致系统失效,中断所有系统中正在运行的进 程。该漏洞可攻击任何一台提供PPTP服务的服务器。对于PPTP客服端的工作站,攻击者只须激活PPTP会话即可进行攻击。对任何遭到攻击的系统,可通 过重启来恢复正常操作。

6.Windows Media Player漏洞
漏洞描述:可能导致用户信息的泄露;脚本调用;缓存路径泄露。
Window Media Player 漏洞主要产生三个问题:一是用户信息的泄露,它给攻击者提供了一种可在用户系统上运行代码的方法,微软对其定义的严重级别为“严重”。二是脚本调用,当用 户选择播放一个特殊的媒体文件,接着又浏览一个特殊建造的网页后,攻击者就可以利用该漏洞运行脚本。由于该漏洞有特别的时序要求,因此利用该漏洞进行攻击 就相对比较困难,它的严重级别就相对比较低。三是缓存路径泄露,即DNS缓存漏洞,此漏洞直指互联网用中脆弱的安全系统,而安全性差的根源在于设计缺陷。

7.RDP漏洞
漏洞描述:信息泄露并拒绝服务。
Window 操作系统通过RDP(Remote Desktop Protocol,远程桌面协议)为客户端提供远程终端会话。RDP 协议将终端会话的相关硬件信息传送至远程客户端,其漏洞如下所述。
1. 与某些 RDP 版本的会话加密实现有关的漏洞。所有RDP 实现均允许对RDP 会话中的数据进行加密,然而在Windows 2000和Windows XP版本中,纯文本会话数据的校验在发送前并未经过加密。窃听并记录 RDP 会话的攻击者可对该校验密码分析攻击并覆盖该会话传输。
2.与Windwos XP中的 RDP 实现对某些不正确的数据包处理方法有关的漏洞。在Window XP中,当接收这些数据包时,远程桌面服务将会失效,同时也会导致操作系统失效。当攻击者只需向一个已受影响的系统发送这类数据包时,并不需经过系统验证。

8.VM漏洞
漏洞描述:可能造成信息泄露,并执行攻击者的代码。
攻击者可通过向 JDBC 类传送无效的参数使宿主应用程序崩溃,攻击者需在网站上拥有恶意的Java applet 并引诱用户访问该站点。攻击者可在用户计算机上安装任意DLL,并执行任意的本机代码,潜在地破坏或读取内存数据。

9.热键漏洞
漏洞描述:设置热键后,由于Windows XP的“自注销”功能,可使系统“假注销”,即可通过热键调用程序。
热键功能是系统提供的服务,当用户离开计算机后,该计算机即处于未保护状态。此时,Windows XP会自动实施“自注销”。这时虽然无法进了桌面,但由于热键服务还未停止,仍可使用热键启动应用程序。

10.帐号快速切换漏洞
漏洞描述:Windows XP帐号快速切换功能存在问题可被造成帐号锁定,使所有非管理员帐号均无法登录。
Windows XP系统设计了帐号快速切换功能,使用户可快速地在不同的帐号间切换,但其设计存在问题,可被用于造成帐号锁定,使所有非管理员帐号均无法登录。配合帐号 锁定功能,用户可利用帐号快速切换功能,以另一个用户名快速重试登录,系统则会认为判别为暴力破解,从而导致非管理员帐号锁定。
网站安全之XSS漏洞攻击以及防范措施



XSS漏洞是网站漏洞中最容易出现的一种,至少现在的各大网站中基本都存在,传闻只有gmail是唯一一个完全不存在的,或者说攻击者没找出漏洞的,也许 是因为XSS漏洞看起来危害并不是那么的大吧,所以基本上没有得到过太大的重视,从而也就造成了这么多的网站存在着一些很简单就能发现的XSS漏洞,在这 篇blog中以我这个网站安全的外行人的角度来侃侃XSS漏洞攻击以及防范的措施。


XSS漏洞的出现简单来说,就是让不支持富 文本的区域支持了富文本的执行,例如blog的标题是不支持富文本的,但由于页面显示时没去做处理,导致了可以在标题中嵌入像文本加粗、变颜色等等的普通 HTML,当然,攻击者也就可以嵌入恶意的javascript了,例如获取你在当前网站的cookie的 javascript:document.cookie等等,另外一种就是支持富文本的区域没有去过滤一些恶意的javascript,例如blog的文 章内容中内嵌获取cookie等恶意的javascript代码,这两类现象太多了,反倒是富文本的区域会好一些,例如多数论坛采用的UBB等等,而且对 于富文本,大家都会比较重视,但反而是非富文本区域,很容易忽略其会产生XSS漏洞。


上面说的好像有些太抽象了,举个例子来说 吧,例如blog的标题,假设在存到数据库的时候是直接将blog标题文本框中的内容存储,在显示的时候直接用$blog.title这样的方式去显示的 话,那么只要在blog标题中输入alert(document.cookie);,然后保 存,在显示的时候这段javascript就会被正常执行了,虽然这样的看似没有什么大的危害,但攻击者同样不会采取这么简单的方式,例如可以直接给你一 段经过url编码的串,而其中就是利用网站的XSS漏洞将你的cookie信息发送至一个攻击性质的记录cookie的网站等,又或者完全可以利用网站的 XSS漏洞埋上一段隐藏的img来嵌入这样而已的url,那么你的cookie就会不知不觉的被盗用,而偏偏现在大部分的网站都是借助cookie来代表 用户的身份,这样,当攻击者拿到cookie之后,也就可以假冒你的身份大摇大摆的进入相应的网站了。


上面说的是比较典型的一 种XSS漏洞产生的情况,另外一种比较典型的是domxss的情况,这种情况多数是攻击者利用直接闭合标签,从而执行恶意的javascript代码,例 如页面中有个文本框,这个文本框的内容在提交后会被记录并继续显示在结果页面的文本框架中,假设第二个页面中文本框是这么写 的:,那么只要在前一页面中输入">& lt;script>alert(document.cookie);这样的内容,在第二个页面显示的时候就会变 成:alert

(document.cookie);
>, 攻击者通过闭合input标签实现了执行恶意的javascript代码,同样,如果你的javascript中也有类似的读取url参数或前页提交的内 容,又或数据库中的内容的话,攻击者都有可能利用这种闭合标签的方式来实施攻击。


这样看起来,产生XSS漏洞的地方确实可能会 有很多,说完上面这些,大家估计仍然觉得xss漏洞即使被利用也没什么吧,确实,也许xss漏洞只能做到盗用个用户cookie来玩玩,但是一旦它盗用了 cookie,然后再结合一些其他的攻击手段,例如csrf的话,很有可能会造成非常严重的后果,当年的MySpace攻击事件就源于此,更何况对于大部 分的网站来说,用户身份被盗也不是什么好事。


因此还是有必要对XSS漏洞进行防范的,根据上面阐述的XSS漏洞产生的原因来 说,对于非富文本的区域来讲,其实只需要对其进行HTML编码就没问题了,而对于富文本的区域,则相对麻烦一些,需要有一个有效的过滤攻击性质的html 代码的方式,但这个确实很难很难完全做到100%的防范,因为编写恶意html代码的方式实在太多了,url编码方式,注释方式,十六进制方式等等,完全 无法穷举,但目前出现在网站中的,其实大部分都是非富文本的XSS漏洞,只要对这些非富文本的XSS漏洞进行了防范的话,至少可以很大程度的提升网站攻击 的门槛,不至于被一些很简单的攻击手段攻击,像freemarker模板中,可以直接支持变量字符的html编码,例如${user?html}这样的方 式就可以了,还是很简单的。

cyjian
Spammer
Spammer

Posts : 211
Points : 40235
Reputation : 0
Join date : 2014-06-18

Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum