路由API提取脚本+白转灰思路分享

前言:

很久没发文章了,想发点什么,但是最近学习的有些东西和审的有些东西,不太好发,有些还没吃透,有些价值不是很高,后面再说吧。
还有个原因就是空的时间,忙着搞毕业设计,也没啥时间搞。
在这里插入图片描述
就水一个脚本吧,脚本开发原理比较简单,重点自动化fuzz的思路以及匹配的思路咯。

脚本产生原因:

在代码审计中,经常会想快速提取路由,进而转白盒为灰盒,然后进行挂着自动化fuzz。
虽然对于jsp,php,asp后缀这种文件,生成比较简单,自己根据电脑的文件生成一个路由即可。
但是对于springmvc这种,也可以调用codeql去获取路由,但是对于struts2或者说是一些特殊框架总是找不到一种通解去提取。

但是我们可以从另外一个角度去做这件事,直接对class文件进行反编译后,然后将jsp和.java文件 调用py脚本去提取出每个文件里面的相关路由。
进而就可以直接快速获取到大部分的路由了,进而完全实现白转灰,然后进行挂着自动化fuzz。

而且这个代码写起来也比较简单,最开始想偷懒,以为肯定有人写好了的。
但是找了一圈,也没看到网上有这样的代码,所以就只能自己写了。
在这里插入图片描述

脚本:

使用方法:
python3 脚本.py --dir=
在这里插入图片描述
结果:在这里插入图片描述

import os
import re
import argparse
import urllib.parse

regex = {
    "Linker": r'(?:"|\')((?!text\/javascript)((?:[a-zA-Z]{1,10}://|//)[^"\'/]{1,}\.[a-zA-Z]{2,}[^"\']{0,})|((?:/|\.\./|\./)[^"\'><,;|*()(%%$^/\\\[\]][^"\'><,;|()]{1,})|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{1,}\.(?:[a-zA-Z]{1,4}|action)(?:[\?|#][^"|\']{0,}|))|([a-zA-Z0-9_\-/]{1,}/[a-zA-Z0-9_\-/]{3,}(?:[\?|#][^"|\']{0,}|))|([a-zA-Z0-9_\-]{1,}\.(?:php|asp|aspx|jsp|json|action|html|js|txt|xml)(?:[\?|#][^"|\']{0,}|)))(?:"|\')',
}
def extract_routes_from_file(filepath):
    with open(filepath, 'r', errors='ignore') as file:
        content = file.read()
        if not content:
            return []
        routes = []
        for name, pattern in regex.items():
            matches = re.findall(pattern, content)
            for match in matches:
                route = match[0].encode('ascii', 'ignore').decode()
                route = urllib.parse.unquote(route)
                if route not in routes:
                    routes.append(route)
        return routes

def find_routes(root_dir):
    routes = set()
    for dirpath, dirnames, filenames in os.walk(root_dir):
        for filename in filenames:
            filepath = os.path.join(dirpath, filename)
            routes_in_file = extract_routes_from_file(filepath)
            routes.update(routes_in_file)
    return routes

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--dir', help='Directory to search for routes', required=True)
    args = parser.parse_args()
    root_dir = args.dir
    try:
        routes = find_routes(root_dir)
        routes = list(set(routes))
        routes = [route for route in routes if route not in ['..', ''] and re.match(r'^[\w\./]+$', route)]#进行去重文件里面的特殊字符操作
        with open('routes.txt', 'w') as f:
            for route in routes:
                f.write(route + '\n')
    except Exception as e:
        print(f'Error: {e}')

脚本进一步完善与优化:

优化:

①添加一个后缀判断,即不提取js,css,html,png这种后缀的路由。
②对提取的数据进行一个排序,按照.do .action的这种放置在一起的思路,进而美化数据。

可以进一步完善为其他功能:

1.)写一个正则匹配进行匹配idcard,phone,accesskey等敏感信息,然后结合反编译的小程序,扫目录的源码等达到快速匹配所有文件捡漏洞的效果。

因为这种自己写过相关的工具,而且实战效果还可以,所以这里就没完善这个脚本的,但是思路可以提供给师傅们,师傅们进行自己完善。

2.)也可以利用这种思路写一个api提取的burp的插件,实现自动化api提取。
自己也写过一个这种的,但是目前不打算放出来,还属于内测版。
在这里插入图片描述

兔年冲啊
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Vue 3.0 和 ASP.NET Core WebAPI 都支持动态路由,实现起来也比较简单。 首先,在 ASP.NET Core WebAPI 中,我们需要在 Startup.cs 中配置路由。可以使用以下代码: ``` app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller}/{action}/{id?}"); }); ``` 这个配置会将请求转发到对应的控制器和方法中。其中,{controller} 和 {action} 表示控制器和方法名,{id?} 表示可选参数。 接着,在 Vue 3.0 中,我们可以使用 vue-router 实现动态路由。可以使用以下代码: ``` const router = createRouter({ history: createWebHistory(), routes: [ { path: '/:controller/:action/:id?', name: 'dynamic', component: DynamicComponent } ] }) ``` 这个配置会将请求转发到 DynamicComponent 组件中。其中,:controller、:action 和 :id? 表示控制器、方法名和可选参数。 最后,我们可以在 DynamicComponent 组件中调用 ASP.NET Core WebAPI 中的动态路由。可以使用以下代码: ``` axios.get(`/api/${this.$route.params.controller}/${this.$route.params.action}/${this.$route.params.id}`) .then(response => { // 处理响应 }) .catch(error => { // 处理错误 }) ``` 这个代码会发送请求到对应的控制器和方法中,其中,this.$route.params.controller、this.$route.params.action 和 this.$route.params.id 分别对应控制器、方法名和参数。 以上就是 Vue 3.0 和 ASP.NET Core WebAPI 实现动态路由的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goddemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值