java网站代码的安全检测

 
 
        许多棋牌游戏,以及博彩平台都采用JAVA 架构,包括struts、Spring、
 
Hibernate,以及J2EE、JSF等等的框架,依托于Weblogic、 Tomcat环境下,java
 
开发的代码,高效率的安全运转,数据千万级的并发,得到BC平台,博彩网站,
 
金融,借贷平台,棋牌游戏平台运营者的青睐。
 

 
Sine安全根据客户的要求,对该旗下的java代码安全进行网站安全检测,以及网
 
站漏洞检测,等全方位的安全检测。
 
我们来看下java根目录下的web.xml文件进行查看,如下图:
 

 
关键的过滤器就是这个,里面有个excludes,代码不分析了,这里就是说
 
excludes里面的这些文件或者目录下的文件访问是不用验证权限的。剩下的大部
 
分都是sevlet,再仔细的安全检测一遍,发现了一处文件上传:

 
从上面的这段网站代码中可以看出来,这里是类加载的一个解密过程,中间加解
 
密通过so或者dll文件,只能扔到IDA下分析了,高兴的是这段代码并没有做代码
 
的混淆加密。如下图
 
这两个就是java JNI调用的接口,分析一下这里面的伪代码看看:
 
decryptClass0 解密的程序。GetClassDataInfo这个主要是获取文件的相关信息
 
,并且存到PInfo中decryptWithPublicKey 这个就是主要的解密函数的。Sine安
 
全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站漏洞修复,渗
 
透测试,安全服务于一体的网络安全服务提供商。
 
 
这里的v6就是刚才HashValue算出来的值,这个base64的算法,无非就是根据
 
HashValue生成一个混淆种子,然后跟decoding里面的base64子附近做异或运算
 
那么剩下的就是classname,根据字面意思我们就当做jar包里面的class名字来看
 
编写C++解密,然后直接去调用这个so,jdecoder.cpp


 
(linux系统)把javaCrypto.so文件和jdecoder.cpp放到同一个目录下,
 
编译g++ -o jdec *.cpp -fPIC -ldl ,然后运行就解密开了,从这里可以推算一
 
件事情,就是说,他自己传进来确实是jar里面的classname,这个程序其实只要
 
这个classname加盐,然后把盐存好,破解成本就很高.解开了,分析下JAVA网站
 
的漏洞点:Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测
 
、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
 
分享: