渗透测试框架内容_渗透测试开源框架java

hacker|
166

java有什么常用开源的框架?

java常用开源框架如下:

1.Spring Framework 【Java开源JEE框架】

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。

2.WebWork 【Java开源Web开发框架】

WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。

3.Struts 【Java开源Web开发框架】

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中

4.Hibernate 【Java开源持久层框架】

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合

5.Quartz 【Java开源调度框架】

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。

6.Velocity 【Java开源模板引擎】

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

7.IBATIS 【Java开源持久层框架】

使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。

打造自己的渗透测试框架—溯光

TrackRay简介

溯光,英文名“TrackRay”,意为逆光而行,追溯光源。同时致敬安全圈前辈开发的“溯雪”,“流光”。

溯光是一个开源的插件化渗透测试框架,框架自身实现了漏洞扫描功能,集成了知名安全工具:Metasploit、Nmap、Sqlmap、AWVS等。

溯光使用 Java 编写,SpringBoot 作为基础框架,JPA + HSQLDB嵌入式数据库做持久化,Maven 管理依赖,Jython 实现 Python 插件调用,quartz 做任务调度,freemarker + thymeleaf 做视图层,Websocket 实现命令行式插件交互。

框架可扩展性高,支持 Java、Python、JSON 等方式编写插件,有“漏洞扫描插件”、“爬虫插件”、“MVC插件”、“内部插件”、“无交互插件”和“可交互插件” 等插件类型。

功能展示

主页

登录

任务创建

任务列表

任务详情

无交互接口插件调用

MVC插件示例

交互式插件控制台

MSF 控制台

依赖环境

JDK 1.8

Python 2.7

Maven

Git

Metasploit

Nmap(建议安装)

SQLMAP(建议安装)

AWVS

**加粗为必须环境,没有安装程序则无法正常编译运行

不论是 Windows 还是 linux 一定需要先安装 JDK1.8 和 Maven。安装过程这里不做演示。保证 JDK 和 Maven 都在系统环境变量,能执行java -version 和 mvn --version即可。

安装过程

第一步

手动启动 AWVS 服务

登录后台,生成一个API密匙。

复制密匙和 AWVS 的地址。

找到web/src/main/resources/application.properties配置文件。

修改如下部分

第二步

找到你 python 的第三方库目录。

Windows 的一般在 python 安装目录下的/Lib/site-packages

Linux 下可以通过输出 sys.path 来找第三方包路径

我的是 D:/Python2/Lib/site-packages

同样找到web/src/main/resources/application.properties配置文件。

修改python.package.path参数

第三步

安装 Maven 后找到仓库位置。

如果没有在 settings.xml 里配置指定仓库目录,默认会在当前用户目录中生成一个 .m2的目录

找到仓库目录后修改 application.properties 的 maven.repository.path参数

第四步

这个是 DNSLOG 回显检测漏洞时需要的。

去 ceye.io 注册一个账号,拿到给你分配的域名和 TOKEN。

修改配置文件

第五步

启动 msf 和 sqlmapapi。

如果你是 kali 操作系统,可以直接运行startdep.sh。

如果是其他系统,则要找到 metasploit 和 sqlmap 的目录分别执行

启动成功后修改配置文件

第六步

编译打包程序

等待依赖下载完成和编译完成,如果以上操作都没有出现问题则会提示 BUILD SUCCESS

编译成功后会在当前目录打包一个trackray.jar就是溯光的主程序。

然后直接执行startup.bat或startup.sh溯光就会启动服务。

没有抛出异常或ERROR日志,访问 8080 端口正常。

服务启动正常后,登录 iZone 社区账号。

**开发插件建议使用 Intellij IDEA IDE,需要安装 lombok 插件。

目录结构

插件

AbstractPlugin

这是交互式插件和非交互式插件的父类。

BASE常量

其中的静态常量 BASE 是 /resources/include/ 的所在目录。

如果你的插件需要额外的静态资源,那么你可以在 /resources/include 目录里创建一个和插件 KEY 相同的文件夹,便于识别,如果没有在 @Plugin 注解中设置 value 则默认的插件 KEY 就是当前类名首字母小写。

如 Typecho001 = typecho001

check(Map param)

这是用于检验是否合规的方法,需要被强制重写,当返回 true 时才会调用 start() 方法

param 参数是从前台传过来的参数键值对。

常被用于检验参数格式是否正确或漏洞是否存在。

after()

在 start() 方法之前调用

before()

在 start() 方法之后调用

start()

这是一个抽象方法,所有继承了该类的子类都需要重写这个方法。

在 check 方法 通过后会调用 start() 方法

start() 方法返回值最终会会当做插件结果,响应给前台。

shell()

调用当前系统 shell 来辅助完成插件功能。

executor()

插件执行的主方法

crawlerPage

http请求对象(不推荐使用)

fetcher

执行 http 请求对象(不推荐使用)

errorMsg

当校验不通过时,返回给前台的信息。

param

前台传过来的参数键值对

requests

HTTP 发包工具(推荐使用)

hackKit

hack 常用工具包

无交互插件

无交互插件需要你填写好所有要填写的参数,直接请求接口来执行插件。

默认需要去继承 CommonPlugin类。

这是一个抽象类,继承了 AbstractPlugin

主要多出来两个属性:request 和 response。

继承了 CommonPlugin 的类可以通过调用这两个属性来控制请求和响应内容。

无交互插件同时也需要使用 @Rule 和 @Plugin 插件,这两个注解后面会讲到。

在 ,找到相应的插件填写好参数提交即可完成调用。

或直接调用接口。

交互式插件

交互式插件一般在命令行控制台中调用,可以允许你通过命令行交互来完成插件的调用。

交互式插件由 Websocket 实现,想要写一个交互式插件,首先要继承 WebSocketPlugin 类。

同时设置 @Rule 注解的 websocket 参数为 true ,如果需要异步交互需要将 sync 也设置为 true。

内部插件

内部插件是不可以通过外部去调用的,需要继承 InnerPlugin 并使用 @Plugin 注解,通常在漏洞扫描时时会调用。

例如 “网页爬虫”,“指纹识别”,“端口扫描” 等,都是通过调用内部插件实现的。

还有用于检测 SSRF 等漏洞用的 FuckCeye 插件也属于内部插件。

通过 spring 的自动注入,来注入内部插件到当前对象。

例子可参考 WebLogicWLSRCE.java

爬虫插件

爬虫插件会在扫描任务被勾选“网页爬虫”时调用,每爬取一条请求就会调用一次爬虫插件。

爬虫插件需要继承 CrawlerPlugin,继承该类必须重写 check 和 process 方法。

check 方法用于检验请求是否符合插件规则,以免产生多余请求。

当 check 方法 返回为 true 时会调用 process 方法。

process 方法里写插件主要检测代码。

addVulnerable()

当插件检测出漏洞时,可以通过调用 addVulnerable() 方法来向数据库插入一条漏洞。

requests

requests 属性为请求工具包,处理 https 和 http 都很方便。

response

response 属性为当前爬虫得到的 HTTP 响应。

task

task 属性为当前任务对象,如果你的爬虫插件不是检测漏洞而希望是检测一些敏感信息的话可以修改 task.getResult() 里的属性。

参考 FingerProbe.java 或 InfoProbe.java。

target

爬虫爬取到的 URL 对象。

fetcher crawlerPage

http 请求对象(不建议使用)。

漏洞扫描插件

漏洞扫描插件会在,扫描任务中勾选“漏洞攻击模块”时调用。

漏洞扫描插件分为三种

1.独立插件

独立的漏洞扫描插件需要继承 AbstractExploit 并使用 @Plugin 或 @Exploit

AbstractExploit 中有以下需要了解的方法和属性。

requests

http / https 发包工具

target 当前扫描任务的地址。

task

当前扫描任务对象。

check()

check 是一个抽象方法,需要被子类强制重写。

该方法一般用于检验是否符合当前漏洞扫描插件的规则,以免产生多与请求。

attack()

attack 也是一个抽象方法,需要被子类强制重写。

该方法是检测漏洞的主方法。

before()

在 attack 方法前执行

after()

在 attack 方法后执行

addVulnerable()

当插件检测出漏洞时,可以通过调用 addVulnerable() 方法来向数据库插入一条漏洞。

fetcher crawlerPage

http 请求对象(不建议使用)。

2.漏洞规则

位于

实际上这是一个“内部插件”,会在勾选漏洞模块攻击时调用。

有一些漏洞检测方法很简单,只通过简单的判断响应体就能识别出来,也就没有必要再去写一个独立的插件而占用空间了。

在 doSwitch() 方法中会先去根据当前任务的指纹识别结果走一遍 switch 流程。

swtich 的每一个 case 都是 WEB 指纹的枚举对象。

当 switch 找到当前任务 WEB 指纹对应的 case 后,case 内的代码会通过构建一个漏洞规则添加到 loaders 集合里。

如果规则是通用的,可以写在 switch 的外面。

3.kunpeng JSON插件

kunpeng 是一个 go 语言编写的 poc 测试框架,这里我对 kunpeng 的 JSON 插件做了一个支持。

只需要按照 kunpeng json 插件的格式规范创建一个 json 文件到 /resources/json 目录。

在扫描任务勾选“漏洞攻击模块”时会被调用,或通过 MVC 插件调用 。

MVC 插件

位于

MVC 插件的特点在于,他可以像是在写一个功能一样,而非简单的接口式调用。

MVC 插件需要继承 MVCPlugin 类,并使用 @Rule,@Plugin 注解。

MVCPlugin 内置了一个 ModelAndView 对象, 是 SpringMVC 提供的。

可以通过 setViewName() 来指定视图层的网页模板。

通过 addObject(key,value) 向视图层网页模板注入参数。

这里的视图层是使用 thymeleaf 实现的,需要懂 thymeleaf 的语法。

例子可以参考:com.trackray.module.inner.JSONPlugin

继承 MVCPlugin 必须要重写一个 index 方法,这是插件的入口。

如果需要写其他的功能,就得再创建一个 public 返回值为 void 的无参方法。

并且要在该方法上使用 @Function 注解,该注解的 value 参数如果不填写的话则默认的 requestMapping 地址为方法名。

例如

最后还需要在 /module/src/main/resources/templates 创建一个目录名为插件 KEY 的目录。

里面存放扩展名为 .html 的模板文件。

Python 插件

python 插件有两种实现方式。

1.通过命令行实现

这种方式最为简单,通过在 include 里写一个 python 脚本。

然后在插件里调用 shell() 方法来执行系统命令。

案例可参考 com.trackray.module.plugin.windows.smb.MS17010

但这样还需要再写 java 的代码,对于没有学过 java 的人来说很不友好。

2.通过jython实现

jython 是一个 Python 语言在 Java 中的完全实现。

我将它的调用过程写成了一个交互式插件。

你可以通过在 /resources/python/ 目录下安装如下规范去创建一个 python 文件。

在这个 python 文件中需要写两个方法。

关于注解

@Rule

一般用在“可交互插件”和“无交互插件”类上。

@Plugin

WEB指纹

这里顺便再说一下如何添加指纹库。

指纹库位于 base 模块,是一个枚举类。

可以在首部或尾部添加一条新的枚举,尽量使用 $ 开头。

第一个参数是 指纹的名称,如果第二个参数是 String 类型则是该指纹的说明。

FingerBean 类是指纹匹配对象。

java web现在流行用什么框架?

主流 Java Web 开发框架有Spring 框架、MyBatis 框架、 Hibernate 框架、 Struts 2 框架等。

1、Spring 框架

Spring 框架是一个轻量级的框架,渗透了 Java EE 技术的方方面面。Spring 框架是由于软件开发的复杂性而创建的,是一个开源框架。Spring 框架的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合性角度而言,绝大部分 Java 应用都可以从 Spring 框架中受益。

2、MyBatis 框架

MyBatis 框架是一个优秀的数据持久层框架,可在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。Mybatis 的封装性要低于 Hibernate 框架,且性能优异、简单易学,因此应用较为广泛。

3、Hibernate 框架

Hibernate 框架不仅是一个优秀的持久化框架,也是一个开放源代码的对象关系映射框架。它对 JDBC 进行了轻量级的对象封装,将 POJO 与数据库表建立映射关系,形成一个全自动的 ORM 框架。Hibernate 框架可以自动生成 SQL 语句,且自动执行。

4、Struts 2 框架

Struts 2 框架以 WebWork 的优秀设计思想为核心,吸收 Struts 框架的部分优点,提供了一个更加简洁的基于 MVC 设计模式实现的 Web 应用程序框架,它本质上相当于一个 Servlet。在 MVC 设计模式中,Struts 2 框架作为控制器(Controller)来建立模型与视图的数据交互。

扩展资料:

Java Web 开发框架应用要点:

搭建Java Web应用的开发环境-----部署Tomcat服务器、用eclipse创建Server服务、构建Java Web项目、建立第一个JSP文件、 运行JSP文件。

第一个要点是掌握tomcat的安装和部署。在Windows系统上安装Tomcat相对简单,下载压缩包解压缩到任意目录即可(目录名称不要含有中文字符)。进入tomcat的bin目录,可以直接运行startup.bat启动tomcat服务。

第二个要点是在eclipse中添加Server服务。把tomcat与eclipse进行关联,方便eclipse管理tomcat。

第三个要点是构建Java Web项目。Web项目开发的第一步就是要建立项目。在新建Project项目时,选择Dynamic Web Project项目类型,即可创建Web项目。

第四个要点是建立的项目如何在Server中运行。选择要运行的JSP文件,单击右键,在弹出的菜单中选择Run on Server命令即可,初次运行项目时,需要配置项目在哪个Server中运行(如有多个Server)。

参考资料来源:百度百科-java web

java开源框架有哪些?

Spring MVC

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。

2. Struts 2

为了更详细的阐述现代软件工程师广泛使用的现有Java框架,我们决定参考Apache的Struts 1后继版本Struts 2。这个Java框架对于使用构建当代Java EE Web应用程序的工程师来说是一个很好的选择。Apache软件基金会为开发人员提供了一个广泛的工具,用于创建企业级的面向Web的应用程序,开发过程的优化从开始贯彻到结束,还提供后期的维护。如果你还在为高负载系统(如广播门户)发愁,这个框架将是你的不二之选。

3. Hibernate

这个 Java 映射框架借助于将持续存在的数据库访问操作替换为高层次的对象处理功能,来解决对象-关系的不匹配问题。每一个企业应用程序的情况都不同,而Hibernate则拥有功能强大的工具套件来帮助后台开发人员对其数据访问层进行微调。这是一个高级的 ORM 框架,你可以用它来在 Java 对象(实体)上进行数据库操作。利用 Hibernate 缓存来将 Java 环境中的数据持久化到数据库是一个持久化的概念、

4. JSF

作为java EE的一部分,JavaServer Faces被Oracle所支持。虽然这不是一个可以进行快速java开发的最好框架,但它很容易使用,因为Oracle提供了大量文档。此外,除非你离开java EE环境,JSF不需要任何的外部依赖,而功能非常强大。它拥有丰富的库和工具(包括一个简单的用户界面生成工具),使之成为了一个神奇的魔法棒,无论应用程序可能看起来有多么复杂,它都可以给予你支持与帮助。

5. Vaadin

当现代开发者创建商业应用程序,并使用GWT渲染终端网页时,Vaadin称得上是一个超级流行的框架。Vaadin利用一个众所周知的基于组件的方法,能够适应浏览器的变化,从而减轻了开发商的负担。它拥有一套扩展的用户界面组件,以及各种不同的部件和控件,可以让程序员在任何时候都可以建立一个很酷的应用程序。

6. Google Web Toolkit

GWT是另一个免费的java框架,它允许程序员创建和优化复杂的网络应用程序。GWT的软件开发工具包包括核心的java API和小部件,构建随后可以编译成JavaScript的应用程序。

7. Grails

这个独特的框架被视为是提升工程师生产效率的动态工具,因为其干脆的API设计,合理的默认值以及约定架构。与java的无缝集成使得这个框架成为世界上众多框架中的首选。一系列强大的特性,如基于sping的依赖注入和各式各样的插件,可以提供创建现代基于web的app的所有需要的东西。

0条大神的评论

发表评论