web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。

本篇以我自己的网站为例来通俗易懂的讲述网站的常见漏洞,如何防止网站被入侵,如何让网站更安全

要想足够安全,首先得知道其中的道理。

本文例子通俗易懂,主要讲述了 各种漏洞 的原理及防护,相比网上其它的web安全入门文章来说,本文更丰富,更加具有实战性和趣味性。

本文讲解目录大致如下,讲述什么是暴力破解、xss、csrf、挂马等原理及对应的防护

           对手机验证码登录方式进行暴力破解及防护

           无视验证码而无限注册账号原理及防护

           什么是XSS?通过留言板来了解XSS

           什么是CSRF?如何应对?

           DDOS的原理及防护

           挂马的原理,如何防止网站被挂马?

           什么是钓鱼网站,如何避免钓鱼网站

           什么是安全渗透测试

        

 

        这里提前做个部署概念讲解: 客户端,即当前的 浏览器 软件 。 服务端 , 如 我是.net ,  那么如果我想让我的网站放到互联网上让你也能够在线浏览的话, 我需要对我的vs项目进行打包,然后选择一台电脑,这台电脑最好装着 windows server系列的系统(够专业) 来做服务器(也就是说服务器 就是 一台 和你平常用的电脑系统不一样,配置不一样,专门用于服务的电脑),然后我再在这台 电脑上(服务器) 装上一个 名叫 IIS Web服务器 的 一款软件,然后在这个软件上进行操作,把我的包给导入在这个软件中。这样,这个名叫 IIS Web服务器的软件就会 对包解析,然后再经过其它的相关配置,最终,你能够从互联网上点击浏览到我的网站。

所以,我下文的服务器,不要把这个名词想的太高大上,就是一款软件而已。

像搞JAVA的,无论是Linux还是Windows都可以当做服务器系统,还可以有众多web服务器软件可以选择,WebSphere 服务器、JBoss服务器等。

而.Net因为环境封闭,所以只能用微软的东西,windows+IIs,唯一区别就是版本了。

 

我的网站环境: windows server2008 R2 + IIS7.5

 

接下来我要简单的介绍下我网站的结构。

我的网站是一个轻博客网站,叫做1996v轻博客,用户可以注册账号后在我的网站上发布博客,也可以通过我发放的权限自由的更改页面结构。

我的网站分为  前台展示+后台设置  两部分组成  ,  废话不说了,上图。

 

 

对手机验证码进行暴力破解及防护

前台页面的所有展示都是由后台控制的,接下来我们先从   登录页面  开始   ,  看看 有什么漏洞。

下图就是登录页面,乍一看,这个页面挺干净的,就一个登录按钮的单击事件,和正常的网站的登录一样,漏洞,入侵,从哪去挖掘,又谈何说起呢?

 别急,我们按F12打开开发者控制台(我的浏览器是谷歌浏览器)。

 

 

因为我不确定当前看我 文章的都是什么群体,所以我会尽可能的写的够详细,不要嫌我啰嗦,我现在要简单介绍下F12 开发者控制台是什么。

如图,当你按下F12后,右侧会弹出个框,这个就是开发者控制台。上面有一列选项卡,我这里尽对前四个做下说明。

1. Elements 查看当前文档的DOM信息, 也就是可以看到当前页面经过浏览器渲染后最终呈现出来的html。

2. Console 控制台,可以直接在这里面敲代码,可以得到即时响应。

3. Source 查看当前站点的资源文件,在这里面可以看到当前站点下(www.1996v.com)的当前页面加载的所需源文件。

4. Network 这个主要是用来查看当前的页面的一些网络请求。

开发者控制台主要是给前端或者全栈开发师用的,可以获取和分析被查看的页面,基本上主流浏览器都有这个功能,通常是按F12将其打开。

 

现在,我们先选择手机登录:

 

这是我的登录界面,可以看到,用户可以自由选择用手机号去登录,和用账号密码去登录这两种登录方式。

先说下手机号去登录:

下面是我网站的手机登录的大致实现逻辑,放图:

 

整体流程为,当用户输入手机号发送验证并填写验证码点击登录按钮的时候,我的后台,会接收到用户填写的 手机号 和 验证码 ,  如果 验证码与运营商返回给我的验证码相同的话,那么就登录成功。

讲道理,这段代码没毛病,逻辑没毛病,总之,必须你输入对了正确的手机号和对应的正确的验证码你才能登录,否则,你怎么也登录不了。

但是,我还是能破解的!

首先,我经过多次测试,我知道 每次返回的验证码 是由4个数字组成,其次,验证码过期时间为1小时,而如果成功登录,会返回我一个状态码:1。

4个数字,无非就是0001~9999中间的一个!

也就是说,我只要在1个小时内,我一条条试,顶多9999次,肯定有一次能输入对!

而只要输对了,那就是一件很恐怖的事,我成功的登录了你的账号,去寻找我想要的东西。

那么,首先,我先从控制台中的Source来查看网页的源文件,进而知道登录的接口的地址以及参数名称,

我知道了接口地址:Server/Index/ApplayLogin.ashx,也就是 http://www.1996v.com/Server/Index/ApplayLogin.ashx

我也知道了参数名称,txtPhoneNum,txtPhoneCode。

我可以在console控制台里自己写ajax来进行试验破解。如图:

 然后回车一下,则会触发当前console中写入的内容,一个ajax将会执行。如果ajax返回的是1则说明登录成功,如果不成功,那么我就再换一个txtPhoneCode,一个一个ajax来试。

那么这种方式,因为验证码为4位数字,为了保证能够成功破解,就必须把0001~9999的每一种情况都写出来,那么就要写9999个ajax,复制粘贴ajax太过于麻烦,

那么有没有更好的破解方式?

有!使用抓包工具,这里将展示fiddler2.0工具。

什么是抓包?我通俗点来说就是意思是说把 发往和接受网络的信息拦截下来。

就比如当你点击登录按钮的时候,会触发这个ajax,这个ajax最终会变成 一段 http协议 给发送到  http://www.1996v.com/这个地址下,虽然ajax是你写的,但是你是看不到这段http协议的,而抓包工具可以捕获到这段http协议,你可以修改这串http协议。

先学而后知,如果你不懂什么是抓包,没问题,你仍然看的懂我接下来的教程,你只需要先记住个概念就行了,我有一款软件,叫做,fiddler,这个软件的类型是抓包软件,它可以模拟和修改http协议,来实现不打开浏览器也可以对服务器进行交互的过程。

对于抓包工具及fiddler,我这里只是先做个概念,方便后文,如有兴趣者,请自行百度:什么是http协议、fiddler教程。

你点击页面登录按钮,然后就会有一个ajax请求发送的http协议,而fiddler则会捕获这个请求,如图,双击对应的请求,右侧上方raw选项卡下则是该请求的httpRequestHeader,就是发送的http协议头了,服务器收到这个协议后会返回HttpResponseHeader输出流,在textview选项卡下可以看到。

OK,我们把完整的 httpRequestHeader给复制下来,然后点击请求构造:

 

txtPhoneNum=18889785648&txtPhoneCode=0001 这就是发送的参数, 填写在Request Body里面,代表着ajax中 data的部分,最后点击Execute按钮 进行发送。

这样,只需要对Request Body中的txtPhoneCode进行修改就好了,不需要写9999个ajax那么麻烦。

不过,有没有更简单的方法?

当然有,我们还可以自己写个程序,填写一下参数规则,然后运行程序,程序自动帮我发送http协议,并且自动帮我换参数。

而网上,已经有现成的工具,不用您去自己写了。

 

 类似于这样的功能的软件,后面我会介绍几款专业点的web破解软件。

如上图,是对office办公文档进行密码破解,原理都一样,先输入密码的规则,然后软件会根据规则自动生成一个  密码列表集合 ,比如0001~9999,那么就会 生成 一个 List<string> 集合,这个集合里面包含了如上规则的所有密码,然后软件对密码进行一个一个尝试,直到尝试到正确的密码提示您破解成功,这种模式叫做:暴力破解

 而密码列表集合,也有个专门的名词来描述,叫做:密码字典

 

好了,如上是一种破解手段,暴力破解,那么怎么防护呢?

 就以本文案例来说,加长这个短信验证码的长度,本来是4位,我们可以变成6位。对IP进行限制,在该IP下出现错误在规定时间超过3次,则封停24小时。对手机号做限制,如果第一次输入错误,则延长10秒进行登录,第二次输入错误则延长1分钟才能进行登录,依次类推。

这样,就可以很好的防范暴力破解了。

 

绕过验证码验证从而无限注册

接下来,我们看看注册。

当我在注册页面填写完账号密码后,到了 上传头像这一步了。

在任何网站当中,上传文件,和验证码,都是两大主要破解对象,通过上传文件的漏洞,我甚至可以获得服务器的控制权,后面我会讲上传文件破解的思路,接下来要讲验证码这一块。

如图,要输入验证码,这个账号才能注册成功。在后台当中,验证码大多就是用session和服务器缓存来保存,默认配置session依赖于iis进程,容易丢失,我这里就是用session来保存验证码的。

当进入这个页面的时候,会调用一个验证码生成方法:

也就是这个接口   http://www.1996v.com/Server/verification/ValidateCode.aspx  ,它会在我后台 产生一个 Session ["  ValidateCode "] ,当我点击注册的时候,我会效验这个 Session ["  ValidateCode "] 是否存在,如果存在就效验与浏览器传给我的 验证码值是否相等,如果相等则进行 接下来的注册代码逻辑。

我加了验证码验证这一环节,就能防止有人恶意注册了,如果不加,那么你通过上面的这些方法分分钟能注册一百个一万个。

什么是恶意注册?恶意注册有什么用?

我这个网站你是体验不出来恶意注册的好处的,但是我可以这样给你举个例子。你现在看到的不是我的网站,而是 新浪微博,你通过恶意注册100万个账号,然后这100万个账号同时关注一个账号,那么等于你就拥有了一个拥有百万粉丝的 新浪微博 账户,  管它死粉活粉,这玩意可就值钱了,你随便吹个牛逼卖一下,大几千上万肯定是有的。

那么,我加了验证码就可以防止恶意注册了吗?

当然不是,我上面的验证码就存在着2个漏洞,第一是 验证码 图片太过于简单,可以软件识别图片来进行破解, 第二是  逻辑漏洞。

先说第一个:用软件来识别,软件是怎么来识别的呢?

就是通过一系列的算法,通过图片的背景颜色等,来对图片进行分解,最终得出正确率高的验证码。

 比如遍历所有像素点,然后得出数组,对点和线进行算法分析,删除干扰的点线,删除不规则的数组项,然后再对过滤出来的数据进行本地数据库的一个匹配,最终得出一个正确的验证码。而本地数据库是从哪冒出来的,它是对前面步骤的重复N次而筛选保留下来的数据。

市面上这类软件很多,算法越高级的软件也就越高级, 而怎样防止这些软件破解验证码呢?那就是不走寻常路,放一些连人都无法轻易识别的验证码出来,或者猜个迷之类的...

好,接下来说第二种,逻辑漏洞。

讲道理,我的代码,浏览器点击注册按钮,如果验证码错误,则重新调用http://www.1996v.com/Server/verification/ValidateCode.aspx接口来对验证码进行刷新,如果验证码正确,并且注册成功,则跳转到新的页面。

而服务端,则是判断了session不为null,以防止未将对象引用到对象实例,又判断了与浏览器接收过来的code是否相等,不相等则调用验证码刷新接口,那么,还有什么我没有考虑到的呢?

有,当然有,那就是当我验证码输入正确时,因为我后台没有刷新session,那么我就可以通过抓包等形式,无限次的进行注册!

只有浏览器传过来的参数和我现在的服务端的Session[ " ValidateCode "  ] 相等,才能进行注册的逻辑。而是什么决定了 Session[ " ValidateCode "  ] 的值?是Server/verification/ValidateCode.aspx这个接口,我只要不调用这个接口,那么我的 Session[" ValidateCode "] 就永远不会变,所以我只需要输入对一次,那么就可以通过抓包进行无限次的注册。

所以,代码应该变成这样:

只要验证码输入正确,则立即调用刷新Session的接口。

 

什么是XSS?通过留言版来了解XSS

现在,成功注册账号,进入到当前账号的主页展示界面。

 

我们点击留言板进入留言板页面。

然后,在留言框中输入一段脚本,看看会不会执行。

结果,这段脚本根本不会执行。

在这里,我将给大家普及下XSS注入攻击。

什么是Xss?

它指的是恶意攻击者往Web页面里插入恶意,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的

就如同我现在  向留言板里插入 <script>alert("小曾你好帅啊")</script> 这样一段话,如果网站没有对 这段话进行过滤的话 ,那么当你浏览这个留言板的时候,就会执行这串脚本,弹出个窗说 小曾你好帅啊 。可能你发现可以输入脚本对你并没有产生安全威胁。那么我可以输入<script>window.open( " xxxxx.com " )</script>  这样的  跳转网页之类的代码,或者 document.cookie 获取你的cookie等之类的代码,这样的威胁就很大了。

以cookie为例,为了保持登录的稳定状态,一般会把token令牌(也就是你的账号密码)保存在cookie设置个过期时间放在浏览器进行保存,网站效验你登录状态,其实最终是根据cookie来的,如果你的网站没有对ip进行限制(一般都没有进行限制),我可以把你的cookie复制粘贴然后发送到另一台电脑上,然后设置下cookie,和登录你账号密码  是没区别的。

所以,如果网站里有留言或者私信或者发表文章的这些功能的时候,一定要对这些特殊字符进行过滤。

像上面这段<script>alert("小曾你好帅啊")</script>最终在我数据库中保存的是&lt;script&gt;alert("小曾你好帅啊")&lt;/script&gt 

function (str, reg) {
        return str ? str.replace(reg || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g, function (a, b) {
            if (b) {
                return a;
            } else {
                return {
                    '<':'&lt;',
                    '&':'&amp;',
                    '"':'&quot;',
                    '>':'&gt;',
                    "'":'&#39;'
                }[a]
            }

        }) : '';
    }

不过,我当前的留言板是采用json格式进行解析的,所以还需要对\符号进行转义,否则,如果你在回复框中输入一个 \ 符号, 则照样会报错。

 

 

上面这是Xss,只要对入口处对字符串浏览器服务端都做好过滤就可以有效的防范。

这里插入一条例子,在2011年的BlackHat DC 2011黑客大会上,一名黑客Ryan Barnett给出了一段关于XSS的示例javascript代码:

($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)

这段代码,巧妙的躲过掉一些过滤函数的检查,最终,被浏览器解析成 alert(1)

空数组是一个非null值,因此![]的结果是false(布尔型)。在计算false + []时,由于数组对象无法与其他值相加,在加法之前会先做一个字符串的转换,空数组的toString就是"",也就是说false+[]的结果为"false",

而在js中,~符号是 按位取反运算符, ~[] 则会被解析成-1 ,~[1] 则会变成-2  等等等等,最终就以这种巧妙的思想来变成了windows['alert(1)']。

不过这其实也是和浏览器的解析有关,可以把它理解成一个漏洞,总之,现如今的浏览器大多不能再实现这段代码。

 

在我的网站上你可以发表文章,用的是ueditor,发表文章你可以自由的更改文章的html,但是我后台通过正则表达式对脚本进行了过滤,如果没有我给你的脚本权限,你所有的脚本代码都会自动过滤掉,有兴趣的朋友可以想想思路想想办法,看能不能找到可以xss的地方。可以加下.net/web交流群 166843154,一起讨论讨论。

 

CSRF的原理,如何防护?

接下来我们在留言框中发一条信息:

我们会发现,当点击【发布】按钮的时候,实际上是以Post的方式调用了 http://www.1996v.com/Server/FootMark/AddFootMark.ashx 这个接口。

现在,我要搞破坏,我写个页面,然后这个页面调用这个接口,只要是打开了我这个页面的人,如果他在1996v网站处于登录状态的话,他都会进行一段留言,留言内容为:CSRF。

接下来我们新建个页面,这个页面就写个ajax:

然后运行该页面

发现 发表成功,我们在转回留言页面,发现同样的是一行CSRF出现在留言板上。

所以这里给大家一个思想就是,浏览器上所有的一切,你的各种按钮,与服务端的交互无非都是一段http协议,说白了,就是一个个接口。

你调用什么样的接口就会发生什么样的事,就比如 我的网站 现在有一个 关注功能的 接口, 这个接口是  http://xxxxxxxxxxxxx.com?name=秦始皇,意思就是,只要访问了这个接口,那么 当前登陆者就会关注一个  名叫 秦始皇  的选手,像我的新浪微博账号,什么都没有发布,就莫名其妙的就有几十个粉丝,像有些人,明明什么都没做,点开空间却突然发现自己不知何时发了好多小广告。

等等例子,以上这种方式就属于CSRF(伪装跨站攻击)

所以,千万不要乱点击链接。

当然,浏览器 也针对这种情况 做了浏览器上的一个安全限制,叫做:同源策略

大致意思就是,但凡遵守 同源策略规则 的浏览器  ,在这个浏览器上  如果 a网站 想调用b网站 的接口 ,如果b网站的服务器不同意的话,a网站的调用就会报错。

所以,不遵守 同源策略 的浏览器 , 都是 不安全的 浏览器 ,不过现在大部分主流浏览器 都遵守 同源策略,放心用吧。

不过,因为同源策略是针对浏览器,所以如果你会抓包,你懂http协议,你直接在服务器上写一个http请求的话,同源策略就没用了。

 

目前很多网站,对于一些并没有涉及到利益或安全的接口上,大多都存在着CSRF的漏洞。

 

如果你搞的是商城之类的网站,那么你就必须要重视这块了。

比如交易的时候,我把你的支付接口进行各种包装,然后诱导其它人使用这个接口给我汇账...

那么怎样避免呢?除了要效验Referer主要还是靠Token,后端接口必须要有完善的鉴权机制, 当你进入交易页面的时候,根据有效时间、有效次数、当前用户等生成一条Token令牌,然后将令牌存到header中或者直接带过去,后台进行匹配,吻合即交易,不吻合就属于非法请求。

除非你也知道这条Token,那么请求都将被拦截。

 

DDOS原理及防护

在这里,我还要小小的提示下,http协议可不止get、post

还有危险的PUT、DELETE等,如果我用Delete方式进行请求,那么请求啥,服务器就会删啥。

我们可以用OPTIONS的请求方式来判断,服务器允许哪几种请求。

我们发现,我的网站服务器允许的请求类型有:OPTIONS(可以获取服务器允许的请求类型)、TRACE(用于远程诊断服务器)、GET、HEAD(类似于GET, 但是不返回body信息,用于检查对象是否存在,比如判断接口是否可以访问)、POST

 一般服务器会自动关闭掉危险的请求方法,上图我所示的是IIS7.5默认的 服务器允许请求的类型。

 而不管是哪种类型,在后台服务器上的处理模式都是统一的,服务器因为CPU等配置的不同,在同一时间能够请求的并发处理数是有限制的。

比如我这台云服务器,可以在同一时间请求50个并发量,如果你开500个线程来发送http请求同一时间访问我的服务器,那我的服务器会挂掉的。

对攻击网站发动大量的正常或非正常请求、耗尽目标主机资源或网络资源,从而使被攻击的主机不能为合法用户提供服务,这个就属于 DDOS 攻击

 对于DDOS,建议买高防的DDOS服务器就可以了。

 

挂马的原理,如何防止网站被挂马?

上面的XSS,CSRF主要是动脑筋来找思路,无论技术高低,只要你能找到漏洞那就能造成很严重的后果,我现在要介绍的是危害很严重并且普遍存在的 上传漏洞。

我的网站的上传,也就是上传图片。我的做法是这样的,先在浏览器把文件转换为base64,然后传到浏览器,再效验一下,正确就直接按上传过来的后缀进行保存,否则就是非法请求。

那么,如何进行效验呢?

通过截取扩展名来做判断,或者通过ContentType (MIME) 判断,但是这两种都不安全。

ContentType我把包修改一下修改成image类型就可以绕过。

而扩展名验证这一块也有漏洞可寻,不过是存在于IIS6.0服务器上的。

如果你的服务器是IIS6.0,我现在上传一个文件名叫做   新建文本文档.txt%00.jpg  的文件, 这个文件在服务器上被辨别后缀是.jpg,但是保存在本地 却以   新建文本文档.txt   的形式保存,这样,就成功的绕过了你的后缀名的判断,这种方式叫做  %00文件名截断  。

如果人家上传的是一个关机指令的脚本,那么一旦运行成功的话就会关机。

那么这一块该怎么防范呢?我们可以把文件变成Byte[]来存储,然后在进行读取效验,或者不怕麻烦的可以直接在服务器再转一道类型,如果报错就是假的。这里就不贴代码了,请自行百度.net获取文件真实类型。

 关于IIS6.0的上传漏洞还有一些,如在网站目录中如果存在名为*.asp、*.asa的目录,那该目录内的任何文件都会被IIS解析为asp文件并执行。

这种通过上传一段脚本木马的方式就叫做挂马

这其中,有一款比较厉害的软件叫做 中国菜刀 ,俗称“ 一句话木马 ” ,意思是 ,你用这个软件特殊处理一个文件(如图片),然后上传到网站当中,只要执行了这个文件,那么攻击者就会拿到网站的控制权,有兴趣了解的可以百度下 中国菜刀。

 

好了,我们总结一下,像这种挂马形式上传文件的漏洞,主要还是 服务器上的漏洞, 也就是你现在用一款软件,这个软件本身有bug,而并不是你导致的问题,所以像这类东西,尽量用新点的,别用什么   老版本稳定 这种话来搪塞自己,无论是性能还是安全,版本升级自然有人家升级的意义。像sqlserver2008,就可以通过sql注入的形式故意输错从而获取到表的字段名称。又如 office软件 拥有读写本地文件的权利,  而刚好有个可以注入的office的漏洞,这样人家就可以通过office来对你的本地文件进行操作了,所以电脑上一些漏洞能更新的就更新。

 

什么是钓鱼网站?

比如我的网站地址是:www.1996v.com,而钓鱼网站的地址是:www.I996v.com

钓鱼网站的地址 和我的地址很相似, 不过我的是 1 而 它的是 英文 I,而网站的内容 也差不多和我网站的内容一样。

通过伪装url和网站内容用来欺骗行为的网站 就是钓鱼网站了。

 

 

什么是安全渗透测试?

安全渗透测试是对网站和服务器的全方位安全测试,通过模拟黑客攻击的手法,切近实战,提前检查网站的漏洞。

接下来我将介绍一些安全渗透的软件。

像 Burp Suite、WVS(AWVS),都是类似于Fiddler的软件,可以抓包之类的。

DirBuster目录渗透工具,专门用于探测Web服务器的目录和隐藏文件。

Nmap网络连接端软件,网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。

Pangolin Sql注入工具

AppScan业界领先的web应用安全监测工具(软件界面可以选择中文,不过是收费的)

...还有很多,感兴趣请自行百度。

 

关于本文

 嗯.....关于我这个网站,也就是当时利用业余时间做的。我接下来准备利用业余时间做一个非常优秀的  开源的CMS、CRM自定义模板生成系统,我是一个非常非常上进的年轻人,一个非常非常热爱技术的年轻人,如果你也是和我一样,或者你也是搞web的,想用好的环境来造就自己,不妨可以加下群 .net/web交流群 166843154,一起讨论讨论。

 

 

作者:小曾
出处:http://www.cnblogs.com/1996V/p/7458377.html 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
.Net交流群, QQ群:166843154 欲望与挣扎 
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Web安全深度剖析》总结了当前流行的高危漏洞的形成原因、攻击手段及解决方案,并通过大量的示例代码复现漏洞原型,制作模拟环境,好地帮助读者深入了解Web应用程序中存在的漏洞,防患于未然。 《Web安全深度剖析》从攻到防,从原理到实战,由浅入深、循序渐进地介绍了Web 安全体系。全书分4 篇共16 章,除介绍Web 安全的基础知识外,还介绍了Web 应用程序中最常见的安全漏洞、开源程序的攻击流程与防御,并着重分析了“拖库”事件时黑客所使用的攻击手段。此外,还介绍了渗透测试工程师其他的一些检测方式。 《Web安全深度剖析》最适合渗透测试人员、Web 开发人员、安全咨询顾问、测试人员、架构师、项目经理、设计等人员阅读,也可以作为信息安全等相关专业的教材。 第1篇 基础篇 第1章 Web安全简介 2 1.1 服务器是如何被入侵的 2 1.2 如何好地学习Web安全 4 第2章 深入HTTP请求流程 6 2.1 HTTP协议解析 6 2.1.1 发起HTTP请求 6 2.1.2 HTTP协议详解 7 2.1.3 模拟HTTP请求 13 2.1.4 HTTP协议与HTTPS协议的区别 14 2.2 截取HTTP请求 15 2.2.1 Burp Suite Proxy 初体验 15 2.2.2 Fiddler 19 2.2.3 WinSock Expert 24 2.3 HTTP应用:黑帽SEO之搜索引擎劫持 24 2.4 小结 25 第3章 信息探测 26 3.1 Google Hack 26 3.1.1 搜集子域名 26 3.1.2 搜集Web信息 27 3.2 Nmap初体验 29 3.2.1 安装Nmap 29 3.2.2 探测主机信息 30 3.2.3 Nmap脚本引擎 32 3.3 DirBuster 33 3.4 指纹识别 35 3.5 小结 38 第4章 漏洞扫描 39 4.1 Burp Suite 39 4.1.1 Target 39 4.1.2 Spider 40 4.1.3 Scanner 42 4.1.4 Intruder 43 4.1.5 辅助模块 46 4.2 AWVS 49 4.2.1 WVS向导扫描 50 4.2.2 Web扫描服务 52 4.2.3 WVS小工具 53 4.3 AppScan 54 4.3.1 使用AppScan扫描 55 4.3.2 处理结果 58 4.3.3 AppScan辅助工具 58 4.4 小结 61 第2篇 原理篇 第5章 SQL注入漏洞 64 5.1 SQL注入原理 64 5.2 注入漏洞分类 66 5.2.1 数字型注入 66 5.2.2 字符型注入 67 5.2.3 SQL注入分类 68 5.3 常见数据库注入 69 5.3.1 SQL Server 69 5.3.2 MySQL 75 5.3.3 Oracle 84 5.4 注入工具 89 5.4.1 SQLMap 89 5.4.2 Pangolin 95 5.4.3 Havij 98 5.5 防止SQL注入 99 5.5.1 严格的数据类型 100 5.5.2 特殊字符转义 101 5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析漏洞 109 6.1.3 PHP CGI解析漏洞 110 6.2 绕过上传漏洞 110 6.2.1 客户端检测 112 6.2.2 服务器端检测 115 6.3 文本编辑器上传漏洞 123 6.4 修复上传漏洞 127 6.5 小结 128 第7章 XSS跨站脚本漏洞 129 7.1 XSS原理解析 129 7.2 XSS类型 130 7.2.1 反射型XSS 130 7.2.2 存储型XSS 131 7.2.3 DOM XSS 132 7.3 检测XSS 133 7.3.1 手工检测XSS 134 7.3.2 全自动检测XSS 134 7.4 XSS高级利用 134 7.4.1 XSS会话劫持 135 7.4.2 XSS Framework 141 7.4.3 XSS GetShell 144 7.4.3 XSS蠕虫 149 7.5 修复XSS跨站漏洞 151 7.5.1 输入与输出 151 7.5.2 HttpOnly 158 7.6 小结 160 第8章 命令执行漏洞 161 8.1 OS命令执行漏洞示例 161 8.2 命令执行模型 162 8.2.1 PHP命令执行 163 8.2.2 Java命令执行 165 8.3 框架执行漏洞 166 8.3.1 Struts2代码执行漏洞 166 8.3.2 ThinkPHP命令执行漏洞 169 8.3 防范命令执行漏洞 169 第9章 文件包含漏洞 171 9.1 包含漏洞原理解析 171 9.1.1 PHP包含 171 9.1.2 JSP包含 180 9.2 安全编写包含 184 9.3 小结 184 第10章 其他漏洞 185 10.1 CSRF 185 10.1.1 CSRF攻击原理 185 10.1.2 CSRF攻击场景(GET) 186 10.1.3 CSRF攻击场景(POST) 188 10.1.4 浏览器Cookie机制 190 10.1.5 检测CSRF漏洞 193 10.1.6 预防跨站请求伪造 197 10.2 逻辑错误漏洞 199 10.2.1 挖掘逻辑漏洞 199 10.2.2 绕过授权验证 200 10.2.3 密码找回逻辑漏洞 204 10.2.4 支付逻辑漏洞 205 10.2.5 指定账户恶意攻击 209 10.3 代码注入 210 10.3.1 XML注入 211 10.3.2 XPath注入 212 10.3.3 JSON注入 215 10.3.4 HTTP Parameter Pollution 216 10.4 URL跳转与钓鱼 218 10.4.1 URL跳转 218 10.4.2 钓鱼 220 10.5 WebServer远程部署 224 10.5.1 Tomcat 224 10.5.2 JBoss 226 10.5.3 WebLogic 229 10.6 小结 233 第3篇 实战篇 第11章 实战入侵与防范 236 11.1 开源程序安全剖析 236 11.1.1 0day攻击 236 11.1.2 网站后台安全 238 11.1.3 MD5还安全吗 243 11.2 拖库 248 11.2.1 支持外连接 248 11.2.2 不支持外连接 253 11.3 小结 262 第4篇 综合篇 第12章 暴力破解测试 264 12.1 C/S架构破解 265 12.2 B/S架构破解 272 12.3 暴力破解案例 275 12.4 防止暴力破解 277 12.5 小结 278 第13章 旁注攻击 279 13.1 服务器端Web架构 279 13.2 IP逆向查询 280 13.3 SQL跨库查询 282 13.4 目录越权 283 13.5 构造注入点 284 13.6 CDN 286 13.7 小结 288 第14章 提权 290 14.1 溢出提权 290 14.2 第三方组件提权 294 14.2.1 信息搜集 294 14.2.2 数据库提权 296 14.2.3 FTP提权 302 14.2.4 PcAnywhere提权 312 14.3 虚拟主机提权 314 14.4 提权辅助 315 14.4.1 3389端口 315 14.4.2 端口转发 318 14.4.3 启动项提权 320 14.4.4 DLL劫持 321 14.4.5 添加后门 322 14.5 服务器防提权措施 324 14.6 小结 325 第15章 ARP欺骗攻击 326 15.1 ARP协议简介 326 15.1.1 ARP缓存表 326 15.1.2 局域网主机通信 327 15.1.3 ARP欺骗原理 328 15.2 ARP攻击 329 15.2.1 Cain 329 15.2.2 Ettercap 332 15.2.3 NetFuke 336 15.3 防御ARP攻击 339 15.4 小结 340 第16章 社会工程学 341 16.1 信息搜集 341 16.2 沟通 343 16.3 伪造 344 16.4 小结 345
支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,常用于分类和回归问题。其原理相对来说较为复杂,但可以通过以下通俗易懂的方式进行解释: SVM的基本思想是找到一个最佳的超平面将不同类别的数据完全分开。换句话说,我们要找到一个决策边界,使得属于某一类的样本点都在一个侧面,而属于另一类的样本点则在另一侧面。 为了找到这个最佳的超平面,SVM引入了支持向量的概念。支持向量是离决策边界最近的那些样本点,它们对于决策边界的确定起到关键作用。这些支持向量点到决策边界的距离被称为间隔,我们的目标是找到最大化间隔的决策边界。 但是,在实际问题中,数据往往无法完全线性分开。为解决这个问题,SVM引入了核函数的概念。核函数将数据从原始空间映射到高维的特征空间,在特征空间中,原本线性不可分的问题可能变得线性可分。 基于核函数的SVM即通过在特征空间中寻找最佳的超平面来解决非线性问题。通过设置不同的核函数,我们可以将数据映射到不同的特征空间,并得到不同的决策边界。 SVM的训练过程可以通过求解一个凸优化问题来实现。优化问题的目标是最大化间隔,同时要求决策边界的分类结果尽量准确。通过使用相关的数学方法,可以求解出最优的超平面以及对应的支持向量。 总之,SVM是一种通过找到最佳的超平面来实现分类的机器学习算法。它的原理简单概括为找到一条决策边界,使得离这条边界最近的样本点都被正确分类,并且间隔最大化。通过引入核函数,SVM也可以解决非线性分类问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值