java rmi远程方法调用漏洞,JavaRMI服务远程方法调用漏洞如何修复linux系统扫描出来 爱问知识人...

背景要求:定时监控远程主机上mongodb数据库内存使用的情况,当内存使用过大时暂停逻辑处理线程后启动内存空间的释放处理线程,释放完成后再启动逻辑处理线程。操作系统:CentOS 64bit (Linux)步骤(代码省略):1。创建Socket远程服务器2。

创建客户端  配置:  #查找对象stub端口  RMI_PORT=9902  #服务端口  RMI_SERV_RMI_PORT=9903  #注册服务地址端口要和查找对象stub端口一致  RMI_URL=rmi://192。168。0。118:9902/MongoServer  #绑定IP  RMI_IP=192。

168。0。118  #检查内存shell  RMI_MEMQUERY_COMMAND=sh /home/test/BI/smartshow14/MongoDBRMIServer/memquery。sh  #释放内存shell  RMI_MEMFREE_COMMAND=sh /home/test/BI/smartshow14/MongoDBRMIServer/memclear。

sh  #释放内存容量阀值,单位M  RMI_MEM_CAPACITY_LIMIT=30003。启动服务器客户端线程通过 rmi://192。168。0。118:9902/MongoServer 访问时出现异常:--定时扫描MONGODB内存线程--:开始运行!java。

rmi。UnmarshalException: error unmarshalling return; nested exception is:  java。lang。ClassNotFoundException: com。linkage。iface。

IMongoDBScan (no security manager: RMI class loader disabled) at sun。rmi。registry。RegistryImpl_Stub。lookup(Unknown Source) at java。

rmi。Naming。lookup(Naming。java:84) at com。linkage。querytool。QueryRMICaller。ramCapacityScan(QueryRMICaller。java:87) at com。

linkage。querytool。MongoDBARMScanThread$TimerWorkTask。run(MongoDBARMScanThread。java:94) at java。util。TimerThread。mainLoop(Timer。

java:512) at java。util。TimerThread。run(Timer。java:462)Caused by: java。lang。ClassNotFoundException: com。linkage。iface。IMongoDBScan (no security manager: RMI class loader disabled) at sun。

rmi。server。LoaderHandler。loadProxyClass(LoaderHandler。java:535) at java。rmi。server。RMIClassLoader$2。loadProxyClass(RMIClassLoader。

java:628) at java。rmi。server。RMIClassLoader。loadProxyClass(RMIClassLoader。java:294) at sun。rmi。server。MarshalInputStream。

resolveProxyClass(MarshalInputStream。java:238) at java。io。ObjectInputStream。readProxyDesc(ObjectInputStream。java:1530) at java。

io。ObjectInputStream。readClassDesc(ObjectInputStream。java:1492) at java。io。ObjectInputStream。readOrdinaryObject(ObjectInputStream。

java:1731) at java。io。ObjectInputStream。readObject0(ObjectInputStream。java:1328) at java。io。ObjectInputStream。readObject(ObjectInputStream。

java:350) 。。。 6 more--定时扫描MONGODB内存线程--:处理结束!=======================================================================================================--定时扫描MONGODB内存线程--:开始运行!java。

security。AccessControlException: access denied (java。net。SocketPermission 192。168。0。118:9902 connect,resolve)        at java。

security。AccessControlContext。checkPermission(AccessControlContext。java:374)        at java。security。AccessController。checkPermission(AccessController。

java:546)        at java。lang。SecurityManager。checkPermission(SecurityManager。java:532)        at java。lang。SecurityManager。

checkConnect(SecurityManager。java:1034)        at java。net。Socket。connect(Socket。java:524)        at java。net。Socket。connect(Socket。

java:478)        at java。net。Socket。(Socket。java:375)        at java。net。Socket。(Socket。java:189)        at sun。rmi。transport。

proxy。RMIDirectSocketFactory。createSocket(RMIDirectSocketFactory。java:22)        at sun。rmi。transport。proxy。RMIMasterSocketFactory。

createSocket(RMIMasterSocketFactory。java:128)        at sun。rmi。transport。tcp。TCPEndpoint。newSocket(TCPEndpoint。java:595)        at sun。

rmi。transport。tcp。TCPChannel。createConnection(TCPChannel。java:198)        at sun。rmi。transport。tcp。TCPChannel。newConnection(TCPChannel。

java:184)        at sun。rmi。server。UnicastRef。newCall(UnicastRef。java:322)        at sun。rmi。registry。RegistryImpl_Stub。lookup(Unknown Source)        at java。

rmi。Naming。lookup(Naming。java:84)        at com。linkage。querytool。QueryRMICaller。ramCapacityScan(QueryRMICaller。java:89)        at com。

linkage。querytool。MongoDBARMScanThread$TimerWorkTask。run(MongoDBARMScanThread。java:94)        at java。util。TimerThread。mainLoop(Timer。

java:512)        at java。util。TimerThread。run(Timer。java:462)--定时扫描MONGODB内存线程--:处理结束!============================================================================================================--定时扫描MONGODB内存线程--:开始运行!java。

security。AccessControlException: access denied (java。lang。RuntimePermission createSecurityManager)        at java。security。

AccessControlContext。checkPermission(AccessControlContext。java:374)        at java。security。AccessController。checkPermission(AccessController。

java:546)        at java。lang。SecurityManager。checkPermission(SecurityManager。java:532)        at java。lang。SecurityManager。

(SecurityManager。java:282)        at java。rmi。RMISecurityManager。(RMISecurityManager。java:45)        at com。linkage。querytool。

QueryRMICaller。ramCapacityScan(QueryRMICaller。java:88)        at com。linkage。querytool。MongoDBARMScanThread$TimerWorkTask。

run(MongoDBARMScanThread。java:94)        at java。util。TimerThread。mainLoop(Timer。java:512)        at java。util。TimerThread。

run(Timer。java:462)--定时扫描MONGODB内存线程--:处理结束!==========================================================================================================以上异常都有可能出现,通过以下方式可解除问题:1。

在客户端程序前打开安全管理器:try { System。setSecurityManager(new java。rmi。RMISecurityManager()); mds = (IMongoDBScan) Naming。lookup(urlStr);} catch (MalformedURLException e) { //。

。。。。。。。。。}   2。修改/usr/java/jdk1。6。0_21/jre/lib/security/java。policy后重启 grant {  permission  java。security。AllPermission; }。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值