JAVA代码审计2个小tips

admin 2024年5月8日07:37:40评论8 views字数 1379阅读4分35秒阅读模式

前言:

在放1篇星球的文章,解决遇见的常见问题。

1、lib文件过多时,快速定位lib代码文件

如已知java-callgraph找出的类名

但不知道在哪个lib文件时可利用该工具快速获取到相关lib,适用于大量不知道lib文件的情况。

SearchClassInJar.jarJAVA代码审计2个小tips

2、快速定位api路由思路

静态:

springmvc框架

老生常谈的东西了 

IDEA的RestfulTool插件,一键化提取spring mvc框架的api路由。

JAVA代码审计2个小tipsJAVA代码审计2个小tips

一键化提取相关API 

然后crtl+all即可JAVA代码审计2个小tips

struts2框架:

这个框架的静态路由提取外面就讲的比较少了,因为不同的struts2 路由写法可能大概都不相同。

但是经过如果有深入去实际研究的话会发现基本上都是 命名空间/类名,函数,特定构造方法进行构造的路由。

因此我们可以有限提取出相关的类名,方法名。

而后按照固定格式去构造。

如这里以codeql构造以例 采用这个方法进行构造一个完整的路由。

import java

from RefType c, Callable cf
where 
c.getName().toLowerCase().regexpMatch(".*action") and
cf = c.getAMember() and
not c.getName().regexpMatch(".*<.*>.*")
select c+".do?method="+cf

JAVA代码审计2个小tips

如果不会用codeql也可采用,提取出相关的类名,方法 而后转个python脚本,进行特定构造即可。

JAVA代码审计2个小tips

非静态(代码可运行):

强烈推荐这个项目,如果代码可跑起来,可直接调用该router-router去获取路由。

https://github.com/kyo-w/router-router

原理:

https://xz.aliyun.com/t/12651调试技术可以获取一个jvm

SocketAttachingConnector socketAttachingConnector = new SocketAttachingConnector();
Map<String, Connector.Argument> argumentHashMap = socketAttachingConnector.defaultArguments();
argumentHashMap.get("hostname").setValue("127.0.0.1");
argumentHashMap.get("port").setValue("5005");
argumentHashMap.get("timeout").setValue("3000");
VirtualMachine attach = socketAttachingConnector.attach(argumentHashMap);

然后基于jvm中去获取相关中间组件的路由即可

使用条件:

  • Java JDK11
  • 网络端口默认9090

JAVA代码审计2个小tips启动端口后JAVA代码审计2个小tips连接然后启动路由即可 然后调试完成后即可自动化获取到路由了JAVA代码审计2个小tipsJAVA代码审计2个小tips

后言:

最后打个广告咯

逐渐同步了很多自己花了很多时间DIY的东西以及笔记到星球里,全是原创。

后续陆陆续续也会同步更多,有需要的自己加吧。

不过希望加的老哥,相关东西不要乱传播,感谢。

JAVA代码审计2个小tips
JAVA代码审计2个小tips

JAVA代码审计2个小tips

原文始发于微信公众号(goddemon的小屋):JAVA代码审计2个小tips

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月8日07:37:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JAVA代码审计2个小tipshttps://cn-sec.com/archives/2717978.html

发表评论

匿名网友 填写信息