A. web安全要学什么
Web安全的范围实在太大,哪些先学,哪些后学,如果没有系统的路线会降低大家效率,对于刚入门的同学们来说简直就是“噩梦”。所以,这篇类似学习路线的文章,希望可以帮助刚入门的萌新们少走弯路。(文末附学习资料及工具领取)
首先我们来看看企业对Web安全工程师的岗位招聘需求是什么?
1职位描述
对公司各类系统进行安全加固;
对公司网站、业务系统进行安全评估测试(黑盒、白盒测试)
对公司安全事件进行响应、清理后门、根据日志分析攻击途径
安全技术研究,包括安全防范技术、黑客技术等;
跟踪最新漏洞信息,进行业务产品的安全检查。
熟悉Web渗透测试方法和攻防技术,包括sql注入、XSS跨站、CSRF伪造请求、命令执行等OWSP TOP10 安全漏洞与防御;
熟悉Linux、Windows不同平台的渗透测试,对网络安全、系统安全、应用安全有深入理解和自己的认识;
熟悉国内外安全工具,包括Kali、Linux、Metasploit、Nessus、Namp、AWVS、Burp等;
对Web安全整体有深刻理解,有一定漏洞分析和挖掘能力;
2岗位要求
根据岗位技能需求,再来制定我们的学习路径,如下:
一、Web安全学习路径
01 HTTP基础
只有搞明白Web是什么,我们才能对Web安全进行深入研究,所以你必须了解HTTP,了解了HTTP,你就会明白安全术语的“输入输出”。黑客通过输入提交“特殊数据”,特殊数据在数据流的每个层处理,如果某个层没处理好,在输出的时候,就会出现相应层的安全问题。关于HTTP,你必须要弄明白以下知识:
HTTP/HTTPS特点、工作流程
HTTP协议(请求篇、响应篇)
了解HTML、Javascript
Get/Post区别
Cookie/Session是什么?
02 了解如下专业术语的意思
Webshell
菜刀
0day
SQL注入
上传漏洞
XSS
CSRF
一句话木马
......
03 专业黑客工具使用
熟悉如何渗透测试安全工具,掌握这些工具能大大提高你在工作的中的效率。
Vmware安装
Windows/kali虚拟机安装
Phpstudy、LAMP环境搭建漏洞靶场
Java、Python环境安装
子域名工具 Sublist3r
Sqlmap
Burpsuite
Nmap
W3af
Nessus
Appscan
AWVS
04 XSS
要研究 XSS 首先了解同源策略 ,Javascript 也要好好学习一下 ,以及HTML实体 HTML实体的10 或16进制还有Javascript 的8进制和16进制编码,最终掌握以下几种类型的XSS:
反射型 XSS:可用于钓鱼、引流、配合其他漏洞,如 CSRF 等。
存储型 XSS:攻击范围广,流量传播大,可配合其他漏洞。
DOM 型 XSS:配合,长度大小不受限制 。
05 SQL注入
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。你需要了解以下知识:
SQL 注入漏洞原理
SQL 注入漏洞对于数据安全的影响
SQL 注入漏洞的方法
常见数据库的 SQL 查询语法
MSSQL,MYSQL,ORACLE 数据库的注入方法
SQL 注入漏洞的类型:数字型注入 、字符型注入、搜索注入 、盲注(sleep注入) 、Sqlmap使用、宽字节注入
SQL 注入漏洞修复和防范方法
一些 SQL 注入漏洞检测工具的使用方法
06 文件上传漏洞
了解下开源编辑器上传都有哪些漏洞,如何绕过系统检测上传一句话木马、WAF如何查杀Webshell,你必须要掌握的一些技能点:
1.客户端检测绕过(JS 检测)
2.服务器检测绕过(目录路径检测)
3.黑名单检测
4.危险解析绕过攻击
5..htaccess 文件
6.解析调用/漏洞绕过
7.白名单检测
8.解析调用/漏洞绕过
9.服务端检测绕过-文件内容检测
10.Apache 解析漏洞
11.IIS 解析漏洞
12.Nginx 解析漏洞
07 文件包含漏洞
去学习下
include() include_once() require() require_once() fopen() readfile()
这些php函数是如何产生文件包含漏洞, 本地包含与远程包含的区别,以及利用文件包含时的一些技巧如:截断 /伪url/超长字符截断等 。
08 命令执行漏洞
PHP代码中常见的代码执行函数有:
eval(), assert(), preg_replace(), call_user_func(), call_user_func_array(),create_function(), array_map()等。
了解这些函数的作用然后些搞清楚如何造成的代码执行漏洞。
09 CSRF 跨站点请求
为什么会造成CSRF,GET型与POST型CSRF 的区别, 如何防御使用 Token防止CSRF?
010 逻辑漏洞
了解以下几类逻辑漏洞原理、危害及学会利用这几类漏洞:
信息轰炸、支付逻辑漏洞、任意密码修改、越权访问、条件竞争、任意注册、任意登录、顺序执行缺陷、URL跳转漏洞.
011 XEE(XML外部实体注入)
当允许XML引入外部实体时,通过构造恶意内容,可以导致文件读取、命令执行、内网探测等危害。
012 SSRF
了解SSRF的原理,以及SSRF的危害。
SSRF能做什么?当我们在进行Web渗透的时候是无法访问目标的内部网络的,那么这个时候就用到了SSRF漏洞,利用外网存在SSRF的Web站点可以获取如下信息。
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
2.攻击运行在内网或本地的应用程序(比如溢出);
3.对内网Web应用进行指纹识别,通过访问默认文件实现;
4.攻击内外网的Web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
5.利用file协议读取本地文件等。
如果上述漏洞原理掌握的都差不多那么你就算入门Web安全了。
如果看了上面你还不知道具体如何学习?可参考合天网安实验室Web安全工程师岗位培养路径学习:网页链接
B. Web应用常见的安全漏洞有哪些
以sql注入和xss最常见,论广泛性还是xss更胜一筹,在很多大网站也能找到,另外还有逻辑漏洞、目录遍历、文件包含、csrf、命令注入等漏洞危害也不小,具体可以参照owasp top10
C. web安全测试主要有哪些漏洞
以下类型的安全漏洞
权控缺失
系统未能正确分配用户的权限,用户能执行超出自己职能范围的操作,这类漏洞称为权控缺失。权控缺失分为两类:平行越权、垂直越权。
逻辑漏洞
逻辑漏洞通常是由于程序逻辑不严密或逻辑太复杂,导致一些逻辑分支被绕过或处理错误。常见漏洞包括:任意密码修改(没有旧密码验证)、密码找回漏洞、业务数据篡改等。逻辑漏洞的出现易造成账号被盗、免费购物,游戏应用易造成刷钱、刷游戏币等严重问题。
条件竞争
服务端在做并发编程时,需要考虑到条件竞争的情况。在多个并发线程同时访问同一资源时,由于对请求的处理不是原子性的,无法预测调度的顺序,就可能由于时间序列上的冲突而造成对共享资源的操作混乱。
XSS跨站脚本攻击
是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,提交的数据被WEB应用程序直接使用,使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
D. 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
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。
本文根据当前Web应用的安全情况,列举了Web应用程序常见的攻击原理及危害,并给出如何避免遭受Web攻击的建议。
Web应用漏洞原理
Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。
1.1 Web应用的漏洞分类
1、信息泄露漏洞
信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。
造成信息泄露主要有以下三种原因:
–Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中;
–Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码;
–Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据。
2、目录遍历漏洞
目录遍历漏洞是攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加“../”、或者附加“../”的一些变形(如“..\”或“..//”甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。
3、命令执行漏洞
命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪等。
命令执行漏洞主要有两种情况:
–通过目录遍历漏洞,访问系统文件夹,执行指定的系统命令;
–攻击者提交特殊的字符或者命令,Web程序没有进行检测或者绕过Web应用程序过滤,把用户提交的请求作为指令进行解析,导致执行任意命令。
4、文件包含漏洞
文件包含漏洞是由攻击者向Web服务器发送请求时,在URL添加非法参数,Web服务器端程序变量过滤不严,把非法的文件名作为参数处理。这些非法的文件名可以是服务器本地的某个文件,也可以是远端的某个恶意文件。由于这种漏洞是由PHP变量过滤不严导致的,所以只有基于PHP开发的Web应用程序才有可能存在文件包含漏洞。
5、SQL注入漏洞
SQL注入漏洞是由于Web应用程序没有对用户输入数据的合法性进行判断,攻击者通过Web页面的输入区域(如URL、表单等) ,用精心构造的SQL语句插入特殊字符和指令,通过和数据库交互获得私密信息或者篡改数据库信息。SQL注入攻击在Web攻击中非常流行,攻击者可以利用SQL注入漏洞获得管理员权限,在网页上加挂木马和各种恶意程序,盗取企业和用户敏感信息。
6、跨站脚本漏洞
跨站脚本漏洞是因为Web应用程序时没有对用户提交的语句和变量进行过滤或限制,攻击者通过Web页面的输入区域向数据库或HTML页面中提交恶意代码,当用户打开有恶意代码的链接或页面时,恶意代码通过浏览器自动执行,从而达到攻击的目的。跨站脚本漏洞危害很大,尤其是目前被广泛使用的网络银行,通过跨站脚本漏洞攻击者可以冒充受害者访问用户重要账户,盗窃企业重要信息。
根据前期各个漏洞研究机构的调查显示,SQL注入漏洞和跨站脚本漏洞的普遍程度排名前两位,造成的危害也更加巨大。
1.2 SQL注入攻击原理
SQL注入攻击是通过构造巧妙的SQL语句,同网页提交的内容结合起来进行注入攻击。比较常用的手段有使用注释符号、恒等式(如1=1)、使用union语句进行联合查询、使用insert或update语句插入或修改数据等,此外还可以利用一些内置函数辅助攻击。
通过SQL注入漏洞攻击网站的步骤一般如下:
第一步:探测网站是否存在SQL注入漏洞。
第二步:探测后台数据库的类型。
第三步:根据后台数据库的类型,探测系统表的信息。
第四步:探测存在的表信息。
第五步:探测表中存在的列信息。
第六步:探测表中的数据信息。
1.3 跨站脚本攻击原理
跨站脚本攻击的目的是盗走客户端敏感信息,冒充受害者访问用户的重要账户。跨站脚本攻击主要有以下三种形式:
1、本地跨站脚本攻击
B给A发送一个恶意构造的Web URL,A点击查看了这个URL,并将该页面保存到本地硬盘(或B构造的网页中存在这样的功能)。A在本地运行该网页,网页中嵌入的恶意脚本可以A电脑上执行A持有的权限下的所有命令。
2、反射跨站脚本攻击
A经常浏览某个网站,此网站为B所拥有。A使用用户名/密码登录B网站,B网站存储下A的敏感信息(如银行帐户信息等)。C发现B的站点包含反射跨站脚本漏洞,编写一个利用漏洞的URL,域名为B网站,在URL后面嵌入了恶意脚本(如获取A的cookie文件),并通过邮件或社会工程学等方式欺骗A访问存在恶意的URL。当A使用C提供的URL访问B网站时,由于B网站存在反射跨站脚本漏洞,嵌入到URL中的恶意脚本通过Web服务器返回给A,并在A浏览器中执行,A的敏感信息在完全不知情的情况下将发送给了C。
3、持久跨站脚本攻击
B拥有一个Web站点,该站点允许用户发布和浏览已发布的信息。C注意到B的站点具有持久跨站脚本漏洞,C发布一个热点信息,吸引用户阅读。A一旦浏览该信息,其会话cookies或者其它信息将被C盗走。持久性跨站脚本攻击一般出现在论坛、留言簿等网页,攻击者通过留言,将攻击数据写入服务器数据库中,浏览该留言的用户的信息都会被泄漏。
Web应用漏洞的防御实现
对于以上常见的Web应用漏洞漏洞,可以从如下几个方面入手进行防御:
1)对 Web应用开发者而言
大部分Web应用常见漏洞,都是在Web应用开发中,开发者没有对用户输入的参数进行检测或者检测不严格造成的。所以,Web应用开发者应该树立很强的安全意识,开发中编写安全代码;对用户提交的URL、查询关键字、HTTP头、POST数据等进行严格的检测和限制,只接受一定长度范围内、采用适当格式及编码的字符,阻塞、过滤或者忽略其它的任何字符。通过编写安全的Web应用代码,可以消除绝大部分的Web应用安全问题。
2) 对Web网站管理员而言
作为负责网站日常维护管理工作Web管理员,应该及时跟踪并安装最新的、支撑Web网站运行的各种软件的安全补丁,确保攻击者无法通过软件漏洞对网站进行攻击。
除了软件本身的漏洞外,Web服务器、数据库等不正确的配置也可能导致Web应用安全问题。Web网站管理员应该对网站各种软件配置进行仔细检测,降低安全问题的出现可能。
此外,Web管理员还应该定期审计Web服务器日志,检测是否存在异常访问,及早发现潜在的安全问题。
3)使用网络防攻击设备
前两种为事前预防方式,是比较理想化的情况。然而在现实中,Web应用系统的漏洞还是不可避免的存在:部分Web网站已经存在大量的安全漏洞,而Web开发者和网站管理员并没有意识到或发现这些安全漏洞。由于Web应用是采用HTTP协议,普通的防火墙设备无法对Web类攻击进行防御,因此可以使用IPS入侵防御设备来实现安全防护。
H3C IPS Web攻击防御
H3C IPS入侵防御设备有一套完整的Web攻击防御框架,能够及时发现各种已经暴露的和潜在的Web攻击。下图为对于Web攻击的总体防御框架。
图1:Web攻击防御框架,参见:http://blog.csdn.net/moshenglv/article/details/53439579
H3C IPS采用基于特征识别的方式识别并阻断各种攻击。IPS设备有一个完整的特征库,并可定期以手工与自动的方式对特征库进行升级。当网络流量进入IPS后,IPS首先对报文进行预处理,检测报文是否正确,即满足协议定义要求,没有错误字段;如果报文正确,则进入深度检测引擎。该引擎是IPS检测的核心模块,对通过IPS设备的Web流量进行深层次的分析,并与IPS攻击库中的特征进行匹配,检测Web流量是否存在异常;如果发现流量匹配了攻击特征,IPS则阻断网络流量并上报日志;否则,网络流量顺利通过。
此Web攻击防御框架有如下几个特点:
1) 构造完整的Web攻击检测模型,准确识别各种Web攻击
针对Web攻击的特点,考虑到各种Web攻击的原理和形态,在不同漏洞模型之上开发出通用的、层次化的Web攻击检测模型,并融合到特征库中。这些模型抽象出Web攻击的一般形态,对主流的攻击能够准确识别,使得模型通用化。
2) 检测方式灵活,可以准确识别变形的Web攻击
在实际攻击中,攻击者为了逃避防攻击设备的检测,经常对Web攻击进行变形,如采用URL编码技术、修改参数等。H3C根据Web应用漏洞发生的原理、攻击方式和攻击目标,对攻击特征进行了扩展。即使攻击者修改攻击参数、格式、语句等内容,相同漏洞原理下各种变形的攻击同样能够被有效阻断。这使得IPS的防御范围扩大,防御的灵活性也显着增强,极大的减少了漏报情况的出现。
3) 确保对最新漏洞及技术的跟踪,有效阻止最新的攻击
随着Web攻击出现的频率日益增高,其危害有逐步扩展的趋势。这对IPS设备在防御的深度和广度上提出了更高的要求,不仅要能够防御已有的Web攻击,更要有效的阻止最新出现的、未公布的攻击。目前,H3C已经建立起一套完整的攻防试验环境,可以及时发现潜在Web安全漏洞。同时还在继续跟踪最新的Web攻击技术和工具,及时更新Web攻击的特征库,第一时间发布最新的Web漏洞应对措施,确保用户的网络不受到攻击。
4) 保证正常业务的高效运行
检测引擎是IPS整个设备运行的关键,该引擎使用了高效、准确的检测算法,对通过设备的流量进行深层次的分析,并通过和攻击特征进行匹配,检测流量是否存在异常。如果流量没有匹配到攻击特征,则允许流量通过,不会妨碍正常的网络业务,在准确防御的同时保证了正常业务的高效运行。
结束语
互联网和Web技术广泛使用,使Web应用安全所面临的挑战日益严峻,Web系统时时刻刻都在遭受各种攻击的威胁,在这种情况下,需要制定一个完整的Web攻击防御解决方案,通过安全的Web应用程序、Web服务器软件、Web防攻击设备共同配合,确保整个网站的安全。任何一个简单的漏洞、疏忽都会造成整个网站受到攻击,造成巨大损失。此外 ,Web攻击防御是一个长期持续的工作,随着Web技术的发展和更新,Web攻击手段也不断发展,针对这些最新的安全威胁,需要及时调整Web安全防护策略,确保Web攻击防御的主动性,使Web网站在一个安全的环境中为企业和客户服务。
原文链接:
E. 如何系统学习web安全,web渗透测试
首先得清楚web安全/web渗透是什么:模拟黑客攻击,利用黑客技术,挖掘漏洞,提出修复建议。
涉及到的技术有:数据库/网络技术/编程技术/操作系统/渗透技术/攻防技术/逆向技术/SRC漏洞平台/ctf经验。。
岗位能力要求:
1、熟练使用awvs、nessus、metasploit、burpsuite等安全测试工具,并对其原理有一定了解
2、熟悉OWASP中常见的web安全漏洞、业务逻辑漏洞及其原理
3、熟悉渗透测试技术的整体流程,具备独立开展渗透工作的能力;
4、熟悉linux系统操作,了解常见web中间件、数据库、服务器相关漏洞
5、至少掌握一种编程语言,能够开发用于辅助日常工作的脚本
6、具备一定的php或java代码审计能力,能够对公开漏洞进行分析
7、具备良好的逻辑思维、沟通技巧及团队协作能力
8、已取得信息安全等级测评师证书的优先。(NISP)
想要系统的学习web渗透,可以参考企业对人才的要求进行学习。
F. 通常可能带来Web站点上的安全问题有哪些
1,给web服务端带了的问题:
a,SQL注入,组要是由web代码和数据库交互时候导致的。不过这个问题可以通过一些框架可以方便的解决,如java的ibatis或者mybatis框架。
b,web服务器配置错误,如开启了put,delete方法。这些可以通过修对应的web服务器配置解决,如apache,iis的配置。
c,web应用服务器的错误配置,如jboss,tomcat的配置。同样适用安全的配置方法可以解决。
d,web应用代码逻辑导致的问题,如上次漏洞,系统命令注入漏洞,url跳转漏洞,等等。
2,给客户端带来的问题。
a,XSS
b,CSRF
d,url跳转。
G. 如何安全检测Java Web应用网站漏洞
1、SQL注入漏洞
从SQL注入漏洞说起吧,在web漏洞里,SQL注入是最容易被利用而又最具有危害性的。怎么快速的找到呢?先分析流程,就拿用户查看文章这个流程为例:用户访问一个action,告诉它用户想看ID为7的文章,这个action就会继续完成前面所说的流程
2、暴露程序信息漏洞
这个漏洞是怎么来的呢?我们需要从异常说起。有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等,这个漏洞很容易防御,却很难快速定位漏洞文件。出现这样漏洞的时候,通常是我们在写代码的时候,少了一些可能性的考虑而导致的。这样的问题都是经验造成的,而寻找漏洞也要通过经验加运气
3、AJAX暴露出来的漏洞
前面讲SQL注入的时候说过的例子就是一个典型的情况,因为大多数网站不是在开发时就拥有Ajax技术的,都是后来看大家都用了,赶时髦加上。但是在加上的同时没有意识到,在web上增加一个文件,就等于扩展了一点攻击面。
4、业务逻辑漏洞
这个词看起来挺抽象的,他和“暴露程序信息漏洞”有很多共同点,看名字就知道,应该是存在于业务逻辑层(service层)的漏洞。这样的漏洞都和程序的运行逻辑有关。
5、XSS漏洞
这个漏洞也影响深远,想要发现这样的漏洞,除了在页面上进行测试外,还要从流程上入手。用户输入有害信息后,信息保存到数据库,从数据库中读出来丢给用户时产生漏洞。也就是说我们有两个过程可以拦截,就是保存到数据库时,和从数据库读出来后交给用户时。最快的方法是直接打开数据库查看数据,如果数据没有经过编码直接放进了数据库,那么可能性就有了一半。剩下的一半更简单,在action层搜索转码常用的字符,如果没有,就很容易发现漏洞。即使有,也不用着急,在action层里慢慢找,很可能还有漏网之鱼。
6、页面层的逻辑漏洞
此类漏洞涵盖面很大,包括“暴露不该暴露的数据”、“权限控制的不精确”、“方便客户的同时存在安全隐患”等等。这类漏洞就只能靠着自己的经验,使用系统的每一个细小功能来寻找。
H. 如何进行Web渗透测试
什么是渗透测试?
渗透测试,是渗透测试工程师完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标网络、主机、应用的安全作深入的探测,发现系统最脆弱的环节。
如何进行Web渗透测试?
完整web渗透测试框架当需要测试的web应用数以千计,就有必要建立一套完整的安全测试框架,流程的最高目标是要保证交付给客户的安全测试服务质量。
1、立项:项目建立,时间安排,人力分配,目标制定,厂商接口人确定;
系统分析&威胁分析:针对具体的web应用,分析系统架构、使用的组件、对外提供的接口等,以STRIDE为威胁模型进行对应的安全威胁分析,输出安全威胁分析表,重点关注top3威胁;
制定测试用例:根据威胁分析的结果制定对应的测试用例,测试用例按照模板输出,具备可执行性;
测试执行&漏洞挖掘:测试用例执行&发散测试,挖掘对应的安全问题or漏洞;
问题修复&回归测试:指导客户应用开发方修复安全问题or漏洞,并进行回归测试,确保安全问题or漏洞得到修复,并且没有引入新的安全问题;
项目总结评审:项目过程总结,输出文档评审,相关文档归档。
2、Web应用的渗透测试流程
主要分为3个阶段,分别是:信息收集→漏洞发现→漏洞利用,下面仔细分析一下各个阶段流程:
一、信息收集
在信息收集阶段,我们需要尽量多的收集关于目标web应用的各种信息,比如:脚本语言的类型、服务器的类型、目录的结构、使用的开源软件、数据库类型、所有链接页面,用到的框架等
脚本语言的类型:常见的脚本语言的类型包括:php、asp、aspx、jsp等
测试方法:
1 爬取网站所有链接,查看后缀
2 直接访问一个不存在页面后面加不同的后缀测试
3 查看robots.txt,查看后缀
服务器的类型:常见的web服务器包括:apache、tomcat、IIS、ngnix等
测试方法:
1 查看header,判断服务器类型
2 根据报错信息判断
3 根据默认页面判断
目录的结构:了解更多的目录,可能发现更多的弱点,如:目录浏览、代码泄漏等。
测试方法
1 使用字典枚举目录
2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
3 查看robots.txt是否泄漏
使用的开源软件:我们如果知道了目标使用的开源软件,我们可以查找相关的软件的漏洞直接对网站进行测试。
测试方法
指纹识别(网络上有很多开源的指纹识别工具)
数据库类型:对于不同的数据库有不同的测试方法。
测试方法
1 使应用程序报错,查看报错信息
2 扫描服务器的数据库端口(没做NAT且防火墙不过滤时有效)
所有链接页面:这个跟前面的获取目录结构类似,但是这个不只是获取网站的所有功能页面,有时候还可以获取到管理员备份的源码。
测试方法
1 使用字典枚举页面
2 使用爬虫爬取整个网站,或者使用google等搜索引擎获取
3 查看robots.txt是否泄漏
用到的框架:很多网站都利用开源的框架来快速开发网站,所以收集网站的框架信息也是非常关键的。
测试方法
指纹识别(网络上有很多开源的指纹识别工具)
二、漏洞发现
在这个阶段我们在做测试的时候要对症下药,不能盲目的去扫描,首先要确定目标应用是否使用的是公开的开源软件,开源框架等、然后在做深一度的漏洞扫描。
关于开源软件的漏洞发现
开源的软件:常见的开源软件有wordpress、phpbb、dedecms等
开源的框架:常见的开源框架有Struts2、 Spring MVC、ThinkPHP等
中间件服务器:常见的中间件服务器有jboss、tomcat、Weblogic等
数据库服务:常见的数据库服务mssql、mysql、oracle、redis、sybase、MongoDB、DB2等
对于开源软件的测试方法
1 通过指纹识别软件判断开源软件的版本信息,针对不同的版本信息去开放的漏洞数据库查找相应版本的漏洞进行测试
2 对于默认的后台登录页、数据库服务端口认证等入口可以进行简单的暴力破解、默认口令尝试等操作
3 使用开源的漏洞发现工具对其进行漏洞扫描,如:WPScan
关于自主开发的应用
手动测试:这个阶段,我们需要手工测试所有与用户交互的功能,比如:留言、登入、下单、退出、退货、付款等操作
软件扫描:使用免费的软件扫描,如:appscan、wvs、netsparker,burp等
可能存在的漏洞
Owasp关键点
代码安全之上传文件
代码安全之文件包含
代码安全之SSRF
逻辑漏洞之密码重置
逻辑漏洞之支付漏洞
逻辑漏洞之越权访问
平台安全之中间件安全
三、漏洞利用
针对不同的弱点有不同的漏洞利用方式,需要的知识点也比较多。一般这个阶段包括两种方式,一种是手工测试,一种是工具测试
手工测试
手工测试是通过客户端或服务器访问目标服务,手工向目标程序发送特殊的数据,包括有效的和无效的输入,观察目标的状态、对各种输入的反应,根据结果来发现问题的漏洞检测技术。手工测试不需要额外的辅助工具,可由测试者独立完成,实现起来比较简单。但这种方法高度依赖于测试者,需要测试者对目标比较了解。手工测试可用于Web应用程序、浏览器及其他需要用户交互的程序。
这种方式对于有特殊过滤等操作,或者网络上没有成型的利用工具的时候可以使用。
工具测试
网络上有很多好用的免费利用工具,比如针对sql注入的sqlmap、针对软件漏洞的matesploit等。
I. web漏洞要怎么验证
要根据网站的具体程序架构 如php+mysql 或asp+acc或aspx+sql2005
根据web的常见的漏洞如 sql注入 跨站脚本攻击 图片上传 逻辑漏洞测试 绕过验证测试等一系列的安全代码审计和渗透测试。有条件的话建议找专门做安全的安全公司来给你做安全渗透和安全评估国内也就Sinesafe和绿盟等安全公司比较专业.
J. web应用安全是什么跟应用安全是一样的么
WEB安全包括,WEB客户端安全,和WEB服务端安全;
WEB客户端安全,常见的问题就是,XSS漏洞,CSRF漏洞,以及其他浏览器插件或者JavaApplet漏洞。客户端的问题,主要是浏览器的特性导致的,攻击的是WEB系统的用户。
WEB服务端安全,常见的问题就是,SQL注入,文件上传,水平权限,系统命令执行等漏洞。服务端安全问题是服务端程序逻辑和服务端的HTTP服务器,应用服务器以及数据库服务器问题导致。
应用安全,不知道你指的是啥。如果指的是应用程序的安全,那就是常听说的缓冲区溢出,应用逻辑漏洞了。