在日常java代码审计中,经常遇到项目包含一大堆jar包,全部放入库中会增加巨大的索引耗时,
除了常见的spring struts2 等框架jar包可以放入库中,方便搜索相关路由外,我们只需要搜索到包含我们需要审计的jar包即可,方法也很简单,直接使用jar tf命令配合grep -q命令即可完成
这里以亿赛通为例,切到jar所在目录,或者直接写上完整路径也可以
搜索指定位置的jar
for jar in ./*.jar; do
if jar tf "$jar" | grep -q 'com/esafenet/'; then
echo "$jar"
fi
done
脚本大致逻辑: 使用 jar tf 命令列出 JAR 包中的文件,如果找到包含 com/esafenet/ 的路径,则输出该 JAR 包的名称。

即可快速筛选出我们需要的jar包,然后直接右键加入库即可开始正常审计。

win参考如下(AI生成,自测)
Get-ChildItem -Filter *.jar | ForEach-Object {
if (jar tf $_.FullName | Select-String -Quiet 'com/esafenet/') {
$_.Name
}
}
改进版本
搜索当前目录及其子目录下所有jar
find . -name "*.jar" | while read jar; do
if jar tf "$jar" | grep -q 'nc/bs/oa/oaco/im/'; then
echo "$jar"
fi
done
win参考如下(AI生成,自测)
Get-ChildItem -Recurse -Filter *.jar | ForEach-Object {
if (jar tf $_.FullName | Select-String -Quiet 'nc/bs/oa/oaco/im/') {
$_.FullName
}
}
比如今天有朋友问在用友NC importExcelTemplate 任意文件上传漏洞 文章下面问如何查看importExcelTemplate方法对应的jar包是哪一个,在nc的安装目录的/home/modules下使用如下命令查找包含uap/lfw/dbl/cpdoc/impt/action 包名的jar包
#modules find . -name "*.jar" | while read jar; do
if jar tf "$jar" | grep -q 'uap/lfw/dbl/cpdoc/impt/action'; then
echo "$jar"
fi
done
./webdbl/lib/pubwebdbl_dblLevel-1.jar
成功获取到uap/lfw/dbl/cpdoc/impt/action 包名所在jar包/home/modules/webdbl/lib/pubwebdbl_dblLevel-1.jar
然后可以导入IDEA的库里用作类或者直接使用jd-gui 来查看

符合上面漏洞分析部分,对吧。
其次是还可以使用批量反编译jar包成class,然后导入IDEA进行搜索,亦或者使用许少开发的jar-analyzer来进行处理后,再导入IDEA进行代码审计。
PS: 现在有AI辅助,代码审计、解释代码、写命令,写docker compose、写代码等等之前繁琐的工作变得更加方便快捷。

