核心内容摘要
Oauth2Request
随着Web
2.
网络社交等一系列新型的互联网产品的诞生基于Web环境的互联网应用越来越广泛企业信息化的过程中越来越多的应用都架设在Web平台上。
Web业务的迅速发展吸引了黑客们的强烈关注接踵而至的就是Web安全威胁的凸显。
黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限轻则篡改网页内容重则窃取重要内部数据更为严重的则是在网页中植入恶意代码使得网站访问者受到侵害。
这使得越来越多的用户关注应用层的安全问题Web应用安全的关注度也逐渐升温。
------本文目录------SQL注入XSS跨站脚本攻击CSRF跨站请求伪造任意文件读取任意代码执行越权访问敏感信息泄露越权访问不安全的会话管理漏洞用户名/口令暴力爆破弱口令漏洞撞库攻击注册模块设计缺陷短信接口设计缺陷URL重定向漏洞DDOS拒绝服务漏洞不足的日志记录和监控业务逻辑漏洞网络安全通信协议
SQL注入SQL注入SQL Injection是一个常见的发生于应用程序和数据库之间的web安全漏洞由于在开发过程中的设计不当导致程序中忽略了检查没有有效的过滤用户的输入是攻击者可以向服务器提交不正常的访问数据即恶意的SQL命令代码程序在接收后错误的将攻击者的输入作为代码语句的一部分执行导致原始的查询逻辑被改变额外的执行了攻击者静态构造的恶意代码从而绕过验证机制和权限检查达到取得隐藏数据或覆盖关键的参值甚至执行数据库主机操作系统命令的目的。
SQL注入危害数据库信息泄露数据库中存放的用户的隐私信息的泄露网页篡改通过操作数据库对特定网页进行篡改网站被挂马传播恶意软件修改数据库一些字段的值嵌入网页链接进行挂马攻击。
数据库被恶意操作数据库服务器被攻击数据库的系统管理员账户被篡改。
服务器被远程控制被安装后门。
经由数据库服务器提供的操作系统支持让黑客得以修改或控制操作系统。
破坏硬盘数据瘫痪全系统。
例子应对方案过滤特殊字符单引号、双引号、斜杠、反斜杠、冒号、空字符等的字符过滤的对象用户的输入提交的URL请求中的参数部分从cookie中得到的数据部署方SQL注入系统或脚本。
严格限制web应用的数据库的操作权限给用户提供仅能满足需求的最低权限从而最大限度的减少注入攻击对数据库的危害。
对进入数据的特殊字符‘ “ \ *进行转义处理或编码转换不要直接拼接SQL语句所有的查询语句建议使用数据库提供的参数化查询接口使用参数化的语句而不是将用户输入的变量嵌入SQL语句中。
在应用发布之前建议使用专业的SQL注入检测工具进行检测及时修补被检测出的SQL注入漏洞。
避免网站打印SQL错误信息比如类型错误、字段不匹配等可对异常信息做封装给出友好提示不直接打印堆栈信息到前端。
XSS跨站脚本攻击跨站脚本漏洞Cross-site scripting , xss是一种常见的web安全漏洞由于web应用未对用户提交的数据做充分的检查过滤允许用户在提交的数据中掺入HTML代码最主要的是””,””并将未经转义的恶意代码输出到第三方用户的浏览器解释执行从而导致XSS漏洞。
攻击成功后攻击者可以得到更高的权限、私密网页内容、会话和cookie等内容。
XSS类型包括1非持久型跨站即反射型跨站脚本漏洞是目前最普遍的跨站类型。
跨站代码一般存在于链接中请求这样的链接时跨站代码经过服务端反射回来这类跨站的代码不存储到服务端比如数据库中。
2持久型跨站这是危害最直接的跨站类型跨站代码存储于服务端比如数据库中。
常见情况是某用户在论坛发贴如果论坛没有过滤用户输入的Javascript代码数据就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。
3DOM跨站DOM XSS是一种发生在客户端DOMDocument Object Model文档对象模型中的跨站漏洞很大原因是因为客户端脚本处理逻辑导致的安全问题。
应对方案
与SQL注入防护的建议一样假定所有输入都是可疑的必须对所有输入中的script、iframe等字样进行严格的检查。
这里的输入不仅仅是用户可以直接交互的输入接口也包括HTTP请求中的Cookie中的变量HTTP请求头部中的变量等。
不仅要验证数据的类型还要验证其格式、长度、范围和内容。
针对请求参数以及用户可控数据进行防御对输出进行编码处理。
在服务端对每一个输入进行合法性验证只允许输入常见符号字母以及数字。
对Cookie添加HttpOnly标识。
CSRF跨站请求伪造跨站请求伪造Cross-site request forgery , CSRF是一种常见的web安全漏洞由于在web请求中重要操作的所有参数可被猜测到攻击者可通过一些技术手段欺骗用户的浏览器去访问一个用户曾经认证过的网站遂使攻击者可冒用用户的身份进行恶意操作。
应对方案
在表单中添加一个随机的数字或字母验证码通过强制用户和应用进行交互来有效地遏制CSRF攻击。
如果检查发现是非正常页面提交的请求根据Referer进行判断则极有可能是CSRF攻击。
在请求的参数里增加一个随机的token参数且不可被猜测。
敏感的操作应该使用POST而不是GET以form表单的形式提交可以避免token泄露。
任意文件读取任意文件读取漏洞Unrestricted File Upload是一种常见的web安全漏洞因web程序提供的文件查看下载、附件下载等功能存在安全缺陷导致通过修改该文件路径就能够查看和下载任意文件这些文件包括源代码文件、系统文件/etc/passwd , C:/boot.ini等、配置文件config.php , /WEB-INF/web.xml , web.config等造成网站敏感信息泄露严重危害网站安全。
应对方案
服务端过滤特殊字符。
…./、 ….\、 ….\
判断用户输入的参数的格式是否合法。
指定文件类型白名单如jpg\gif\png\rar\zip\pdf\doc\xls\ppt等禁止用户读取、下载白名单以外的文件。
指定下载路径禁止用户读取、下载指定目录以外的文件。
任意代码执行任意代码执行漏洞Unrestrcted Code Execution是一种常见的web安全漏洞由于web程序没有针对执行函数做过滤当web程序应用在调用一些能将字符串转化成命令的函数如PHP中的eval(),system(),exec()时没有考虑做一些安全限制导致可以通过构造特殊代码执行操作系统命令致使攻击者获取到网站服务器权限。
应对方案
如果因使用的框架或中间件造成远程代码执行漏洞需及时升级框架和中间件。
针对代码中可执行的特殊函数入口进行过滤尝试对所有提交的可能执行命令的语句进行严格的检查或者对外部输入进行控制系统命令执行函数不允许传递外部参数。
所有的过滤步骤要在服务器进行不仅要验证数据的类型还要验证期格式、长度、范围和内容。
任意文件上传任意文件上传Unrestricted File Upload是一种常见的web安全漏洞由于web应用程序在实现文件上传功能是对上传的文件缺少必要的检查使得攻击者可上传任意文件。
利用该漏洞攻击者可以直接上传webshellwebShell 就是以asp\php\jsp或者cgi等网页文件形式存在的一种命令执行环境也可以将其称之为一种网页后门、病毒、恶意脚本等各种危险文件可能导致服务器权限被直接获取从而危及整个系统的安全运行。
应对方案
对用户上传的文件后缀采用白名单进行限制且重命名文件名。
限定文件上传目录且该目录不允许解析动态脚本文件。
敏感信息泄露在最近几年这是最常见的、最具影响力的攻击。
这个领域最常见的漏洞是不对敏感信息进行加密。
在数据加密过程中常见的问题是不安全的密钥生成和管理以及使用弱加密算法、弱协议和弱密码。
特别是使用弱的哈希算法来保护密码。
攻击者不是直接攻击密码而是在传输过程中或从客户端例如浏览器窃取密钥、发起中间人攻击或从服务器端窃取明文数据。
应对方案
应对敏感信息进行强加密再传输的操作禁止一切敏感信息的明文传输如密码明文传输等。
对于配置文件的明文存储可以使用 jasypt 进行密钥加密存储增强安全性。
越权访问越权访问Broken Access Control , BAC是一种常见的web安全漏洞这类漏洞是指应用在检查授权Authorization时存在纰漏使得攻击者可以利用一些方式绕过权限检查访问或者操作到原本无权访问的界面。
在实际的代码安全审查中这类漏洞往往很难通过工具进行自动化检测因此在实际应用中危害很大。
应对方案
将用户身份标识存在session中并验证不能把用户身份标识以参数形式置于HTTP请求中应该放在session中并且仅通过session验证用户身份。
禁止从Cookie参数中去判断用户所属用户组应该通过读取session会话来判断用户所属用户组。
文件下载时禁止采用可被猜测的连续ID为参数进行文件下载下载文件时也应判断当前用户是否有权限下载目标文件。
非普通用户操作页面严格做好权限管理增删改查操作需要验证当前用户权限。
不安全的会话管理漏洞token值信息直接在GET请求的URL上造成token值的直接暴露容易被日志记录、搜索引擎等缓存影响客户会话安全。
应对方案禁止token以GET方式传递可从header中获取。
用户名/口令暴力爆破用户名/口令爆破Brute-force attack是一种常见的web安全漏洞由于用户登录模块缺少必要的防护机制使用网站的注册或登录接口攻击者通过系统地组合所有可能性例如登录时用到的账户名、密码等并以穷举法尝试所有可能性破解用户的账户名、密码等敏感信息。
应对方案
增强验证码机制为防止验证码被破解可以适当怎加验证码生成的强度例如中文图形验证码。
用户名或密码输入错误均提示“用户名或密码错误”防止黑客获取到注册用户的信息。
限制用户登录失败次数。
限制一定时间内IP登录失败次数。
限制一系列验证码的使用次数用完即失效。
弱口令漏洞弱口令(weak password)没有严格和准确的定义通常认为容易被别人他们有可能对你很了解猜测到或被破解工具破解的口令均为弱口令如生日、名字、简单的顺序数字or字符。
)应对方案增强口令复杂度验证码类可增加生成强度密码类可增加密码的复杂度。
不使用空口令或系统缺省的口令这些口令众所周之为典型的弱口令。
口令长度不小于8个字符。
口令应该为以下四类字符的组合大写字母(A-Z)、小写字母(a-z)、数字(0-
和特殊字符。
每类字符至少包含一个。
如果某类字符只包含一个那么该字符不应为首字符或尾字符。
撞库攻击撞库攻击Information Leakage Thinking Library Collision是一种常见的针对web应用的攻击方式为了方便记忆很多用户在不同网站使用的同一账号和密码黑客通过收集网络已泄露的拖库信息特别是注册用户和密码信息生成对应的字典表尝试批量自动登陆其它网站验证后得到一系列可以登录的真实账户。
应对方案
增强验证码机制为防止验证码被破解可以适当增加验证码生成的强度例如中文图形验证码。
自动识别异常IP对于异常IP整理一个非常严格的恶意IP库甚至禁止这些IP访问网站。
用户账户被撞开后的保护对用户行为进行分析如判断用户的登录IP是否在常用地区如果不是则直接锁定账号让用户通过收集、邮箱等手段来解锁。
注册模块设计缺陷注册模块设计缺陷Registration module design flaws是一种常见的web安全漏洞网站注册模块的设计缺陷将导致一下几点安全漏洞
任意用户密码找回。
暴力枚举网站已注册用户。
暴力破解用户密码。
万能密码登录。
SQL注入。
以上安全问题会带来用户密码被盗、个人信息泄露、网站数据库泄露、网站被入侵等风险。
应对方案
如果使用邮件验证的方式找回密码重置密码令牌需要设置为不可猜测且加密令牌时使用通过加密的方式而不是自己构造设置重置密码会话过期时间在重置密码时不要从请求中获取需要重置的用户名。
如果使用短信验证的方式找回密码验证短信最少应为6位且短信过期时间不能超过10分钟在发送短信页面添加经过混淆过的图形验证码并在后端设置单位时间内的短信发送频率。
限制单位时间内认证错误次数。
在用户注册页面、登录界面添加可靠的机器人识别功能例如图形验证码或短信验证码。
短信接口设计缺陷短信接口设计缺陷SMS interface design flaws是一种常见的web安全漏洞短信接口通常用于注册验证、登录验证及其他敏感操作的验证上但由于设计不当通常会导致以下安全问题
短时间内发送大量的手机短信。
短信验证码过短易被猜测。
短信验证码在发送多次时多个验证码同时有效。
短信验证码在HTTP相应包中返回客户端。
应对方案
在发送短信接口设置机器人识别机制例如经过混淆的图形验证码在验证通过后方可发送手机短信。
用来验证的验证码短信最少应为6位过期时间内只能有一个验证码有效且有效时间不应超过10分钟。
不要把短信验证码返回到客户端。
短信验证码在认证一次后应立即失效输入错误需再次获取。
URL重定向漏洞URL重定向漏洞URL redirection vulnerability是一种常见的web安全漏洞由于网站URL重定向功能设计不当没有验证跳转的目标URL是否合法用户可通过此漏洞转到任意网站这会导致可通过该网站跳转到存在木马、病毒的网站或者钓鱼网站。
应对方案
不应从用户请求或填写的内容中获取跳转的目标URL应在后端设定跳转URL。
对需要跳转的目标URL进行验证如果跳转的URL不是所允许的则禁止跳转。
进行URL时提示用户并显示跳转的目标URL地址并询问是否跳转。
DDOS拒绝服务漏洞拒绝服务攻击denial-of-service attack , DOS亦称“洪水攻击”是一种网络攻击手段其目的在于使目标电脑的网络或系统资源耗尽使服务暂时中断或停止导致其正常用户无法访问。
拒绝服务的攻击也可能导致与目标计算机同一网络中的其它计算机被攻击。
互联网和局域网之间的带宽会被攻击并导致大量消耗不但影响目标计算机同时也影响局域网中的其他计算机。
如果攻击的规模较大整个地区的网络连接都可能会受到影响。
一种服务需要面向大众就需要提供用户访问接口这些接口恰恰就给了黑客有可乘之机如可以利用 TCP/IP 协议握手缺陷消耗服务端的链接资源可以利用 UDP 协议无状态的机制伪造大量的 UDP 数据包阻塞通信信道…… 可以说互联网的世界自诞生之日起就不缺乏被 DDoS 利用的攻击点从 TCP/IP 协议机制到 CC、DNS、NTP 反射类攻击更有甚者利用各种应用漏洞发起更高级更精确的攻击。
资源消耗类攻击资源消耗类是比较典型的 DDoS攻击最具代表性的包括Syn Flood、Ack Flood、UDPFlood。
这类攻击的目标很简单就是通过大量请求消耗正常的带宽和协议栈处理资源的能力从而达到服务端无法正常工作的目的。
Syn FloodSYN- Flood 攻击是当前网络上常见的 DDoS 攻击它就是利用了 TCP 协议实现上的一个缺陷通过向网络服务所在端口发送大量 的伪造源地址的攻击报文就可能造成目标服务器中的半开连接队列被占满从而阻止其他合法用户进行访问。
这种攻击早在 1996 年就被发现但至今仍然显示 出强大的生命力。
很多操作系统甚至防火墙、路由器都无法有效地防御这种攻击而且由于它可以方便地伪造源地址追查起来非常困难。
它的数据包特征通常 是源发送了大量的 SYN 包并且缺少三次握手的最后一步握手 ACK 回复。
Syn Flood原理攻击者首先伪造地址对 服务器发起 SYN 请求服务器回应 (SYNACK) 包而真实的 IP 会认为我没有发送请求不作回应。
服务 器没有收到回应这样的话服务器不知 道 (SYNACK) 是否发送成功默认情况下会重试 5 次tcp_syn_retries。
这样的话对于服务器的内存带宽都有很大的消耗。
攻击者 如果处于公网可以伪造 IP 的话对于服务器就很难根据 IP 来判断攻击者给防护带来很大的困难。
服务消耗性攻击相比资源消耗类攻击服务消耗类攻击不需要太大的流量它主要是针对服务的特点进行精确定点打击如 web 的 CC数据服务的检索文件服务的下载等。
这类攻击往往不是为了拥塞流量通道或协议处理通道它们是让服务端始终处理高消耗型的业务的忙碌状态进而无法对正常业务进行响应web 的CC攻击当一个网页访问的人数特别多的时候打开网页就慢了CC 就是模拟多个用户多少线程就是多少用户不停地进行访问那些需要大量数据操作就是需要大量 CPU 时间的页面造成服务器资源的浪费CPU 长时间处于 100%永远都有处理不完的连接直至就网络拥塞正常的访问被中止。
应对方案拒绝服务攻击的防御方式通常为入侵检测流量过滤和多重验证意在堵塞网络带宽的流量将被过滤而正常的流量可正常通过。
网络设备防火墙可以设置规则例如允许或拒绝特定通讯协议、端口或IP地址。
当攻击从少数不正常的IP地址发出时可以简单的使用拒绝规则阻止一切从攻击源IP发出的通信。
黑洞引导/流量清洗黑洞引导指将所有受攻击计算机的通信全部发送至一个“黑洞”空接口或不存在的计算机地址或者有足够能力处理洪流的网络运营商以避免网络受到较大影响。
当流量被送到DDoS防护清洗中心时通过采用抗DDoS软件处理将正常流量和恶意流量区分开。
这样一来可保障站点能够正常运作处理真实用户访问网站带来的合法流量。
web服务器升级web服务器避免出现拒绝服务漏洞如HTTP.sysMS
。
不足的日志记录和监控对不足的日志记录及监控的利用几乎是每一个重大安全事件的温床。
攻击者依靠监控的不足和响应的不及时来达成他们的目标而不被知晓。
根据行业调查的结果此问题被列入了Top10。
判断你是否有足够监控的一个策略是在渗透测试后检查日志。
测试者的活动应被充分的记录下来能够反映出他们造成了什么样的影响。
多数成功的攻击往往从漏洞探测开始。
允许这种探测会将攻击成功的可能性提高到近100%据统计在2016年确定一起数据泄露事件平均需要花191天时间这么长时间里损害早已发生。
应对方案建议应用系统开启审计功能审计覆盖所有用户审计日志至少包括用户的注册、登录、关键业务操作等行为进行日志记录内容包括但不限于用户姓名、手机号码、注册时间、注册地址、登录时间、登录地址、操作用户信息、操作时间、操作内容及操作结果等
业务逻辑漏洞业务逻辑问题是一种设计缺陷逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误。
攻击者会特别注意目标应用程序采用的逻辑方式设法了解设计者与开发者做出的可能假设然后考虑如何攻破这些假设。
攻击者挖掘逻辑漏洞有两个重点业务流程、http/https请求篡改。
业务逻辑漏洞经常出现的场景为账户注册/登录/密码找回、交易、支付、个人信息修改。
应对方案应用系统在开发之前尽量避免设计的缺陷将容易出现重要业务逻辑漏洞的场景多做思考与设计利用多场景的用例推敲是否存在漏洞。
网络安全通信协议系统在数据传输过程中不具有保护其完整性的措施通常讲的就是http的网络通讯协议在此协议下会产生传输数据以明文形式显示无法保护数据的完整性。
应对方案建议使用HTTPS安全网络通讯协议通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护。
此外再将几个比较常见的安全规范如下。
预警级别安全规范
管理后台泄漏漏洞管理后台的帐号和密码设计过于简单容易被猜测到导致攻击者可以暴力破解帐号密码。
应对方案将管理后台的服务绑定到内网ip上禁止开放在外网。
如果该管理后台必须提供给外网访问则未登录页面不要显示过多内容防止敏感信息泄漏登录帐号需经过认证且密码设置规则尽量复杂增加验证码以防止暴力破解。
错误详情泄漏漏洞页面含有CGI处理错误的代码级别的详细信息例如sql语句执行错误原因php的错误行数等。
检测方法修改参数为非法参数看页面返回的错误信息是否泄漏了过于详细的代码级别的信息。
应对方案将错误信息对用户透明化在CGI处理错误后可以返回友好的提示语以及返回码。
但是不可以提示用户出错的代码级别的详细原因。
资源控制应用系统未对单个账户的多重并发会话进行限制会出现同个账户多个操作人同时在操作。
应对方案可根据业务系统的需求定制会话的限制数量类似同个账户在不同地方登录时提示账户已登录提供踢出操作同时提示被踢出用户。
学习资源如果你是也准备转行学习网络安全黑客或者正在学习这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你知识库由360智榜样学习中心独家打造出品旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力熟练掌握基础攻防到深度对抗。
知识库价值深度 本知识库超越常规工具手册深入剖析攻击技术的底层原理与高级防御策略并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等提供了独到的技术视角和实战验证过的对抗方案。
广度 面向企业安全建设的核心场景渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点是应对复杂攻防挑战的实用指南。
实战性 知识库内容源于真实攻防对抗和大型演练实践通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
部分核心内容展示360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式既夯实基础技能更深入高阶对抗技术。
内容组织紧密结合攻防场景辅以大量真实环境复现案例、自动化工具脚本及配置解析。
通过策略讲解、原理剖析、实战演示相结合是你学习过程中好帮手。