杭州校区切换校区

新闻资讯

  • news

    用 Apache 服务器模块保护您的网站免受应用层 DOS 攻击

    发布时间:2018-02-05

    <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;"><span style="color:#999999;line-height:19.2px;">&nbsp; &nbsp; 通过配置普通的网页服务器,可以保护网页免受应用层攻击,至少是适度的防护。防止这种形式的攻击是非常重要的,因为 Cloudflare 最近 报告称 网络层攻击的数量正在减少,而应用层攻击的数量则在增加。</span></p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">&nbsp; &nbsp; &nbsp;有多种可以导致网站下线的攻击方法,比较复杂的方法要涉及数据库和编程方面的技术知识。一个更简单的方法被称为“拒绝服务Denial Of Service”(DOS)攻击。这个攻击方法的名字来源于它的意图:使普通客户或网站访问者的正常服务请求被拒绝。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">一般来说,有两种形式的 DOS 攻击:</p><span style="color:#666666;font-family:&quot;font-size:14px;background-color:#FFFFFF;">☉&nbsp;OSI 模型的三、四层,即网络层攻击☉&nbsp;OSI 模型的七层,即应用层攻击</span><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">第一种类型的 DOS 攻击——网络层,发生于当大量的垃圾流量流向网页服务器时。当垃圾流量超过网络的处理能力时,网站就会宕机。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">第二种类型的 DOS 攻击是在应用层,是利用合法的服务请求,而不是垃圾流量。当页面请求数量超过网页服务器能承受的容量时,即使是合法访问者也将无法使用该网站。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">本文将着眼于缓解应用层攻击,因为减轻网络层攻击需要大量的可用带宽和上游提供商的合作,这通常不是通过配置网络服务器就可以做到的。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">通过配置普通的网页服务器,可以保护网页免受应用层攻击,至少是适度的防护。防止这种形式的攻击是非常重要的,因为&nbsp;<span style="font-family:&quot;color:#4D8AD8;line-height:28px;">Cloudflare</span><span class="" style="font-family:&quot;color:#FFFFFF;line-height:1em;font-size:9px;vertical-align:super;background-color:#666666;">[1]</span>&nbsp;最近&nbsp;<span style="font-family:&quot;color:#4D8AD8;line-height:28px;">报告称</span><span class="" style="font-family:&quot;color:#FFFFFF;line-height:1em;font-size:9px;vertical-align:super;background-color:#666666;">[2]</span>&nbsp;网络层攻击的数量正在减少,而应用层攻击的数量则在增加。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">本文将介绍如何使用&nbsp;<span style="font-family:&quot;color:#4D8AD8;line-height:28px;">zdziarski</span><span class="" style="font-family:&quot;color:#FFFFFF;line-height:1em;font-size:9px;vertical-align:super;background-color:#666666;">[3]</span>&nbsp;开发的 Apache2 的模块&nbsp;<span style="font-family:&quot;color:#4D8AD8;line-height:28px;">mod_evasive</span><span class="" style="font-family:&quot;color:#FFFFFF;line-height:1em;font-size:9px;vertical-align:super;background-color:#666666;">[4]</span>。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">另外,mod_evasive 会阻止攻击者通过尝试数百个用户名和密码的组合来进行猜测(即暴力攻击)的企图。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">mod_evasive 会记录来自每个 IP 地址的请求的数量。当这个数字超过相应 IP 地址的几个阈值之一时,会出现一个错误页面。错误页面所需的资源要比一个能够响应合法访问的在线网站少得多。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">在 Ubuntu 16.04 上安装 mod_evasive</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">Ubuntu 16.04 默认的软件库中包含了 mod_evasive,名称为 “libapache2-mod-evasive”。您可以使用&nbsp;apt-get&nbsp;来完成安装:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#E28964;line-height:28px;">apt-get</span><span class="" style="color:#B8FFB8;line-height:28px;"> update</span></p></li><li><p><span class="" style="color:#E28964;line-height:28px;">apt-get</span><span class="" style="color:#B8FFB8;line-height:28px;"> upgrade</span></p></li><li><p><span class="" style="color:#E28964;line-height:28px;">apt-get</span><span class="" style="color:#B8FFB8;line-height:28px;"> install libapache2</span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">mod</span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">evasive</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">现在我们需要配置 mod_evasive。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">它的配置文件位于&nbsp;/etc/apache2/mods-available/evasive.conf。默认情况下,所有模块的设置在安装后都会被注释掉。因此,在修改配置文件之前,模块不会干扰到网站流量。</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#89BDFF;line-height:28px;">&lt;IfModule</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#BDB76B;line-height:28px;">mod_evasive20</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#BDB76B;line-height:28px;">c</span><span class="" style="color:#89BDFF;line-height:28px;">&gt;</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSHashTableSize &nbsp; &nbsp;3097</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSPageCount &nbsp; &nbsp; &nbsp; &nbsp;2</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSSiteCount &nbsp; &nbsp; &nbsp; &nbsp;50</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSPageInterval &nbsp; &nbsp; 1</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSSiteInterval &nbsp; &nbsp; 1</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSBlockingPeriod &nbsp; 10</span></p></li><li></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSEmailNotify &nbsp; &nbsp; &nbsp;you@yourdomain.com</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSSystemCommand &nbsp; &nbsp;"su - someuser -c '/sbin/... %s ...'"</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSLogDir &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "/var/log/mod_evasive"</span></p></li><li><p><span class="" style="color:#89BDFF;line-height:28px;">&lt;/IfModule&gt;</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">第一部分的参数的含义如下:</p><span style="color:#666666;font-family:&quot;font-size:14px;background-color:#FFFFFF;">◈&nbsp;DOSHashTableSize&nbsp;- 正在访问网站的 IP 地址列表及其请求数的当前列表。◈&nbsp;DOSPageCount&nbsp;- 在一定的时间间隔内,每个页面的请求次数。时间间隔由 DOSPageInterval 定义。◈&nbsp;DOSPageInterval&nbsp;- mod_evasive 统计页面请求次数的时间间隔。◈&nbsp;DOSSiteCount&nbsp;- 与&nbsp;DOSPageCount&nbsp;相同,但统计的是来自相同 IP 地址对网站内任何页面的请求数量。◈&nbsp;DOSSiteInterval&nbsp;- mod_evasive 统计网站请求次数的时间间隔。◈&nbsp;DOSBlockingPeriod&nbsp;- 某个 IP 地址被加入黑名单的时长(以秒为单位)。</span><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">如果使用上面显示的默认配置,则在如下情况下,一个 IP 地址会被加入黑名单:</p><span style="color:#666666;font-family:&quot;font-size:14px;background-color:#FFFFFF;">◈&nbsp;每秒请求同一页面超过两次。◈&nbsp;每秒请求 50 个以上不同页面。</span><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">如果某个 IP 地址超过了这些阈值,则被加入黑名单 10 秒钟。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">这看起来可能不算久,但是,mod_evasive 将一直监视页面请求,包括在黑名单中的 IP 地址,并重置其加入黑名单的起始时间。只要一个 IP 地址一直尝试使用 DOS 攻击该网站,它将始终在黑名单中。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">其余的参数是:</p><span style="color:#666666;font-family:&quot;font-size:14px;background-color:#FFFFFF;">◈&nbsp;DOSEmailNotify&nbsp;- 用于接收 DOS 攻击信息和 IP 地址黑名单的电子邮件地址。◈&nbsp;DOSSystemCommand&nbsp;- 检测到 DOS 攻击时运行的命令。◈&nbsp;DOSLogDir&nbsp;- 用于存放 mod_evasive 的临时文件的目录。</span><p class="" style="font-family:Optima-Regular, PingFangTC-light;color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">配置 mod_evasive</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">默认的配置是一个很好的开始,因为它不会阻塞任何合法的用户。取消配置文件中的所有参数(DOSSystemCommand&nbsp;除外)的注释,如下所示:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#89BDFF;line-height:28px;">&lt;IfModule</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#BDB76B;line-height:28px;">mod_evasive20</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#BDB76B;line-height:28px;">c</span><span class="" style="color:#89BDFF;line-height:28px;">&gt;</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSHashTableSize &nbsp; 3097</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSPageCount &nbsp; &nbsp; &nbsp; 2</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSSiteCount &nbsp; &nbsp; &nbsp; 50</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSPageInterval &nbsp; &nbsp;1</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSSiteInterval &nbsp; &nbsp;1</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSBlockingPeriod &nbsp;10</span></p></li><li></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSEmailNotify &nbsp; &nbsp; &nbsp; JohnW@example.com</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; #DOSSystemCommand &nbsp; &nbsp;"su - someuser -c '/sbin/... %s ...'"</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; DOSLogDir &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"/var/log/mod_evasive"</span></p></li><li><p><span class="" style="color:#89BDFF;line-height:28px;">&lt;/IfModule&gt;</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">必须要创建日志目录并且要赋予其与 apache 进程相同的所有者。这里创建的目录是&nbsp;/var/log/mod_evasive&nbsp;,并且在 Ubuntu 上将该目录的所有者和组设置为&nbsp;www-data&nbsp;,与 Apache 服务器相同:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#E28964;line-height:28px;">mkdir</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#E28964;line-height:28px;">var</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">log</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">mod_evasive</span></p></li><li><p><span class="" style="color:#E28964;line-height:28px;">chown</span><span class="" style="color:#B8FFB8;line-height:28px;"> www</span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">data</span><span class="" style="color:#B8FFB8;line-height:28px;">:</span><span class="" style="color:#B8FFB8;line-height:28px;">www</span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">data </span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#E28964;line-height:28px;">var</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">log</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">mod_evasive</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">在编辑了 Apache 的配置之后,特别是在正在运行的网站上,在重新启动或重新加载之前,最好检查一下语法,因为语法错误将影响 Apache 的启动从而使网站宕机。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">Apache 包含一个辅助命令,是一个配置语法检查器。只需运行以下命令来检查您的语法:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;line-height:28px;">apachectl configtest</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">如果您的配置是正确的,会得到如下结果:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#89BDFF;line-height:28px;">Syntax</span><span class="" style="color:#B8FFB8;line-height:28px;"> OK</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">但是,如果出现问题,您会被告知在哪部分发生了什么错误,例如:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;line-height:28px;">AH00526</span><span class="" style="color:#B8FFB8;line-height:28px;">:</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Syntax</span><span class="" style="color:#B8FFB8;line-height:28px;"> error on line </span><span class="" style="color:#3387CC;line-height:28px;">6</span><span class="" style="color:#B8FFB8;line-height:28px;"> of </span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">etc</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">apache2</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">mods</span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">enabled</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#B8FFB8;line-height:28px;">evasive</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#B8FFB8;line-height:28px;">conf</span><span class="" style="color:#B8FFB8;line-height:28px;">:</span></p></li><li><p><span class="" style="color:#89BDFF;line-height:28px;">DOSSiteInterval</span><span class="" style="color:#B8FFB8;line-height:28px;"> takes one argument</span><span class="" style="color:#B8FFB8;line-height:28px;">,</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Set</span><span class="" style="color:#B8FFB8;line-height:28px;"> site interval</span></p></li><li><p><span class="" style="color:#89BDFF;line-height:28px;">Action</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#65B042;line-height:28px;">'configtest'</span><span class="" style="color:#B8FFB8;line-height:28px;"> failed</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span></p></li><li><p><span class="" style="color:#89BDFF;line-height:28px;">The</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Apache</span><span class="" style="color:#B8FFB8;line-height:28px;"> error log may have </span><span class="" style="color:#E28964;line-height:28px;">more</span><span class="" style="color:#B8FFB8;line-height:28px;"> information</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">如果您的配置通过了 configtest 的测试,那么这个模块可以安全地被启用并且 Apache 可以重新加载:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;line-height:28px;">a2enmod evasive</span></p></li><li><p><span class="" style="color:#E28964;line-height:28px;">systemctl</span><span class="" style="color:#B8FFB8;line-height:28px;"> reload apache2</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#B8FFB8;line-height:28px;">service</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">mod_evasive 现在已配置好并正在运行了。</p><p class="" style="font-family:Optima-Regular, PingFangTC-light;color:#FFFFFF;font-size:1.4em;background-color:#3F51B5;">测试</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">为了测试 mod_evasive,我们只需要向服务器提出足够的网页访问请求,以使其超出阈值,并记录来自 Apache 的响应代码。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">一个正常并成功的页面请求将收到如下响应:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">200</span><span class="" style="color:#B8FFB8;line-height:28px;"> OK</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">但是,被 mod_evasive 拒绝的将返回以下内容:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">403</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Forbidden</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">以下脚本会尽可能迅速地向本地主机(127.0.0.1,localhost)的 80 端口发送 HTTP 请求,并打印出每个请求的响应代码。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">你所要做的就是把下面的 bash 脚本复制到一个文件中,例如&nbsp;mod_evasive_test.sh:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#AEAEAE;line-height:28px;font-style:italic;">#</span><span class="" style="color:#B8FFB8;line-height:28px;">!</span><span class="" style="color:#65B042;line-height:28px;">/bin/</span><span class="" style="color:#E28964;line-height:28px;">bash</span></p></li><li><p><span class="" style="color:#E28964;line-height:28px;">set</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">e</span></p></li><li></li><li><p><span class="" style="color:#E28964;line-height:28px;">for</span><span class="" style="color:#B8FFB8;line-height:28px;"> i </span><span class="" style="color:#E28964;line-height:28px;">in</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#B8FFB8;line-height:28px;">{</span><span class="" style="color:#3387CC;line-height:28px;">1.</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#3387CC;line-height:28px;">50</span><span class="" style="color:#B8FFB8;line-height:28px;">};</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#E28964;line-height:28px;">do</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;"> &nbsp; &nbsp; &nbsp; &nbsp;curl </span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">s </span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">I </span><span class="" style="color:#3387CC;line-height:28px;">127.0</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#3387CC;line-height:28px;">0.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#B8FFB8;line-height:28px;">|</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#E28964;line-height:28px;">head</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#B8FFB8;line-height:28px;">-</span><span class="" style="color:#B8FFB8;line-height:28px;">n </span><span class="" style="color:#3387CC;line-height:28px;">1</span></p></li><li><p><span class="" style="color:#E28964;line-height:28px;">done</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">这个脚本的部分含义如下:</p><span style="color:#666666;font-family:&quot;font-size:14px;background-color:#FFFFFF;">◈&nbsp;curl&nbsp;- 这是一个发出网络请求的命令。◈&nbsp;-s&nbsp;- 隐藏进度表。◈&nbsp;-I&nbsp;- 仅显示响应头部信息。◈&nbsp;head&nbsp;- 打印文件的第一部分。◈&nbsp;-n 1&nbsp;- 只显示第一行。</span><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">然后赋予其执行权限:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#E28964;line-height:28px;">chmod</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">755</span><span class="" style="color:#B8FFB8;line-height:28px;"> mod_evasive_test</span><span class="" style="color:#B8FFB8;line-height:28px;">.</span><span class="" style="color:#B8FFB8;line-height:28px;">sh</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">在启用 mod_evasive&nbsp;<span style="font-family:&quot;color:#C40F0F;line-height:28px;">之前</span>,脚本运行时,将会看到 50 行 “HTTP / 1.1 200 OK” 的返回值。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">但是,启用 mod_evasive 后,您将看到以下内容:</p> <pre class=""><ol class="list-paddingleft-2"><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">200</span><span class="" style="color:#B8FFB8;line-height:28px;"> OK</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">200</span><span class="" style="color:#B8FFB8;line-height:28px;"> OK</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">403</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Forbidden</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">403</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Forbidden</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">403</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Forbidden</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">403</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Forbidden</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">HTTP</span><span class="" style="color:#B8FFB8;line-height:28px;">/</span><span class="" style="color:#3387CC;line-height:28px;">1.1</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#3387CC;line-height:28px;">403</span><span class="" style="color:#B8FFB8;line-height:28px;"> </span><span class="" style="color:#89BDFF;line-height:28px;">Forbidden</span></p></li><li><p><span class="" style="color:#B8FFB8;line-height:28px;">...</span></p></li></ol></pre> <p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">前两个请求被允许,但是在同一秒内第三个请求发出时,mod_evasive 拒绝了任何进一步的请求。您还将收到一封电子邮件(邮件地址在选项&nbsp;DOSEmailNotify&nbsp;中设置),通知您有 DOS 攻击被检测到。</p><p style="font-family:Optima-Regular, PingFangTC-light;color:#3E3E3E;font-size:14px;background-color:#FFFFFF;">mod_evasive 现在已经在保护您的网站啦!</p>
  • news

    商业项目中最受欢迎的 7 种编程语言

    发布时间:2018-01-29

    <p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:28px;">在过去的三年中,我们不断地对 Semaphore 博客上的开发人员进行调查,调查他们在开发商业项目时一般都使用哪些语言。这些数据基于成千上万个在 Semaphore 上进行测试和部署的项目的人。所以现在这是迄今为止关于商业项目中最受欢迎的开源编程语言的全面报告。</span></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><img src="http://115.29.210.249/tggPic/content/2018-01/1517191833521.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-01/1517191833521.jpg" alt=""></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:28px;"><strong>Elixir</strong></span></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:28px;">Elixir 是一个相当年轻的语言,自然几乎所有的项目都是基于最新版本的。40% 的项目使用的是今年发布的Elixir 1.4 及以上版本,该版本于 2016 年 1 月 1日发布。</span></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><strong>Go</strong></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">Go的发布政策规定,支持Go的每个主要的版本。因此,使用Go的商业项目中有60%正在使用官方支持的版本。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><strong>Java</strong></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">大多数项目都基于Java 8。Java 9 于17 年9 月发布,但现在的项目似乎没有采用。甲骨文公司宣布,将长期支持 Java 8版本,甚至到 2022 年,而Java 9将不会被指定为长期支持的版本。Java 18.9 LTS 计划于2018年9月发布。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><strong>Node.js</strong></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">在过去的几年中,Node.js 运行时发生过很多变化,最终整合了新的发布时间表。实际情况是,几乎三分之一的项目都是使用过时的 Node 版本,而不到10%的项目使用 2017 年发布的版本(v8或v9)。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">Node 9 在今年秋天发布,但我们还没有很多项目采用。值得注意的是,截至3月份,AWS Lambda 支持Node.js 6.10 版本。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><strong>PHP</strong></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">PHP 已经成为多年来使用最多的十大语言之一,并且在建站时,它都用在服务器端。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">大部分项目正在使用 5.6 版本,在2017年1月19日就结束了支持。此版本将持续更新,直到2018年底。不再支持 5,3,5.4 和 5.5 版本。这可能是由于从 5.x 更新到7.x的过程很复杂。例如,许多致命错误已被转换为异常,变量和整数处理。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">所有使用PHP的项目中有19%使用PHP 7.0版本。该版本于2015年12月发布,支持期限为1个月。7.1版于去年十二月发布。到目前为止,只有9%的项目正在使用它。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><strong>python</strong></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">Python去年就在黑客新闻和各种论坛上受到了很多关注,尽管Python 3 会在2008年发布,但是仍有超过70%的商业项目使用 2.7版本。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">截至今年4月,AWS Lambda 支持 Python 3.6 和 2.7。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;"><strong>Ruby</strong></p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">开源正在快速发展,Ruby 社区紧跟时代潮流。超过85%的项目使用 Ruby 2.0 及更高版本。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">需要注意的一个事情是,2.0 和 2.1 版本已经结束了,而 Ruby 2.2 EOL 将于 2018年3月31日发布。建议升级到更新的版本,因为旧版本没有获得安全更新。</p><p style="font-family:&quot;font-size:14px;color:#333333;background-color:#FFFFFF;">另外需要注意的是 Rails 5 只支持 Ruby 2.2.2 及更高版本。</p>
  • news

    “生物黑客”是一群怎样的存在

    发布时间:2018-01-22

    <p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">美国国家航空航天局(NASA)前研究人员Josia Zayner上传的一段往自己身上注射CRISPR蛋白的视频,近日已经被观看近10万次。虽然Zayner对其左臂肌肉发生变化的可能性“持怀疑态度”,国内生物界学者也纷纷认为这是个“噱头”,但无疑,以Zayner为代表的“生物黑客”却因此被更多人知晓。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><strong><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">用自己的身体来解锁设备</span></strong></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">“‘生物黑客’大概是21世纪初兴起的。”被认为是“生物黑客”的合成生物技术公司Bluepha的联合创始人兼首席技术官张浩千博士分析,“上世纪九十年代末,互联网热潮带来互联网文化的流行,有一拨人开始考虑做人体和电子的连接。”</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">例如,有些人对人体无法感知地球周围无形的磁场这件事很不满,于是就在触觉灵敏的手内植入磁体。此外据说还有一个名叫Bottlenose的项目,专门捕捉声呐、紫外线、WiFi和热量数据等肉眼无法看到的各种信息,传送给植入体内的磁体。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">去年,前来参加2017中国互联网安全大会(ISC)DC010黑客活动的荷兰生物黑客Patrick Paumen曾引起极大关注。他在体内植入了14枚芯片,通过这些芯片Paumen可与门禁系统、门锁、智能手机等各种电子设备交互。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><strong><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">植入芯片不过瘾 改变基因更刺激</span></strong></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">在追求长生不老和让自己更强大这条路上,人类从来都不缺乏想象力。在基因编辑技术出现后,生物黑客们又找到了另一种武装自己的利器。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">此前,一名艾滋病病毒感染者在Facebook上直播了用注射方式对自己进行基因编辑治疗的过程。他认为他使用的产品可以让自己的身体产生抗体,摧毁被艾滋病病毒感染的细胞。而这款基因材料来自一个“促进分散式药物试验”的默默无闻的初创小公司。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">另一家公司The Odin也出售许多DIY的生物产品,如一桶桶装着用CRISPR技术切掉基因末端的酵母。2016年,这家公司卖出了超过20万美元的产品。而前面提到的Zayner正是The Odin的创始人。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">据报道,Zayner在自己身上进行实验并不是心血来潮。他患有严重胃病,病痛的折磨使他有了自我实验的想法。2016年2月Zayner对自己的全身进行了微生物移植,将身体上的菌落去除并重建,Zayner成功将健康的粪便细菌移植到了自己身上。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">Zayner的行为遭受到很多质疑。美国食品药品监督管理局此前发表了一份用词相当严厉的发言,警告正在考虑自助基因疗法产品的消费者:“这些产品的销售是非法的。FDA非常担忧它们的安全性。”</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">至于给自己身体注射基因,这是一个监管盲区。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><strong><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">让科研大众化才是精髓</span></strong></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">张浩千认为,除了颇具争议的基因改造,以及人体和互联网的连接,“生物黑客”更多时候是指那些热衷于自己动手的生物学家。“‘生物黑客’相当于‘生物创客’,他们致力于让高大上的生物研究平民化。”</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;"> “和我一起参加过国际遗传工程的机器设计竞赛(iGEM)的几个荷兰研究人员后来去创业,他们的主要业务是DIY各种实验设备,以降低科研和教育门槛。”张浩千说,这家公司将一台最低价格需2万元的离心机做到了几百元。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">在中国,张浩千和他的同道也在做类似事情。“像国外那种改造自己身体的事情在中国好像还没有,毕竟我们的文化相对保守,而且创客或黑客的文化还没那么发达。”</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">对于自己的“生物创客”身份,张浩千笑称,“算是吧”。他创立的公司目前在从事严肃的合成生物学研究,例如他们先前从新疆的艾丁湖里找到一株生产可降解塑料的细菌,随后用合成生物技术给这株细菌重新编写了基因程序,实现了工业化生产。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">“我们的业余工作是做面向初高中生的生物知识和技术培训,这部分工作类似‘生物黑客’。”他说,在他们的指导下,学生们可以制造出不同味道或各种颜色、各种形状的微生物。</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">至于安全性,张浩千说:“我们改造的对象是微生物,很安全,因为微生物很容易控制,随着技术的发展,国家应该也会出台相关规范。”</span></p><p style="font-size:0.8em;color:#333333;font-family:微软雅黑;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;font-size:14px;">事实上,科技部此前出台的《生物技术研究开发安全管理办法》,就旨在规范生物技术研究开发行为,促进和保障生物技术研究开发活动健康有序发展。</span></p>
  • news

    传统密码已经消亡

    发布时间:2018-01-15

    <p style="font-family:&quot;font-size:14px;text-indent:1em;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:30px;font-size:15px;">微软公司正试图用更安全的身份验证系统取代密码,而且还提供更方便,更易于使用的解决方案。其中一个例子是Windows Hello,它被用来保护Windows 10设备,微软在一篇冗长的博客文章中详细介绍了与FIDO(快速身份在线)联盟的合作,以增加采用生物识别技术的设备。<br></span></p><p style="font-family:&quot;font-size:14px;text-indent:1em;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:30px;font-size:15px;"><img src="http://115.29.210.249/tggPic/content/2018-01/1515995885719.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-01/1515995885719.jpg" alt=""></span></p><p style="font-family:&quot;font-size:14px;text-indent:1em;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:30px;font-size:15px;">微软表示,Windows Hello已经证明是一个成功的安全系统,近70%的具有这种功能的Windows 10设备正在选择Windows Hello而不是传统密码作为登陆方式。具有讽刺意味的是,由德国安全研究人员进行一项实验证明,Windows Hello更容易入侵,尽管最新版本的Windows 10引入了新功能,可以在配合特定硬件情况下防止使用照片欺骗Windows Hello。</span></p><p style="font-family:&quot;font-size:14px;text-indent:1em;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:30px;font-size:15px;">微软还讨论了使用应用程序(例如Android和iOS上提供的Microsoft身份验证器)替换密码的优点,以便使用PIN或指纹轻松进行身份验证。微软强正致力于帮助客户迁移到所谓的无密码世界,为安全设备提供替代解决方案。</span></p><p style="font-family:&quot;font-size:14px;text-indent:1em;color:#333333;background-color:#FFFFFF;"><span style="font-family:&quot;color:#666666;line-height:30px;font-size:15px;">微软并不是唯一一个推动生物识别技术认证的公司,因为其他技术巨头也在投入这样的系统,包括长期竞争对手苹果。面部识别是该公司最新iPhone智能手机的亮点之一,同样的系统将在明年扩大到整个阵容。</span></p>
  • news

    phpMyAdmin被曝存在严重CSRF漏洞可对数据库造成破坏

    发布时间:2018-01-09

    <p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">近期,印度安全工程师Ashutosh Barot发现phpMyAdmin存在严重CSRF漏洞(跨站请求伪造),可以通过技巧欺骗管理员去点击构造链接,触发对基于phpMyAdmin的MySQL数据库的远程操作,实现对数据库的破坏攻击行为。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><strong><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">漏洞影响</span></strong></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">该漏洞对phpMyAdmin 4.7.x系列中4.7.7之前的所有版本造成影响,目前,phpMyAdmin官方已发布漏洞修补声明,声明中提到“该漏洞利用方式为,通过欺骗当前登录用户点击某个恶意构造链接,之后可能导致对MySQL数据库的记录数据等信息的删除(dropping/truncating tables)”。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><strong><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">漏洞分析</span></strong></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">CSRF是OWASP Top 10的严重漏洞之一, phpMyAdmin发起删除数据表等操作的POST请求后,会执行一个Get请求,为防止CSRF攻击Get会受到安全防护。该案例中,可以通过如浏览器书签等URL链接来发起POST请求,攻击者可以藉此构造特殊恶意链接按钮,欺骗管理员点击之后,达到操作数据库目的。虽然有这种可能,但对于远程攻击者来说,很难收集到可以构造恶意URL的相关信息。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">基于此,我发现可以利用Burp的请求更改功能,把phpMyAdmin的POST请求转换为GET请求,之后,即使身份token过期或被清除,一样可以把它从URL中直接执行。利用这种方法,我可以添加一个wordpress的管理员用户。为了实现目的,攻击者则需要知道cPanel的会话id和数据库名称,其它如wp_users的表名则非常容易进行猜解。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;"><img src="http://115.29.210.249/tggPic/content/2018-01/1515470539030.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-01/1515470539030.jpg" alt=""><br></span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">执行数据库操作的构造URL可以被保存在浏览器历史记录中,如果用户点击insert和DROP等按钮来执行查询操作,该URL就需要包含数据库名和表名等信息。由于这种构造URL链接可在浏览器历史、安全事件管理日志(SIEM logs)、防火墙日志、ISP日志等地存储,因此,该漏洞还可导致某种程度上的敏感信息泄露。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;text-align:center;font-size:0.8em;background-color:#FFFFFF;"><img src="http://115.29.210.249/tggPic/content/2018-01/1515470553879.jpg" data-ke-src="http://115.29.210.249/tggPic/content/2018-01/1515470553879.jpg" alt=""></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">在用户通过了phpMyAdmin的管理面板认证登录后,即使关闭了phpMyAdmin,这种CSRF攻击照样可行。但如果想要成功利用该漏洞,实现远程数据库操作,需要与用户有一个点击链接的交互,因此,目前该漏洞的影响程度暂定为中级(Medium)。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><strong><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">POC视频</span></strong></p><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">视频中,远程攻击者通过欺骗管理员点击构造的恶意链接后,就能让管理员毫不知情地删除了整个数据库。</span></p><p style="margin-left:16px;font-family:微软雅黑;color:#585858;font-size:15px;text-align:center;background-color:#FFFFFF;"><iframe frameborder="0" class="video_iframe" width="636" height="357.75" src="https://v.qq.com/iframe/player.html?vid=y0528ho9wtz&amp;width=636&amp;height=357.75&amp;auto=0&amp;encryptVer=6.0&amp;platform=61001&amp;cKey=XO5+FkD0Rx+697Gw5wFCLLOcOPl088ipDEjxklYo/B8bn/Yf1XDs+qjVg80xf+Wu" data-ke-src="https://v.qq.com/iframe/player.html?vid=y0528ho9wtz&amp;amp;width=636&amp;amp;height=357.75&amp;amp;auto=0&amp;amp;encryptVer=6.0&amp;amp;platform=61001&amp;amp;cKey=XO5+FkD0Rx+697Gw5wFCLLOcOPl088ipDEjxklYo/B8bn/Yf1XDs+qjVg80xf+Wu" style="width:636px !important;height:357.75px !important;"></iframe></p><h2 style="font-family:微软雅黑;color:#373838;font-size:18px;font-weight:normal;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">漏洞修复</span></h2><p style="margin-left:16px;font-family:微软雅黑;color:#333333;font-size:0.8em;background-color:#FFFFFF;"><span style="font-family:Optima-Regular, PingFangTC-light;color:#666666;line-height:28px;font-size:14px;">phpMyAdmin通过数据库管理功能能与WordPress、Joomla等建站系统结合,很多服务托管商也会使用phpMyAdmin后台来管理交互客户数据,基于此,phpMyAdmin已经发布了修复措施,希望相关受影响用户及时修补漏洞,或下载更新版本。</span></p>
在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!