【一日一技】快速从一堆jar包找到包含特定包名的jar


在日常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 包的名称。

img

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

img

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、写代码等等之前繁琐的工作变得更加方便快捷。


手机扫码阅读

用友U8+渠道管理(高级版) toviewspecial.jsp 文件读取漏洞

用友U8+渠道管理(高级版) gettoken_new SQL注入漏洞

评 论