WEB攻击---一招致敌(一只猫累死一个Apache)

elli 2002-04-12 09:55:01
接触Apache已经一年多了,读过它绝大部分源代码,不得不佩服老外设计之巧妙。

Apache主体部分只是个框架,它在各个阶段分别去调各模块对应的函数,整个结构层次分明,其设计可称经典之作。还有其它一些方法也值我们借鉴,比如用pool来管理内存和文件。呵呵,建议大家有空读读。

好归好,BUG是难免的。今天,我想谈如何用一根电话线累死一个Apache。这本来是我无意中想到的,可以说是原创吧,呵呵,如果与别人雷同,纯属偶然,如果没有雷同呢,转载时请注明出处及作者(elli)。

闲话少说,一个Web服务器可以是通过100M的带宽与外面连接的。要想用一只猫就想搞死它,可能吗?呵呵,别急,古人云:四两拨千斤。等着瞧,让我先说说Apache的工作流程:

以Apache 13.XX为例,在WIN32下,它是多线程工作的,而在Linux下,它是多进程工作的。为了方便起见,只以Linux为例,两者都差不多。

0) 浏览器向Apache建立连接。
1) Apache的某个空闲进程得到连接。
2) Apache等待浏览器发请求头。
3) 浏览器向Apache发送请求。
4) Apache处理请求。
5) Apache响应请求。
6) 非Keep-Alive的请求,到些结束,否则转到2。

如果按照常规的浏览器和Web服务器间的交互,想累死一个Web服务器,那成本可大了。让我们仔细看看,不难发现,每个一个浏览器的请求都会有一个Apache的进程来处理。呵呵,那是不是我用1024个浏览器就可以把Apache累爬下呢?在稍好一点的PC机上运行的Apache,每秒钟都可以响应上千个请求。这样做的话,没有把Apache累爬下,你自己可能都受不了。

常言说,有力使力,无力用巧。我们不用真的去累它,拖住它就行。我先创建一个连接到,它会占用Apache一个进程,但我并不急于把请求发给它,但是Apache却不得不等待,也就是说这个进程并不能干活。哈,有了,我建上1024个连接!有Apache同时起1024个进程的吗?然后我用select函数等待,只有一个连接被关掉,我马上再建一个。就这么简单!

另个一方面,如果Apache那边关掉这个连接,TIME_WAIT将发生在服务器那边,它将不得不等上2*MSL的时间后,它才能重用这个Socket。只要你不断的连接,即使Apache关掉这个连接,最终也可能导致它没有socket可用了。

我只是在局域网内做过实验,4秒后,Apache停止响应!

*请大家注意*
我并不是想教大家如何去掉一个网站,我也不是一个Hacker。我Post这几段话在这里,目的有两个:一是用Apache的同志最好防到这一点一下(不过很难哟)。另外,我现参与一个Server的设计,TIME_WAIT的问题搞得我头都大了, 有谁有办法能解决TIME_WAIT的问题的?

如果谁想做这种测试,又不想自己去写代码的,可以留下您的EMAIL。不过请注意,一切后果自负!!!哈哈,给分的先发。
...全文
71 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
elli 2002-04-19
  • 打赏
  • 举报
回复
我给以上所以想要代码的朋友都发了,请不在这里留Email了。这几天太忙了,可能没有时间回信。

bearontree 2002-04-19
  • 打赏
  • 举报
回复
网络安全形势严峻啊

给我也来一个^_^

gaozhe@citiz.net
evicn 2002-04-18
  • 打赏
  • 举报
回复
evicn@sohu.com
1wolf 2002-04-18
  • 打赏
  • 举报
回复
我也想试试
johnhunt@163.com
Iamfish 2002-04-18
  • 打赏
  • 举报
回复
试试
yztink@163.com
hucool 2002-04-18
  • 打赏
  • 举报
回复
试试

yangzhenao@163.net
wake2000 2002-04-18
  • 打赏
  • 举报
回复
我想Apache本身是没有办法处理这种恶意的办法,但是可以通过防火墙的配置封杀这种情况。
yplin 2002-04-17
  • 打赏
  • 举报
回复
试试,谢谢
yplin@chinese.com
mili_0816 2002-04-17
  • 打赏
  • 举报
回复
我想试一下!mili_0816@263.net,谢谢!
pengjf 2002-04-15
  • 打赏
  • 举报
回复
要创建1024个连接去攻击别人,你本身的机器开1024个连接,好像也
要够呛了,什么都干不了了。
JasonSeaver 2002-04-15
  • 打赏
  • 举报
回复
w_ziyi@163.com
scud 2002-04-15
  • 打赏
  • 举报
回复
可以采取每个ip可以进行最大连接限制等手段
elli 2002-04-15
  • 打赏
  • 举报
回复
to pengjf: 只是建连接,其它的什么也不做,你建4096个连接也可以的。我这里是因为select函数的限制。

to littleshrimp: http://xia0xin.dhs.org 真的是你的吗?否则你真是个猪。

littleshrimp 2002-04-15
  • 打赏
  • 举报
回复
hehe

attack me try?:)

http://xia0xin.dhs.org

hoho~~~~~~~~~
cf_journey 2002-04-14
  • 打赏
  • 举报
回复
我想测试一下,请给我一份我试试。cf_journey@163.com

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧