参考:https://blog.youkuaiyun.com/Martin201609/article/details/74973660
很多Jira、Confluence、Jenkins的插件以jar包的形式出现,在其中搜索某些字符串不方便,需要使用脚本批量进行搜索:
#!/bin/bash
PATH_JAR_TO_DECOMPILE="$1"
PATH_DECOMPILER="$2"
# 想要查找既包括KEYWORDS,又不包括KEYWORDS_EXCEPT的文件。用于找XXE
KEYWORDS="$3" #"DocumentBuilderFactory"
KEYWORDS_EXCEPT="$4" #"setFeature"
TMP_JAR_LIST="/tmp/jar.txt"
TMP_RESULT="/tmp/result.txt"
DIR_JAR_OUT="output"
find $PATH_JAR_TO_DECOMPILE -name "*.jar" -type f > $TMP_JAR_LIST
for item in $(cat $TMP_JAR_LIST)
do
java -jar $PATH_DECOMPILER -jar $item -o $DIR_JAR_OUT > /dev/null 2>&1
grep -rl $KEYWORDS $DIR_JAR_OUT|grep -v $KEYWORDS_EXCEPT > $TMP_RESULT
done