/726.jpg

WIH优化

0x00 关于WIH

WIH是新版ARL新缝合的一个闭源脚本,目前最新版为WebInfoHunter version: v1.5.4-beta,在实际使用的过程中,遇到过多次,举个例子,比如说我在用Burp+burp插件能扫描出一些key,返回到ARL中去查看WIH的结果(已知资产存在ARL,并且符合WIH中的规则),发现这个Key并没有被记录下来,存在丢包的情况是非常难受的,故有了此篇笔记,记录一下我个人是怎么魔改WIH的

gin-vue-admin底层任意代码覆盖CVE-2024-31457

0x01 框架描述 gin-vue-admin是基于vite+vue3+gin搭建的开发基础平台(支持TS,JS混用),集成jwt鉴权,权限管理,动态路由,显隐可控组件,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,chatGPT自动查表等开发必备功能,目前大概19.8k stars。 0x02 环境部署 为了方便各类工具的使用等,golang的环境直接采用了g管理工具管理与安装 0x03 CVE:CVE-2024-31457 权限要求:X-Token配置代码生成权限 gin-vue-admin<=v2.6.1后台任意代码覆盖漏洞,在插件系统->插件模板功能中,攻击者可通过操控plugName参数进行目录穿越,并在指定穿越目录下创建指定文件夹api、config、global、model、router、service以及main.go主函数,并且文件夹中的go文件可根据特别的Poc参数自由插入代码。 受影响代码:https://github.com/flipped-aurora/gin-vue-admin/blob/746af378990ebf3367f8bb3d4e9684936df152e7/server/api/v1/system/sys_auto_code.go:239 先来看AutoCodeApi 结构体的方法 AutoPlug 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 func (autoApi *AutoCodeApi) AutoPlug(c *gin.Context) { var a system.AutoPlugReq err := c.ShouldBindJSON(&a) if err != nil { response.FailWithMessage(err.Error(), c) return } a.Snake = strings.ToLower(a.PlugName) a.NeedModel = a.HasRequest || a.HasResponse err = autoCodeService.CreatePlug(a) if err != nil { global.GVA_LOG.Error("预览失败!", zap.

API渗透测试

API渗透测试 0x00 前言 在昨天阅读国外的文章的时候,翻到了一篇 Microsoft Regional Director DANA的文章,我个人是很喜欢去测试API接口的,比如面试官常问的,“给你个登录框你有什么思路 ”,在很久以前面QAX的时候,有梳理过一个思路,如下: 大多数情况下,特别是最近吧,发现自己漏洞挖掘越来越没有耐心了,所以我觉得应该让测试流程化,而流程化的第一个步骤,我觉得就是梳理站点的API文档。 0x01 API文档梳理 回到Microsoft Regional Director DANA的文章里,DANA详细的教学了为什么要梳理一份API文档(当然源站点自带api-docs最好)以及如何去梳理一份API文档,具体为什么要梳理以及一些Swagger, and the OpenAPI specification原理等,可以去原文看DANA文章 How to craft rogue API docs for a target when they don’t exist,这里只简单记录一下如何操作。 首先需要用到的工具有: mitmproxy2swagger 1 pip install mitmproxy2swagger 使用谷歌浏览器利用开发者工具捕获流量,首先打开F12,设置保留日志与禁用缓存 尽可能的把所有的功能点触发一遍,包括不限于,修改头像、评论、举报等等 生成 HTTP 存档 (HAR) 利用前面提到的工具mitmproxy2swagger将HAR转换为简单的openai规范文档 1 mitmproxy2swagger -i ***.***.com.har -o crapi.yaml -p http://***.***.com -e -f har -i:用谷歌浏览器保存下来的HAR源文件 -o:输出要生成的yaml文件 -p:调用API的前缀,通常为 target.domain 或 target.domain/v1 等 -e:在文档中提供示例数据,这些数据为刚刚我们浏览器捕获的真实数据,如不想泄露或者需要将文档分享给他人,建议不加这个参数 -f:这告诉工具输入文件是 HAR 捕获,而不是典型的 mitmproxy流文件 文档生成后,在x-path-templates 下有大量以"-ignore:/“开头的行,我们需要打开文件并删除任何看似 API 调用的请求上的"ignore:"。并且忽略/删除图像、图标、HTML、Javascript 等内容,使文档看起来变成如下: