不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY等。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以利用该方法进行跨站跟踪攻击(即XST攻击),从而进行网站钓鱼、盗取管理员cookie等。
密码明文传输一般存在于web网站登录页面,用户名或者密码采用了明文传输,容易被嗅探软件截取。
如果默认密码可以预测并且用户在第一次使用后没有更改,就会导致该问题。用户使用了弱口令。
锁定机制用来减少针对密码的暴力猜解攻击
绕过验证跳转到登陆页面和直接调用只有通过认证才能被访问的内部页面。
会话操纵、会话标识未更新、浏览器缓存威胁
文件包含是指程序代码在处理包含文件的时候没有严格控制。导致用户可以构造参数包含远程代码在服务器上执行,并得到网站配置或者敏感文件,进而获取到服务器权限,造成网站被恶意删除,用户和交易数据被篡改等一系列恶性后果。主要包括本地文件包含和远程文件包含两种形式,由于开发人员编写源码,开放着将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行。由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行。文件包含攻击中WEB服务器源码里可能存在inlcude()此类文件包含操作函数,可以通过客户端构造提交文件路径,是该漏洞攻击成功的最主要原因。
目录浏览漏洞是由于网站存在配置缺陷,存在目录可浏览漏洞,这会导致网站很多隐私文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以更容易得到网站权限,导致网站被黑。风险:攻击者通过访问网站某一目录时,该目录没有默认首页文件或没有正确设置默认首页文件,将会把整个目录结构列出来,将网站结构完全暴露给攻击者。
攻击者可能通过浏览目录结构,访问到某些隐秘文件(如PHPINFO文件、服务器探针文件、网站管理员后台访问地址、数据库连接文件等)。
越权访问,这类漏洞是指应用在检查授权(Authorization)时存在纰漏,使得攻击者在获得低权限用户帐后后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能。
垂直越权漏洞,也称为权限提升,是一种“基于URL的访问控制”设计缺陷引起的漏洞。由于Web应用程序没有做权限控制或者仅在菜单上做了权限控制,导致恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
水平越权漏洞,是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人而导致的越权数据访问漏洞。如服务器端从客户端提交的request参数(用户能够控制的数据)中获取用户id,恶意攻击者通过变换请求ID的值,查看或修改不属于本人的数据。
目录遍历(任意文件下载)漏洞不同于网站目录浏览,此漏洞不仅仅可遍历系统下web中的文件,而且可以浏览或者下载到系统中的文件,攻击人员通过目录遍历攻击可以获取系统文件及服务器的配置文件等等。一般来说,他们利用服务器API、文件标准权限进行攻击。严格来说,目录遍历攻击并不是一种web漏洞,而是网站设计人员的设计“漏洞”。如果web设计者设计的web内容没有恰当的访问控制,允许http遍历,攻击者就可以访问受限的目录,并可以在web根目录以外执行命令。
跨站请求伪造攻击,Cross-Site Request Forgery(CSRF),攻击者在用户浏览网页时,利用页面元素(例如img的src),强迫受害者的浏览器向Web应用服务器发送一个改变用户信息的HTTP请求(恶意用户没有操作权限,于是构造操作链接让有权限的用户去执行,以此实现期望操作)。
CSRF攻击可以从站外和站内发起。
从站内发起CSRF攻击,需要利用网站本身的业务,比如“自定义头像”功能,恶意用户指定自己的头像URL是一个修改用户信息的链接,当其他已登录用户浏览恶意用户头像时,会自动向这个链接发送修改信息请求。
从站外发送请求,则需要恶意用户在自己的服务器上,放一个自动提交修改个人信息的htm页面,并把页面地址发给受害者用户,受害者用户打开时,会发起一个请求。
威胁描述:攻击者使用CSRF攻击能够强迫用户向服务器发送请求,导致用户信息被迫修改,甚至可引发蠕虫攻击。如果恶意用户能够知道网站管理后台某项功能的URL,就可以直接攻击管理员,强迫管理员执行恶意用户定义的操作。
服务端请求伪造攻击(Server-side Request Forgery): 很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务端请求伪造攻击(Server-side Request Forgery)。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
跨站脚本攻击的英文全称是Cross Site Script,为了和样式表区分,缩写为XSS。发生的原因是网站将用户输入的内容输出到页面上,在这个过程中可能有恶意代码被浏览器执行。跨站脚本攻击它指的是恶意攻击者往Web页面里插入恶意JavaScript代码,当用户浏览该页之时,嵌入其中Web里面的JavaScript代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。
已知的跨站脚本攻击漏洞有三种:1)存储式;2)反射式;3)基于DOM(文件对象模型)。
1)储型跨站脚本攻击涉及的功能点:用户输入的文本信息保存到数据库中,并能够在页面展示的功能点,例如用户留言、发送站内消息、个人信息修改等功能点。
2)射型跨站脚本攻击涉及的功能点:URL参数需要在页面显示的功能点都可能存在反射型跨站脚本攻击,例如站内搜索、查询功能点。
3)DOM跨站脚本攻击涉及的功能点:涉及DOM对象的页面程序,包括(不限这些):
document.URL
document.URLUnencoded
document.location
document.referrer
window.location
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。造成SQL注入漏洞原因有两个:一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。
可扩展标记语言(Extensible Markup Language, XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。XML注入攻击,和SQL注入的原理一样,都是攻击者输入恶意的代码来执行自身权限以外的功能。
XML是存储数据的一种方式,如果在修改或者查询时,没有做转义,直接输入或输出数据,都将导致XML注入漏洞。攻击者可以修改XML数据格式,增加新的XML节点,对数据处理流程产生影响。
XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击。漏洞是在对非安全的外部实体数据进行处理时引发的安全问题。
在XML1.0标准里,XML文档结构里定义了实体(entity)这个概念。实体可以通过预定义在文档中调用,实体的标识符可访问本地或远程内容。如果在这个过程中引入了“污染”源,在对XML文档处理后则可能导致信息泄漏等安全问题。
借助XXE,攻击者可以实现任意文件读取,DOS拒绝服务攻击以及代理扫描内网等。对于不同XML解析器,对外部实体有不同处理规则,在PHP中默认处理的函数为: xml_parse和simplexml_load。xml_parse的实现方式为expat库,默认情况不会解析外部实体,而simplexml_load默认情况下会解析外部实体,造成安全威胁。除PHP外,在Java,Python等处理xml的组件及函数中都可能存在此问题。
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。SSI可以称得上是那些资金短缺、时间紧张、工作量大的网站开发人员的最佳帮手。
(Server-side Includes)服务器端包含提供了一种对现有HTML文档增加动态内容的方法。apache和iis都可以通过配置支持SSI,在网页内容被返回给用户之前,服务器会执行网页内容中的SSI标签。在很多场景中,用户输入的内容可以显示在页面中,比如一个存在反射XSS漏洞的页面,如果输入的payload不是xss代码而是ssi的标签,服务器又开启了ssi支持的话就会存在SSI漏洞。
XPath注入攻击是指利用XPath解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。
XPath注入攻击利用两种技术,即XPath扫描和XPath查询布尔化。通过该攻击,攻击者可以控制用来进行XPath查询的XML数据库。这种攻击可以有效地对付使用XPath查询(和XML数据库)来执行身份验证、查找或者其它操作。XPath注入攻击同SQL注入攻击类似,但和SQL注入攻击相比较,XPath在以下方面具有优势。
Command Injection,即命令注入攻击,是指由于Web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。在命令注入的漏洞中,最为常见的是PHP的命令注入。PHP命令注入攻击存在的主要原因是Web应用程序员在应用PHP语言中一些具有命令执行功能的函数时,对用户提交的数据内容没有进行严格的过滤就带入函数中执行而造成的。例如,当黑客提交的数据内容为向网站目录写入PHP文件时,就可以通过该命令注入攻击漏洞写入一个PHP后门文件,进而实施进一步的渗透攻击。
HTTP响应头拆分漏洞(CRLF)是一种新型的web攻击方案,它重新产生了很多安全漏洞包括:web缓存感染、用户信息涂改、窃取敏感用户页面、跨站脚本漏洞。这项攻击方案包括其衍生的一系列技术产生,是由于web应用程序没有对用户的提交进行严格过滤,导致非法用户可以提交一些恶意字符,更具体来说,是对用户输入的CR和LF字符没有进行严格的过滤。
CRLF是”回车 + 换行”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting(HRS)。是应用程序没有正确的过滤用户提供的输入。远程攻击者可以利用这个漏洞影响或错误的显示Web内容服务、缓存或解释的方式,这可能帮助诱骗客户端用户,导致跨站脚本、缓存破坏或页面劫持等漏洞。
XFF,是X-Forwarded-for的缩写,XFF注入是SQL注入的一种,该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入,从而得到网站的数据库内容。
一个框架注入攻击是一个所有基于GUI的浏览器攻击,它包括任何代码如JavaScript、VBScript(ActivX)、Flash、AJAX(html+js+py)。代码被注入是由于脚本没有对它们正确验证,攻击者有可能注入含有恶意内容的frame或iframe标记。“链接注入”是修改站点内容的行为,其方式为将外部站点的URL嵌入其中,或将有易受攻击的站点中的脚本的URL嵌入其中。将URL嵌入易受攻击的站点中,攻击者便能够以它为平台来启动对其他站点的攻击,以及攻击这个易受攻击的站点本身。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成,这种纯文本的数据交互方式由于可以天然的在浏览器中使用,所以随着ajax和web业务的发展得到了广大的发展,各种大型网站都开始使用,包括Yahoo,Google,Tencent,Baidu等等,目前各银行都有用这种方式来实现数据交互。但是如果这种交互的方式用来传递敏感的数据,并且传输的时候没有做太多安全性控制的话将导致安全漏洞,根据敏感信息的不同导致会导致应用遭受不同级别的攻击。
脆弱的SSL加密算法,是一种常见的漏洞,且至今仍有大量软件支持低强度的加密协议,包括部分版本的openssl。其实,该低强度加密算法在当年是非常安全的,但时过境迁,飞速发展的技术正在让其变得脆弱。黑客可利用SSL弱加密算法漏洞进行SSL中间人攻击,即强迫服务器和用户之间使用低强度的加密方式,然后再通过暴力破解,窃取传输内容。强度较弱的加密算法将不能较好的保证通信的安全性,有被攻击者破解的风险。
验证码就是每次访问页面时随机生成的图片,内容一般是数字和字母(更变态点的有中文,现在已经升级到图片,动画等验证码),需要访问者把图中的数字字母填到表单中提交,这样就有效地防止了暴力破解。验证码也用于防止恶意灌水、广告帖等。在登陆的地方访问一个脚本文件,该文件生成含验证码的图片并将值写入到session里,提交的时候验证登陆的脚本就会判断提交的验证码是否与session里的一致。目前常常会出现验证码失效或者被绕过的可能,也成为了当前产生web漏洞的一个问题。
并发漏洞,常属于逻辑业务中的漏洞类型,例如攻击者通过并发http/tcp请求而达到多次获奖、多次收获、多次获赠等非正常逻辑所能触发的效果。
慢速攻击基于HTTP协议,通过精心的设计和构造,这种特殊的请求包会造成服务器延时,而当服务器负载能力消耗过大即会导致拒绝服务。HTTP协议规定,HTTP Request以\r\n\r\n(0d0a0d0a)结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n就会产生慢速攻击的漏洞,常见的Slowloris就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢地每隔几分钟发送一个key-value格式的数据到服务端,如a:b\r\n,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求\r\n\r\n,每隔几分钟写入一些无意义的数据流,拖死机器。
短信轰炸攻击时常见的一种攻击,攻击者通过网站页面中所提供的发送短信验证码的功能处,通过对其发送数据包的获取后,进行重放,如果服务器短信平台未做校验的情况时,系统会一直去发送短信,这样就造成了短信轰炸的漏洞。
文件上传漏洞,直面意思可以利用WEB上传一些特定的文件。一般情况下文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件上传本身是web中最为常见的一种功能需求,关键是文件上传之后服务器端的处理、解释文件的过程是否安全。一般的情况有:
1)上传Web脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行。
2)上传Flash策略文件crossdomain.xml,以此来控制Flash在该域下的行为。
3)上传病毒、木马文件,攻击者用以诱骗用户或管理员下载执行。
4)上传钓鱼图片或包含了脚本的图片,某些浏览器会作为脚本执行,实施钓鱼或欺诈。
Web控制台是一种基于Web的用户界面,其常常被用于网站后台或者web容器控制台中,其不仅仅局限于容器或者网站管理后台,还包括一些数据库默认地址等。在web安全中,网站系统在泄漏其web容器(中间件)或者数据库的控制台后,存在增加被入侵的风险。常见的web控制台包括以下多种:tomcat、aria2、weblogic、websphere、oracle、jboss等。
报错信息中包含了大量的有关数据库、Bug或其他与web应用直接关联的技术组件相关的技术信息。
版本管理工具文件信息泄漏。据介绍,SVN(subversion)是程序员常用的源代码版本管理软件。一旦网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为黑客获取到网站源代码后,一方面是掠夺了网站的技术知识资产,另一方面,黑客还可通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁。更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
备份文件泄露,在web服务中,常常不局限于网站的源代码泄露,网站的数据库备份文件,以及上传的敏感文件,或者一切正常备份,原则不允许访问的文件可被通过访问web路径进行下载得到,造成其信息泄露。有效的帮助攻击者理解网站应用逻辑,为展开其他类型的攻击提供有利信息,降低攻击的难度,可以进一步获取其他敏感数据。
网站的内部IP地址,常常被攻击者通过信息收集,得到其内网的IP地址,对于渗透攻击,打下良好基础,如内网Ip地址段,IP路由等等。常见的泄露内网IP的web容器有IIS。
cookie的属性设置不当可能会造成系统用户安全隐患,Cookie信息泄露是Cookie http only配置缺陷引起的,在设置Cookie时,可以设置的一个属性,如果Cookie没有设置这个属性,该Cookie值可以被页面脚本读取。例如:当攻击者发现一个XSS漏洞时,通常会写一段页面脚本,窃取用户的Cookie,如果未设置http only属性,则可能导致用户Cookie信息泄露,攻击者能够利用该用户的身份进行系统资源访问及操作。
未自定义统一错误页面导致信息泄露,抛出异常信息泄露,错误详情信息泄漏。
敏感数据包括但不限于:口令、密钥、证书、会话标识、License、隐私数据(如短消息的内容)、授权凭据、个人数据(如姓名、住址、电话等)等,在程序文件、配置文件、日志文件、备份文件及数据库中都有可能包含敏感数据。
搜索引擎可以通过robots文件可以获知哪些页面可以爬取,哪些页面不可以爬取。Robots协议是网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯,如果robots.txt文件编辑的太过详细,反而会泄露网站的敏感目录或者文件,比如网站后台路径,从而得知其使用的系统类型,从而有针对性地进行利用。
服务端未对传入的跳转url变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息,或欺骗用户进行金钱交易;也可能引发的XSS漏洞(主要是跳转常常使用302跳转,即设置HTTP响应头,Locatioin: url,如果url包含了CRLF,则可能隔断了http响应头,使得后面部分落到了http body,从而导致xss漏洞)。另外在struts2中存在重定向的漏洞,是因为struts2由于缩写的导航和重定向前缀“action:”、“redirect:”、“redirectAction:”等参数前缀的内容没有被正确过滤导致的开放式重定向漏洞。
摘抄自csdn用户:https://blog.csdn.net/wutianxu123/article/details/82597337