前言:
在放1篇星球的文章,解决遇见的常见问题。
1、lib文件过多时,快速定位lib代码文件
如已知java-callgraph找出的类名
但不知道在哪个lib文件时可利用该工具快速获取到相关lib,适用于大量不知道lib文件的情况。
SearchClassInJar.jar
2、快速定位api路由思路
静态:
springmvc框架
老生常谈的东西了
IDEA的RestfulTool插件,一键化提取spring mvc框架的api路由。
一键化提取相关API
然后crtl+all即可
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
如果不会用codeql也可采用,提取出相关的类名,方法 而后转个python脚本,进行特定构造即可。
非静态(代码可运行):
强烈推荐这个项目,如果代码可跑起来,可直接调用该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
启动端口后
连接然后启动路由即可 然后调试完成后即可自动化获取到路由了
后言:
最后打个广告咯
逐渐同步了很多自己花了很多时间DIY的东西以及笔记到星球里,全是原创。
后续陆陆续续也会同步更多,有需要的自己加吧。
不过希望加的老哥,相关东西不要乱传播,感谢。
原文始发于微信公众号(goddemon的小屋):JAVA代码审计2个小tips
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论