1、java应用服务器
Java应用服务器主要为应用程序提供运行环境,为组件提供服务。Java的应用服务器很多,从功能上分为两类:JSP服务器和JavaEE服务器。
1.1常见的Server概述
常见的Java服务器:Tomcat、Weblogic、JBoss、GlassFish、Jetty、Resin、IBMWebsphere、BejyTiger、Geronimo、Jonas、Jrun、Orion、TongWeb、BESApplicationServer、ColdFusion、ApusicApplicationServer、SunApplicationServer、Oracle9i/AS、SunJavaSystemApplicationServer。
Myeclipse比较方便的配置各式各样的Server,一般只要简单的选择下Server的目录就行了。
1、2构建WebShellwar文件
1、打开Myeclipse新建Web项目
2、把JSP放到WebRoot目录下
3、导出项目为war文件
2.2Tomcat默认配置
1、tomcat-users.xml
Tomcat5默认配置了两个角色:tomcat、role1。其中帐号为both、tomcat、role1的默认密码都是tomcat。不过都不具备直接部署应用的权限,默认需要有manager权限才能够直接部署war包,Tomcat5默认需要安装AdministrationWebApplication。Tomcat6默认没有配置任何用户以及角色,没办法用默认帐号登录。
配置详解: 2、context.xml
Tomcat的上下文,一般情况下如果用Tomcat的自身的数据源多在这里配置。找到数据源即可用对应的帐号密码去连接数据库。
WEB-INF/web.xml
Resourcename=jdbc/u3auth=Containertype=javax.sql.DataSource
maxActive=maxIdle=30maxWait=00
username=xxxxxpassword=xxxxdriverClassName= url=jdbc:mysql://..0.xxx:/xxx?autoReconnect=true/
/Context
3、server.xml
Server这个配置文件价值非常高,通常的访问端口、域名绑定和数据源可以在这里找到,如果想知道找到域名对应的目录可以读取这个配置文件。如果有用HTTPs,其配置也在这里面能够找到。
4、web.xml
web.xml之前讲MVC的时候有提到过,项目初始化的时候会去调用这个配置文件这个文件一般很少有人动但是不要忽略其重要性,修改web.xml可以做某些YD+BT的事情。
Tomcat口令爆破
Tomcat登录比较容易爆破,但是之前说过默认不对其做任何配置的时候爆破是无效的。
Tomcat的认证比较弱,Base64(用户名:密码)编码,请求:”/manager/html/”如果响应码不是(未经授权:访问由于凭据无效被拒绝。)即登录成功。
conn.setRequestProperty(Authorization,Basic+newBASE64Encoder().encode((user+:+pass).getBytes()));
2.3Tomcat获取WebShell
Tomcat后台部署war获取WebShell
登录tomcat后台: 1DeploydirectoryorWARfilelocatedonserver
Web应用的URL入口、XML配置文件对应路径、WAR文件或者该Web应用相对于/webapps目录的文件路径,然后单击按钮,即可发布该Web应用,发布后在Application列表中即可看到该Web应用的信息。这种方式只能发布位于/webapps目录下的Web应用。
2WARfiletodeploy
选择需要发布的WAR文件,然后单击Deploy,即可发布该Web应用,发布后在Application列表中即可看到该Web应用的信息。这种方式可以发布位于任意目录下的Web应用。
其中,第二种方式实际上是把需要发布的WAR文件自动复制到/webapps目录下,所以上述两种方式发布的Web应用都可以通过在浏览器地址栏中输入 3、Resin
3.2Resin默认配置
1、resin.conf和resin.xml
Tomcat和Rsin的核心配置文件都在conf目录下,Resin3.1.x默认是resin.conf而4.0.x默认是resin.xml。resin.conf/resin.xml是Resin最主要配置文件,类似Tomcat的server.xml。
1数据源:
第一节的时候有谈到resin数据源就是位于这个文件,搜索database(位于server标签内)即可定位到具体的配置信息。
2域名绑定
搜索host即可定位到具体的域名配置,其中的root-directory是域名绑定的对应路径。很容易就能够找到域名绑定的目录了。
^([^/]*).javaweb.org
/host
3.3Resin默认安全策略
1管理后台访问权限
Resin比较BT的是默认仅允许本机访问管理后台,这是因为在resin.conf当中默认配置禁止了外部IP请求后台。修改为true外部才能够访问。
2Resin后台管理密码
Resin的管理员密码需要手动配置,在resin.conf/resin.xml当中搜索management。即可找到不过需要注意的是Resin的密码默认是加密的,密文是在登录页自行生成。比如admin加密后的密文大概会是:yCGkvrQHY7K8qtlHsgJ6zg==看起来仅是base64编码不过不只是admin默认的Base64编码是:YWRtaW4=Resin,翻了半天Resin终于在文档里面找到了: 虽说是MD5+Base64加密但是怎么看都有点不对,下载Resin源码找到加密算法:
package 这加密已经没法反解了,所以就算找到Resin的密码配置文件应该也没法破解登录密码。事实上Resin3的管理后台并没有其他Server(相对JBOSS和Weblogic)那么丰富。而Resin4的管理后台看上去更加有趣。
Resin4的加密方式和Resin3还不一样改成了SSHA:
admin_user:admin
admin_password:{SSHA}XwNZqf8vxNt5BJKIGyKT6WMBGxV5OeIi
详情: 3.4Resin获取WebShell
AsofResin4.0.0,itisnowpossibletodeploywebapplicationsremotelytoasharedrepositorythatisdistributedacrossthecluster.Thisfeatureallowsyoutodeployoncetoanytriadserverandhavetheapplicationbeupdatedautomaticallyacrosstheentirecluster.Whenanewdynamicserverjoinsthecluster,thetriadwillpopulateitwiththeseapplicationsaswell.
WebDeploywar文件大概是从4.0.0开始支持的,不过想要在Webdeploy一个应用也不是一件简单的事情,首先得先进入后台。然后还得以HTTPs方式访问。不过命令行下部署就没那没法麻烦。Resin3得手动配置web-app-deploy。最简单的但又不爽办法就是想办法把war文件上传到resin-pro-3.1.13webapps目录下,会自动部署(就算Resin已启动也会自动部署,不影响已部署的应用)。
Resin3部署详情: Resin4部署War文件详情: Resin4进入后台后选择Deploy,不过还得用SSL方式请求。Resin要走一个”非加密通道”。
Todeployanapplicationremotely:
1.logintotheresin-adminconsoleonanytriadserver.MakesureyouareconnectingoverSSL,asthisfeatureisnotavailableoveranon-encryptedchannel.
2.Browsetothewebapptaboftheresin-adminserverandatthebottomofthepage,enterthevirtualhost,URL,andlocal.warfilespecifyingthewebapplication,thenpressDeploy.
3.Theapplicationshouldnowbedeployedontheserver.Inafewmoments,alltheserversintheclusterwillhavethewebapp.
Resin4敢不敢再没节操点?默认HTTPS是没有开的。需要手动去打开:confesin.properties
# 4、Weblogic
Weblogic默认端口是,Weblogic10g-12c默认的管理后台是: WebLogic中的域?
域环境下可以多个WebLogicServer或者WebLogicServer群集。域是由单个管理服务器管理的WebLogicServer实例的集合。Weblogic10++域默认是安装完成后由用户创建。帐号密码也在创建域的时候设置,所以这里并不存在默认密码。当一个域创建完成后配置文件和Web应用在:Weblogic12user_projectsdomains”域名”。
1、Weblogic默认密码文件:
Weblogic9采用的3DES(三重数据加密算法)加密方式,Weblogic9默认的管理密码配置文件位于:
weblogic_9weblogic92samplesdomainswl_serverserversexamplesServersecurityoot.properties
boot.properties:
#GeneratedbyConfigurationWizardonSunSep:43:13GMT
rname={3DES}fySQ4pCHAFk+lIxiWfw==password={3DES}fySQ4pCHAFk+lIxiWfw==
Weblogic12c采用了AES对称加密方式,但是AES的key并不在这文件里面。默认的管理密码文件存放于:
Weblogic12user_projectsdomainsase_domainserversAdminServersecurityboot.properties(base_domain是默认的”域名”)。
boot.properties:
#GeneratedbyConfigurationWizardonTueJul:07:09CST
username={AES}PsGXATVgbLsBrCA8hbaKjjA91yNDCK78Z84fGA/pTJE=
password={AES}Z44CPAl39VlytFk1I5HUCEFyFZ1LlmwqAePuJCwrwjI=
怎样解密Weblogic密码?
Weblogic12c:
Weblogic12user_projectsdomainsase_domainsecuritySerializedSystemIni.dat
Weblogic9:
weblogic_9weblogic92samplesdomainswl_serversecuritySerializedSystemIni.dat
解密详情:
2、Weblogic数据源(JNDI)
Weblogic如果有配置数据源,那么默认数据源配置文件应该在:
Weblogic12user_projectsdomainsase_domainconfigconfig.xml
4.3Weblogic获取Webshell
Weblogic9GetShell:
6、Websphere
Websphere8.5登录页面:
Websphere6-7默认控制台地址也是:
6.3WebsphereGetShell
本地只安装了8.5测试,Websphere安装的确非常坑非常麻烦。不过GoogleHACK到了其余两个版本Websphere6和Websphere7。测试发现WebsphereGetShell一样很简单,只是比较麻烦,一般情况直接默认配置Next就行了。Websphere7和Websphere8GetShell基本一模一样。
Websphere6GetShell:
需要注意的是Websphere6默认支持的Web应用是2.3(web.xml配置的web-app_2_3.dtd)直接上2.5是不行的,请勿霸王硬上弓。其次是在完成部署后记得保存啊亲,不然无法生效。
Websphere8.5GetShell:
部署的时候记得写上下文名称哦,不让无法请求到Shell。
7、GlassFish
7.2GlassFish默认配置
默认Web控制后台:
默认管理密码:
GlassFish2默认帐号admin密码adminadmin。
GlassFish3、4如果管理员不设置帐号本地会自动登录,但是远程访问会提示配置错误。
ConfigurationError
SecureAdminmustbeenabledtoaccesstheDASremotely.
默认端口:
使用Admin的端口。
使用HTTPInstance的端口。
使用JMS的端口。
使用IIOP的端口。
使用HTTP_SSL的端口。
使用IIOP_SSL的端口。
使用IIOP_MUTUALAUTH的端口。
使用JMX_ADMIN的端口。
使用OSGI_SHELL的默认端口。
使用JAVA_DEBUGGER的默认端口。
7.3GlassFishGetShell
Jboss: JBoss应用服务器(JBossAS)是一个被广泛使用的开源Java应用服务器。
它是JBoss企业中间件(JEMS)的一部分,并且经常在大型企业中使用。
因为这个软件是高度模块化和松耦合的,导致了它很很复杂,同时也使它易成为攻击者的目标。
本文从攻击者的角度来看,指出JBoss应用服务器存在的潜在风险,并结合例子如何实现如何在JBoss应用服务器上执行任意代码。
0x01JBoss概述JBoss应用服务器基于Java企业版1.4,并可以在应用在非常多操作系统中,包括Linux,FreeBSD和Windows中,只要操作系统中安装了Java虚拟机。
JBoss应用服务架构
Java管理扩展(JMX)Java管理扩展(JMX)是一个监控管理Java应用程序的标准化架构,JMX分为三层:
JMX架构
设备层(InstrumentationLevel):主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。
代理层(AgentLevel):主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。
分布服务层(DistributedServiceLevel):主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。然而,当前的JMX规范并没有给出这一层的具体规范。
JMXInvokerInvokers允许客户端应用程序发送任意协议的JMX请求到服务端。
这些调用都用过MBean服务器发送到响应的MBean服务。
传输机制都是透明的,并且可以使用任意的协议如:HTTP,SOAP2或JRMP3。
Deployer架构攻击者对JBoss应用服务器中的Deployers模块特别感兴趣。
他们被用来部署不同的组成部分。
本文当中重点要将的安装组件:
JAR(JavaARchives):JAR文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和JVM这样的工具直接使用。在JAR中包含特殊的文件,如manifests和部署描述符,用来指示工具如何处理特定的JAR。
WAR(WebARchives):WAR文件是JAR文件包含一个Web应用程序的组件,与JavaServerPages(JSP),Java类,静态web页面等类似。
BSH(BeanSHellscripts):BeanShell是Java脚本语言,BeanShell脚本使用Java语法,运行在JRE上。
最重要的JBoss应用服务器deployer是MainDeployer。它是部署组件的主要入口点。
传递给MainDeployer的部署组件的路径是一个URL形式:
org.jboss.deployment.MainDeployer.deploy(Stringurlspec)
MainDeployer会下载对象,并决定使用什么样的SubDeployer转发。
根据组件的类型,SubDeployer(例如:JarDeployer,SarDeployer等)接受对象进行安装。
为了方便部署,可以使用UrlDeploymentScanner,它同样获取一个URL作为参数:
org.jboss.deployment.scanner.URLDeploymentScanner.addURL(Stringurlspec)
传入的URL会被定期的检查是否有新的安装或更改。
这就是JBoss应用服务器如何实现热部署的,有新的或者更改的组件会被自动的部署。
0x02攻击
WAR文件最简单的在JBoss应用服务器上运行自己的代码是部署一个组件,JBoss可以通过HTTP安装组件。
WAR文件包需要在WEB-INF目录下含一个web.xml文件,在实际的应用程序代码目录之外。
这是一个描述文件,描述了在什么URL将在之后的应用程序中发现。
WAR文件可以用Java的SDKjar命令创建:
$jarcvfredteam.warWEB-INFredteam.JSP
redteam.war的结构目录:
--META-INF
--MANIFEST.MF
--WEB-INF
--web.xml--redteam.JSP
META-INF/MANIFEST.MF是用jar创建文件时自动创建的,包含JAR的信息,例如:应用程序的主入口点(需要调用的类)或者需要什么额外的类。这里生成的文件中没有什么特别的信息,仅包含一些基本信息:
Manifest-Version:1.0Created-By:1.6.0_10(SunMicrosystemsInc.)
WEB-INF/web.xml文件必须手动创建,它包含有关Web应用程序的信息,例如JSP文件,或者更详细的应用描述信息,如果发生错误,使用什么图标显示或者错误页面的名称等
转自hack80论坛
太长了,复制不下了北京什么医院白癜风好兰州可以治疗白癜风的医院