前言
在进行.Net源码审计时,往往会遇到拿到源码DLL文件,然后需要逐一使用反编译工具进行手动审计的情况。这种手动审计方法不仅费时费力,而且效率低下。虽然可以使用findstr /msi /c
命令简单搜索字符串,但问题的根本在于无法确定关键字符串所在的方法位置,导致搜索字符串关键字如同大海捞针般困难。
所以一个代码审计的辅助工具就运育而生了。
工具的主要功能是批量递归检测文件夹下所有.cs或.java源码中,是否包含给出的关键字符串,然后再输出上下文代码和方法中的利用链,方便快速节省时间。
实战
首先需要在配置文件中配置搜索的字符串,可以支持多个
在config.properties中配置源码所在文件夹、源码输出文件夹、搜索字符串 分别对应配置字段:csDirectory、outputDirectory、searchText
例如:
csDirectory=C:\\Users\\xxxx outputDirectory=C:\\Users\\xxxx\\outputsearchText=where,Concat,...
为了更加便捷的展示工具搜索字符串结果,我便让结果展示了上下文几行的代码,不用再到源码中查看即可判断代码是否存在漏洞,关键源码如下:
private static void analyzeCode(Path csFile, String searchText, String outputDirectory) { try (BufferedReader br = new BufferedReader(new FileReader(csFile.toFile()))) { List<String> lines = new ArrayList<>(); String line; while ((line = br.readLine()) != null) { lines.add(line); } Map<String, List<String>> methodCallGraph = new HashMap<>(); Map<String, Integer> methodLineNumbers = new HashMap<>(); Set<String> methodsWithKeyword = new HashSet<>(); Map<String, List<String>> methodContexts = new HashMap<>(); // 将 searchText 分割成多个关键字 String[] keywords = searchText.split(
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022