一个轻量级Web蜜罐(附下载地址)

news2024/11/17 9:43:53

Loki

0x01 Why

目标: 抓漏洞.
大概是没有找到啥子开源的符合我预期的蜜罐吧,所以自己动手写了。

0x02 What

想做什么样的蜜罐?

1.便于维护,随开随用,配置简单。
2.Web低仿真即可,且只抓Web流量。
3.不同端口指向不同的页面,响应头配置等。

0x03 How

SpringBoot是最强Web框架没有之一,数据库选用SQLite。两者结合基本上就可以实现一个jar加db文件就完成需求。

0x04 Process

管理页面选用layui作为前端框架,后台地址和端口以及账号密码通过配置文件动态配置。

多端口方便其实就是给tomcat添加几个监听的端口而已:

Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");connector.setScheme(scheme);connector.setPort(Integer.parseInt(port));result.add(connector);

然后是不同端口指向不同页面:

配置文件

判断逻辑

port是限制的端口,path是本地模板的路径,code是返回的状态码,header是相应的header,respbody本来是想正对一些特定的请求返回不同页面的,逻辑没有思考的很清楚,暂时搁置了。

页面捕获

过程比较耗时间,期初想拦截所有异常,在做统一处理即可,可实际过程发现springboot默认开起了add-mappings无法捕获404页面,而且静态资源过来的请求无法捕获,如果遇到解析差异那种洞就只能错过。关闭的话静态资源访问配置又会很麻烦。

查阅相关文档后发现可以继承 ErrorController + @ControllerAdvice + @ExceptionHandle 处理一切异常,这也包括404页面,

Demo:​​​​​​​

NotFoundController.java

@Controller
public class NotFoundController implements ErrorController {

    @Override
    public String getErrorPath() {
        return "/error";
    }
    @RequestMapping(value = {"/error"})
    public Object error(HttpServletRequest request) {
        //请求处理
        return "404";
    }
}
ExceptionController.java

@ControllerAdvice
public class ExceptionController {

    @ExceptionHandler(value = {Exception.class})
    public Object error(Exception ex){
        //请求处理
        return "500";
    }
}

这也处理确实能捕获到404页面,可是有个bug

getServletPath方法获取的路由恒为error,这也是springboot的特征之一,所有错误均会交由error路由处理,也就是说error默认是肯定存在的。

正确的处理方式是在过滤器中进行记录:​​​​​​​

public class LokiFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("Loki Filter is init.... ");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        //请求处理
        filterChain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        log.info("Loki Filter was destroyed....");
    }
}

嗯,内存马也得在这层搞,不然鬼知道别人路由咋写的。

0x05 Result

代码结构:

后台页面:

模板文件:

一些有趣的事情:

1.在公网跑起来后我收到的第一个请求是nmap扫cobaltstrike的。

2.配置的通达和致远的页面都被来自河南和云南的两个IP人为访问过两次,识别依据是浏览器会自动加载/favicon.ico,脚本不会。

3.被89.248.160.151这个IP扫了一通.txt的文件,还有一些请求路径是@.txt,不知道是不是扫描器没配好。

4.创宇的censys爬虫先是先访问了8090端口,然后是88端口,中间间隔了将近14小时,bing的爬虫也到访过一次,fofa的爬虫没看到,但是有上百条ua为Go-http-client/1.1和fasthttp的请求,python的只有一条。

5.捕获了两个漏洞:

搜索了一下应该是Linksys路由的命令注入.

看起来是未授权相关的漏洞,80端口配置了很低从其他蜜罐上扒下来的Server头,可能是其中一款产品的洞吧,涉及的产品太多,百度没搜到这个路由,无法验证了。

工具下载地址一个轻量级Web蜜罐(附下载地址)icon-default.png?t=N4P3https://mp.weixin.qq.com/s/dubkZnYNXNGukp3Hy_TIrw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab论文插图绘制模板第102期—分组填充箱线图

在之前的文章中,分享了Matlab箱线图的绘制模板: 填充箱线图的绘制模板: 分组箱线图的绘制模板: 进一步,再来分享一下分组填充箱线图的绘制模板。 先来看一下成品效果: 特别提示:本期内容『数据…

DTMultiWindow UE UMG 多窗口插件说明

本插件可以把UMG窗口做为一个系统窗口独立显示。 目录 操作步骤: DT User Widget 说明: 全局蓝图节点说明 : 操作步骤: 1. 创建一个新的UMG,类型选择 DT User Widget 2. 使用传统方式,搭建这个UMG控件。…

深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

redis中的 adlist链表实现

adlist源码解读(基于redis 6.2.7) 1丶打开源码 adlist.h typedef struct listNode {struct listNode *prev;struct listNode *next;void *value; } listNode;//迭代时 使用 typedef struct listIter {listNode *next;int direction; 迭代方向 } listIter;typedef struct lis…

Submit的使用,程序中调用其他报表

Submit的使用 项目需求:编写一个程序能够将实时的物料库存数据通过发送邮件的形式发送到对应的邮件。现有标准的事务码MB5B来查看对应的库存数据。可以在程序中使用submit将参数传递到MB5B中,然后将获取的数据返回到程序中,然后在执行发送邮件…

【Git通关之旅】从山脚到山顶(傲视群雄版)

Git分布式版本控制工具 版本控制器的方式 集中式版本控制工具 集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代 码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库…

【蓝桥杯】求既约分数—>(全解)最大公约数与最小公倍数

前言: 通过对【蓝桥杯】2020初赛的一道求既约分数的题目的讲解,引出关于求“最大公约数与最小公倍数”的方法汇总。 对于“最大公约数与最小公倍数”来说,求解都有一些固定的方法,而这些方法一般都是固定的,只需要掌握…

亚马逊、Allegro卖家建立属于自己的测评系统,实现批量优质账号养成

卖家搭建一套完整的测评系统,卖家自己能够养出批量优质账号,并完全掌控真实买家的浏览、加购、下单和评价等风控数据规律。我们的系统能够自主加速推广,防御反击,同时节省运营成本,实现高效的测评运营。 我们的系统支…

传统印刷企业需要部署数字工厂管理系统吗

随着数字化技术的快速发展,传统印刷企业面临着巨大的市场竞争压力。为了提高生产效率,降低生产成本,越来越多的企业开始考虑部署印刷数字工厂管理系统。但是,对于许多企业来说,是否部署印刷数字工厂仍然是一个需要权衡…

【国产复旦微FMQL45教程】-小试牛刀之LED

本教程采用 FMQL7045 FPGA开发板来完成整个试验,板卡照片如下: 具有丰富的接口资源,系统框图如下: 本教程用于完成基于Vivado的FMQL45的LED实验,目标是能够将这款开发板PL端先跑起来。 对于纯 PL 设计,我们…

002、体系结构之TiDB Server

TiDB Server 1、TiDB总览1.1、TiDB Server架构1.2、TiDB Server 主要功能: 2、SQL语句处理语句的解析和编译SQL层协议层上下文解析层逻辑优化器物理优化器本地执行器分布式执行器 3、如何将表的数据转成kv形式4、在线DDL相关模块5、GC机制与相关模块6、TiDB Server …

pyecharts案例三——河南省疫情地图绘制

代码实现 代码的业务流程基本和全国疫情地图相同,注意城市名结尾必须有“市”才能识别 import json from pyecharts.charts import Map from pyecharts.options import *f open("./疫情.txt", "r", encoding"UTF-8") data f.read…

暴力破解测试-业务安全测试实操(1)

业务安全测试实践模版理论指导_luozhonghua2000的博客-CSDN博客 测试原理和方法 暴力破解测试是指针对应用系统用户登录账号与密码进行的穷举测试,针对账号或密码进行逐一比较,直到找出正确的账号与密码。 般分为以下三种情况: 在已知账号的情况下,加载密码字典针对密码进行…

从美颜算法到AI美颜SDK:美丽的背后隐藏着什么?

在年轻人的生活中,通过美颜SDK类型的美颜工具进行拍摄已经成为了一种全新的文化现象。时下,AI美颜、美颜SDK讨论热点极高,那么大家知道美颜算法和AI美颜到底有什么不同吗?它们背后隐藏着什么样的技术和思想? 一、美颜算…

java的StringBuilder、Stringjoiner

一、StringBuilder StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。作用是提高字符串的操作效率。 注意:使用String创建字符串对象时,是不能改变字符串的内容的,例如: String s1 "aaa"; St…

【解决MySQL-jdbc连接问题】com.mysql.jdbc.Driver was not found, trying direct instantiat

启动服务时出现报错 com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassNamecom.mysql.jdbc.Driver was not found, trying direct instantiation.而且接口有时候能访问成功,有时候的超时连接,异常的慢 经查询&#xff0c…

BUUCTF Alice与Bob 1

题目描述: 密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解…

HTMLCSS Day03 CSS字体及文本样式

文章目录 1.文本属性- 颜色属性在CSS中如何通过color属性来修改文字颜色英文单词rgbrgba十六进制 - font-style 用于打开和关闭斜体文本- font-weight 为字体设置粗细程度- font-size 为文字指定大小- font-family 为文字指定特殊的字体,浏览器只会使用浏览器可以访…

动态规划dp —— 23.等差数列划分

1.状态表示 是什么?dp表中里的值所表示的含义就是状态表示 dp[i]表示:以i位置为结尾的所有子数组中有多少个等差数列 2.状态转移方程 dp[i] 等于什么 以i位置为结尾的等差数列,也就是说i位置必须和i-1,i-2位置构成等差数列&am…