使用Vscode插件HaE File辅助进行代码审计
项目github地址:
https://github.com/overspace-labs/HaE
地图大师自己的规则:在本公众号回复 haefile 获取
本节课视频教程:https://www.bilibili.com/video/BV1KY3w6UE2Y/

一、下载安装
1.打开vscode,进入插件商店,搜索hae进行下载

2.安装完毕重启vscode,进入hae设置,配置Ripgrep(如果你的hae file报错的话)
**Ripgrep(rg)**是一个用Rust编写的命令行文本搜索工具,可以看作传统grep的现代化替代品,它默认递归搜索当前目录,能自动尊重.gitignore规则并跳过隐藏文件和二进制文件,从而输出更干净的结果;其核心优势是速度极快,利用多线程、SIMD指令集和高效的正则引擎,在大型代码库中搜索时常比grep快数倍甚至数十倍,同时还提供了彩色高亮、按文件类型过滤(如-tpy只搜Python)、可选PCRE2高级正则支持以及直接搜索压缩文件等开箱即用的便利功能,让你在终端里能更快更爽地找到想要的内容。
使用everything等软件全局搜索Ripgrep找到vscode插件目录中的Ripgrep复制路径进行配置
我这里位置是:
D:\vscode\1b6a188127\resources\app\node_modules.asar.unpacked\@github\copilot-win32-x64\ripgrep\bin\win32-x64\rg.exe
vscode打开整个需要审计的代码目录,然后点击scan即可对整个目录进行扫描


然后导入地图大师之作的Rules.yml

多个php敏感函数匹配规则,接着点击仪表板开始整个项目敏感函数扫描,对于不想识别的后缀,可以在设置中过滤掉,比如此处我只想审计php代码,不想看js文件中的敏感信息


扫描出结果如下

随机找两个漏洞复现一下
案例1:sql注入

找到sql执行函数,ctrl+左键找到sql语句,发现拼接变量,且变量可以控制,由用户post输入产生,且该页面没有发现鉴权手段
把代码运行起来,使用抓包工具复现一下

直接指定注入点注入sqlmap跑一下

python2 sqlmap.py -r target.txt --batch --technique=B --dbms=mysql --threads 10
最终拿到数据
python2 sqlmap.py -r target.txt --batch --technique=B --dbms=mysql --threads 10 -D hk7 -T admin -C user,id,password,salt,token --dump
案例2:文件上传

第一个文件同时可以上传四个文件,追踪下文件名看看有没有可控点

发现又可控点,但是有白名单限制只能上传图片格式没法getshell

来看这个make\controller\doAddhb.php文件

此处通过extension变量中的pathinfo获取后缀,再生成时间戳作为最终的的文件名,最后将上传的零食文件移动到修改后的文件名中
构造payload

上传成功

刚才分析了代码他最终的路径是../uploads/时间戳拼接后缀,例如../uploads/17121212122.php
通过服务器端响应的时间Date,找ai生成为时间戳,注意一定要区分格林尼治时间和北京时间,最好让ai生成两份

构造路径尝试访问


夜雨聆风