您的位置:首页网络冲浪网络技术 → 处理HTML的一些简单想法

处理HTML的一些简单想法

时间:2009/11/10 11:01:00来源:本站整理作者:我要评论(0)

From http://www.loveshell.net 剑心
  HTML injection的背景:
  1  现在的XSS就是跨站脚本攻击一般都是在有服务器交互的情况下在客户端产生的一些问题,那么在没有服务器交互的情况下呢?
  2  另外就是很多人都认为html文件是绝对安全的,那么真的是这样么?
  什么是HTML injection:
  有交互才会产生漏洞,无论交互是怎么进行的,HTML文件并不是像大家想的那样没有任何交互,在HTML文件里还是会用到一些javascript来完成自己需要的一些动态效果,这样其实交互的地方还是有的,譬如地址栏的参数也就是location,用户所做的点击触发的事件,以及一些动态的DOM交互都会影响到javascript的执行导致漏洞的产生。
  为什么要做HTML injection:
  在Windows本地存在大量的HTML文件,如果这些HTML文件可以被injection的话,那么就可以利用本地的HTML文件在本地域内执行javascript,权限是非常高的。
  如何寻找HTML injection:
  寻找交互的地方:交互的地方就是上面说的地址栏等可能可以交互的地方,最常用的就是地址栏了,也就是javascript里的location,所以在HTML文件里寻找location.可能找到你需要的东西。
  寻找危险的操作:HTML里危险的操作包括document.write,eval,对innerHTML这些属性的操作等等都可能会造成jnjection,当然也包括一些其他的可能导致执行脚本的操作。
  实际的一个例子:
  如果你安装了iis,那么很容易在c:\windows\Help\iisHelp\common\下面找到类似于下面的代码:
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  <html dir=ltr>
  <head>
  <style>
  a:link      {font:9pt/11pt 宋体; color:FF0000}
  a:visited    {font:9pt/11pt 宋体; color:#4e4e4e}
  </style>
  <META NAME="ROBOTS" CONTENT="NOINDEX">
  <title>无法显示网页</title>
  <META HTTP-EQUIV="Content-Type" Content="text-html; charset=gb2312">
  </head>
  <script>
  function Homepage(){
  <!--
  // in real bits, urls get returned to our script like this:
  // res://shdocvw.dll/http_404.htm#http://www.DocURL.com/bar.htm
  //For testing use DocURL = "res://shdocvw.dll/http_404.htm#https://www.microsoft.com/bar.htm"
  DocURL=document.URL;
  //this is where the http or https will be, as found by searching for :// but skipping the res://
  protocolIndex=DocURL.indexOf("://",4);
  //this finds the ending slash for the domain server
  serverIndex=DocURL.indexOf("/",protocolIndex + 3);
  //for the href, we need a valid URL to the domain. We search for the # symbol to find the begining
  //of the true URL, and add 1 to skip it - this is the BeginURL value. We use serverIndex as the end marker.
  //urlresult=DocURL.substring(protocolIndex - 4,serverIndex);
  BeginURL=DocURL.indexOf("#",1) + 1;
  urlresult=DocURL.substring(BeginURL,serverIndex);
  //for display, we need to skip after http://, and go to the next slash
  displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);
  insertElementAnchor(urlresult, displayresult);
  }
  function HtmlEncode(text)
  {
  return text.replace(/&/g, '&amp').replace(/'/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  }
  function TagAttrib(name, value)
  {
  return ' '+name+'="'+HtmlEncode(value)+'"';
  }
  function PrintTag(tagName, needCloseTag, attrib, inner){
  document.write( '<' + tagName + attrib + '>' + HtmlEncode(inner) );
  if (needCloseTag) document.write( '</' + tagName +'>' );
  }
  function URI(href)
  {
  IEVer = window.navigator.appVersion;
  IEVer = IEVer.substr( IEVer.indexOf('MSIE') + 5, 3 );
  return (IEVer.charAt(1)=='.' && IEVer >= '5.5') ?
  encodeURI(href) :
  escape(href).replace(/%3A/g, ':').replace(/%3B/g, ';');
  }
  function insertElementAnchor(href, text)
  {
  PrintTag('A', true, TagAttrib('HREF', URI(href)), text);
  }
  //-->
  </script>
  <body bgcolor="FFFFFF">
  <table width="410" cellpadding="3" cellspacing="5">
  <tr>
  <td align="left" valign="middle" width="360">
  <h1 style="COLOR:000000; FONT: 12pt/15pt 宋体"><!--Problem-->无法显示网页</h1>
  </td>
  </tr>
  <tr>
  <td width="400" colspan="2">
  <font style="COLOR:000000; Font: 9pt/11pt 宋体">试图访问的网页出现问题,无法显示。</font></td>
  </tr>
  <tr>
  <td width="400" colspan="2">
  <font style="COLOR:000000; FONT: 9pt/11pt 宋体">
  <hr color="#C0C0C0" noshade>
  <p>请尝试执行下列操作:</p>
  <ul>
  <li>打开
  <script>
  <!--
  if (!((window.navigator.userAgent.indexOf("MSIE") > 0) && (window.navigator.appVersion.charAt(0) == "2")))
  {
  Homepage();
  }
  //-->
  </script>
  主页,然后查找与所需信息相关的链接。</li>
  <li>单击<a href="javascript:location.reload()">刷新</a>按钮,或稍后重试。<br>
  </li>
  </ul>
  <h2 style="font:9pt/11pt 宋体; color:000000">HTTP 错误 414 - 请求 - URI 太长<br> Internet 信息服务</h2>
  <hr color="#C0C0C0" noshade>
  <p>技术信息(用于支持人员)</p>
  <ul>
  <p>
  <li>背景<br>
  <p>请求的 URI 太长,服务器拒绝处理请求。这种情况仅在下列情形下才会发生:</p>
  <p>客户端错误地将 POST 请求转换为带有长查询信息的 GET 请求。</p>
  <p>客户端遇到重定向问题(例如,重定向 URL 的前缀指向自身的后缀)。</p>
  <p>服务器遭到客户端的攻击,该客户端试图找出那些使用定长缓冲区来读取或控制请求 URI 的服务器上的安全漏洞。</p>
  </li>
  <li>详细信息:<br><a href="http://www.microsoft.com/ContentRedirect.asp?prd=iis&sbp=&pver=5.0&pid=&ID=414&cat=web&os=&over=&hrd=&Opt1=&Opt2=&Opt3=" target="_blank">Microsoft 支持</a>
  </li>
  </ul>
  </font></td>
  </tr>
  </table>
  </body>
  </html>
  注意其中使用了DocURL=document.URL也就是地址栏参数,这些参数在后面参与了各种运算和操作,跟踪这个参数最后可以见到是进入了document.write的,不过之前是做了htmlEncode,不过还是没关系,我们可以用javascript:[code]的形式执行需要的代码
  file:///C:/WINDOWS/Help/iisHelp/common/400.htm#javascript:alert('loveshell')/
  将产生一个连接,点击的话代码将会执行,但是也可以很遗憾地注意到,在这之前IE会提示说有代码会执行......
  我们在YY么:
  在Windows下面存在大量的HTML文件,甚至包括chm里面带的HTML文件,dll文件里的HTML资源文件,这种漏洞只要挖掘还是会有的,在老版的IE里是允许用iframe和a这些标签引用本地文件的,但是在IE的新版里禁止了这种操作,注意是IE禁止了这种操作,那么其他的程序呢?譬如realone,譬如其他的协议hcp?

本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:http://hackbase.com/tech/2009-11-10/57837.html

相关视频

    没有数据

相关阅读 HTML怎么级联编号 HTML级联编号如何实现HTML5小游戏 HTML5在线游戏试玩地址 HTML5游戏大全Mac看HTML5视频教程Mac上优酷看HTML5视频教程Safari插件推荐:自动转Flash为Html5教您如何把flash转换为html5苹果产品获取优酷HTML5播放真实地址的方法html文件打开出错解决办法

文章评论
发表评论

热门文章 小米路由器设置教程附共享有线路由后再接无TP-link无线路由器设置D-Link DI-524M路由器

最新文章 百度网盘解除黑名单摆百度不收录怎么办 百度 10款免费开源图表插件推荐ssid隐藏了怎么办?隐藏SSID的无线网络如何OneDNS设置教程两块网卡访问不同网络案例分享

人气排行 宽带连接图标不见了怎么办 宽带连接图标怎么dell 服务器开机总是提示按F1才能进系统解决dns是什么?dns怎么设置?buffalo无线路由器设置图文教程哪种WIFI无线各种加密方式更安全?ADSL宽带连接错误(720)及解决方法双网卡同时上内外网设置教程公司网络综合布线图解