前段时间,学校学习了J2EE,顺便使用了jboss,查看了jboss的反序列化,然后讨论了反序列化漏洞。
简而言之,Java序列化是将Java对象转换为字节序列的过程。反序列是将字节序列恢复到java对象的...
前段时间,学校学习了J2EE,顺便使用了jboss,查看了jboss的反序列化,然后讨论了反序列化漏洞。

简而言之,Java序列化是将Java对象转换为字节序列的过程。反序列是将字节序列恢复到java对象的过程。然而,在这个转换过程中,程序员的过滤并不严格,这可能导致攻击者实施恶意构造的代码。
举个简单的例子,jboss反序列化漏洞出现在jboss \ server \ all \ deploy \ httpha-invoker.sar \ invoker.war \ WEB-INF \ classes \ org \ jboss \ invocation \ _http://servlet目录中。 ReadOnlyAccessFilter.class文件中的DoFilter。
Public void doFilter(ServletRequest请求,ServletResponse响应,FilterChain链)
抛出IOException,ServletException {
HttpServletRequest httpRequest=(HttpServletRequest)请求;
Principal user=httpRequest.getUserPrincipal();
if((user=null)&&(this.readOnlyContext!=null))
{
ServletInputStream sis=request.getInputStream();
ObjectInputStream ois=new ObjectInputStream(sis);
MarshalledInvocation mi=null;
尝试 {
mi=(MarshalledInvocation)ois.readObject();
}
catch(ClassNotFountException e)
{
抛出新的ServletException('无法读取MarshalledInvocation',e);
}
request.serAttribute('MarshalledInvocation',mi);
mi.setMethodMap(this.namingMethodMap);
方法m=mi.getMethod();
if(m!=null){
validateAccess(m,mi)
}
}
chain.doFilter(request,response);
}
程序将http数据保存到httpRequest,序列化并保存到ois,然后不执行过滤操作,直接使用readObject()反序列化操作并将其保存到mi变量,这实际上是一个典型的java反 - 序列。漏洞。
反复出现的jboss反序列化漏洞(CVE-2017-12149)
目标机器xp_sp3 10.10.1.34
CVE-2017-12149的主要影响是jbossas 5.x和6.x,下载jboss5.1.0 GA并安装(需要java环境)。如果发现在运行期间只能通过localhost或127.0.0.1访问它,则可以通过运行时添加run.bat -b 0.0.0.0命令,或者创建一个新的start.bat内容run.bat -b 0.0。 0.0

发生这种情况时,已经部署了指令并且可以访问这些指令。

可以访问该页面,
访问10.10.1.134: 8080/invoker/readonly

可以判断此页面包含java反序列化漏洞。
对于漏洞利用,我使用vanilla反序列化工具,网上有很多工具,包括ysoserial,可以被利用。

文件目录列表
关于修复漏洞,如果您不使用此组件,建议您将其删除。或添加代码进行监控。
*作者:Dian Zhe Gege
黑客业务列表介绍和一般分类:
类别:攻击入侵破解开发
1:攻击业务订单:暂时取消所有此类业务订单[仅销售常规IDC流量]
2:入侵业务清单:包括网站源代码,办公系统,黑色系统,教育系统等。
3:破解业务类:软件,加密文件,二次打包,脱壳等。
4:二次开发业务清单:软件二次开发,源代码二次开发等
5:其他业务订单:特洛伊木马[通过所有防病毒],远程控制,特殊软件等
备注:未提及的业务订单可根据主要类别查询或直接联系客户服务。为避免浪费双方时间,请在咨询前阅读:业务交易流程及相关说明
注意:仅接受正式业务,个人无权接受。收集此内容。