- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 webshell检测方式深度剖析 --- Pixy系列二(数据流分析)
将数据流分析作为主要分析技术的漏洞分析系统常常具有分析速度快、精度良好等特点,因此非常适用于对大规模程序代码进行分析。在使用数据流分析方法对程序继续分析时,我们总是一方面追求精确的分析,另一方面希望分析过程不会耗费大量的空间和时间。怎样在效率和精度上进行折中处理,是自始至终都要考虑的问题。
2024-01-02 22:23:28
914
原创 Ragel:强大的可嵌入动作的状态机生成器
Ragel的主要目标是为开发人员提供一种将action嵌入到一个正则表达式的状态机的状态转换中的能力,以支持使用单个正则表达式来定义整个解析器或解析器的大部分。
2023-11-21 21:54:10
624
原创 webshell检测方式深度剖析---RASP(taint扩展)
概述Gartner在2014年提出了应用自我保护技术(RASP)的概念,即将防护引擎嵌入到应用内部,不再依赖外部防护设备。不同于WAF部署在应用的外部边界和依赖于特定规则,RASP把防护系统跑在每一个应用内部,因而可以掌握应用内部所有动作的“上下文”,不管攻击姿势如何变形,只要原理相同,那么都可以被RASP识别并实时阻断。在webshell检测领域也有RASP方案的开源产品,最有名的当属百度开源的OPEN RASP,支持jsp和php的多种攻击类型检测,且能集成到现有的SIEM平台中。但我们今天先不
2022-04-17 07:53:14
552
原创 聊聊授权那些事儿(ladon库)
概览今天我们来了解一个用go语言编写的资源访问控制库 — ladon,它使用的权限模型非常类似于RBAC(基于角色的访问控制系统, Role Based Access Control)和ACL(访问控制列表,Access Control Lists),但是相较之下,ladon的授权策略模型能够提供更精细的访问控制,它受AWS的IAM(Identity and Access Management)策略启发,能够在更为复杂的环境中(例如多租户、分布式应用程序和大型组织)工作。注意,ladon仅仅是一个库,而
2022-02-11 19:34:01
4913
原创 聊聊身份认证那些事(OAUTH 下)
概述前面我们讲了授权服务的流程,这里的关键就是授权服务将 OAuth 2.0 的复杂性都揽在了自己身上,这也是授权服务为什么是 OAuth 2.0 体系的核心的原因之一。虽然授权服务做了大部分工作,但是在 OAuth 2.0 的体系里面,除了资源拥有者是作为用户参与,还有另外两个系统角色,也就是第三方软件和受保护资源服务。那么今天我们就站在这两个角色的角度,看看它们应该做哪些工作,才能接入到 OAuth 2.0 的体系里面。第三方软件应用构建第三方软件应用我们先来思考一下:如果要基于淘宝开放平台构建
2022-01-29 10:47:02
2117
原创 聊聊身份认证那些事(基于gin框架的认证实战 下)
概述上一篇文章我们了解了应用认证常用的四种方式:Basic、Digest、OAuth、Bearer。这一篇,我们来看一下实际应用中如何通过gin web框架来设计和实现认证功能。通常我们的应用会用到Basic认证和Bearer认证。其中,Basic 认证用在前端或app登陆的场景,Bearer 认证用在调用后端 API 服务的场景下。业界通常的实现方式是,将应用提供的 API 接口注册到 API 网关中,通过 API 网关中的 Token 认证功能,来实现对应用 API 接口的认证。应用如何实现bas
2022-01-20 18:36:35
1209
原创 聊聊身份认证那些事(基于gin框架的认证实战 上)
开篇身份认证系列进行到现在,大部分内容都是偏理论的,今天我们就来点轻松的,直接上实战,纸上得来终觉浅,绝知此事要躬行呀。正如本篇题目所示,我们来看看如何通过go语言的gin web框架来实现一个简单的认证功能,不过就算你没用过gin也没关系,把代码部分当做伪代码来看就行,毕竟认证功能是语言无关的嘛,先把内功打深厚,然后再学招式就简单得多了。四种基本的认证方式认证是用来验证某个用户是否具有访问系统的权限。如果认证通过,该用户就可以访问系统,从而创建、修改、删除、查询平台支持的资源。认证需要你证明你是
2022-01-09 17:12:16
2581
原创 聊聊身份认证那些事(OAUTH 中)
在介绍授权码许可类型时,我提到了很多次 “授权服务”。一句话概括,授权服务就是负责颁发访问令牌的服务。更进一步地讲,OAuth 2.0 的核心是授权服务,而授权服务的核心就是令牌。那么,授权服务到底是怎么生成访问令牌的,这其中包含了哪些操作呢?还有一个问题是,访问令牌过期了而用户又不在场的情况下,又如何重新生成访问令牌呢?带着这两个问题,我们就以授权码许可类型为例,一起深入探索下授权服务这个核心组件吧。授权服务的工作过程开始之前,先回想下你给小石榴软件授权订单数据的整个流程。我们说小石榴软件先要让你去
2021-10-23 16:07:44
279
1
原创 聊聊身份认证的那些事(OAuth 上)
概论OAuth 到底是什么呢?我们先从字面上来分析下。OAuth 一词中的 “Auth” 表示 “授权”,字母 “O” 是 Open 的简称,表示 “开放” ,连在一起就表示 “开放授权”。你应该知道OAuth存在两个版本:1.0和2.0, 1.0 版本有个 “很大的愿望” 就是想用一套授权机制来应对现实中的所有场景,但现实场景多种多样,只用一种授权机制显然对用户体验不太友好,因此,2.0 不再局限于一种授权机制,而是扩展到四种授权机制,你可以非常灵活地在各种授权场景中选择合适的授权机制。而且1.0版本
2021-07-20 23:36:36
230
原创 聊聊身份认证的那些事(JWT)
开篇上一讲我们讲了CAS协议,其中CAS server的主要任务是签发和认证TGT、ST,或者更通用的说法是颁发和认证访问令牌。而令牌的形式,既可以是没有内部结构且不包含任何信息含义的随机字符串,比如CAS 中的ST,也可以是具有内部结构且包含有信息含义的字符串,比如我们今天要介绍的JWT。JWT不是一种认证协议,也不是一个开源软件的名称,它是一种结构化令牌,可以和各种认证协议结合使用。JWT的适用范围很广,并不仅限于认证授权,下面我们就来看看涉及JWT的方方面面。JWT结构化令牌关于什么是 JWT
2021-02-24 10:11:27
447
原创 聊聊身份认证的那些事(开篇)
开篇身份认证,对于一个安全的应用来说,是第一道门槛,它为后续所有的安全措施提供了“身份”这样一个关键信息。通常每个公司会有好几个外部应用,如果每一个应用使用独立的账号体系,管理起来会非常复杂,用户也需要保存好几个账号密码,严重影响使用体验。而且公司内部的各个管理或开发系统,比如各种服务器、confluence、jira、gitlab等也都使用单独的账号,一个开发人员要记住各种纷繁杂乱的账号和密码,如果不提前保存下来,根本不可能能靠记忆完成输入。这时,如何设计一个简单易用的身份认证体系就显得尤为重要
2021-01-16 19:48:52
1259
原创 浅谈加密算法
开篇密码学是“黄金法则”的基础技术支撑,失去了密码学的保护,任何认证、授权和审计机制都会显得苍白无力。在实际的工作生活中我们经常遇到这样的场景:多个用户共用一个Wi-Fi来上网、共用一个服务器来跑任务;多个进程共用一个数据库来完成数据存储。这些场景中,多方交互都通过一个共同的通道来进行,那我们该如何保障其中的内容安全呢?这就需要用到各种加解密技术了。今天我们就来聊聊一些经典的加解密算法:对称加密算法、非对称加密算法和散列算法。对称加密算法所谓对称加密,代表加密和解密使用的是同一个密钥。如果我想
2020-11-10 23:04:10
803
1
原创 大道至简:聊聊安全原则
文章目录开篇安全原则三剑客1、机密性2、完整性3、可用性黄金法则1、身份识别和认证2、授权3、审计和问责总结开篇当你所在的企业内网被入侵,数据被窃取之后,你也许能知道,是某个业务漏洞导致黑客能够进入内网,但你是否意识到,数据安全保护机制上同样产生了问题?类似这样的问题有很多,当我们遇到一个特定的攻击和安全问题时,往往看到的都是表象,而能否找到根本原因并进行修复,才是安全投入的关键。任何应用最本质的东西其实都是数据。用户使用产品的过程,就是在和企业进行数据交换的过程。比如,用户使用微博,或是将数据写入到
2020-11-08 22:26:38
816
1
原创 webshell检测方式深度剖析---语法语义检测(选读篇)
目录开篇基于语义分析的检测模型预处理模块污点子树提取模块语义分析模块疑问总结开篇又到了周末,大好时间不能浪费,翻看之前下载的论文,发现有一篇讲述的webshell检测。通读一遍后发现作者的检测思路很新颖,但是看到后边也有些地方看的云里雾里,特写篇文章整理一下作者的思路和我的疑问,作为webshell检测这个系列的补充。本来想着把这些疑问想通之后再把文章发布出来,但在这些问题的泥潭里挣扎一段时间后我发现,我应该是永远想不明白了,因为其中的核心逻辑作者写的实在是太模糊了。其实也可以理解,这篇论文毕竟是发表
2020-11-01 17:53:27
1189
原创 webshell检测方式深度剖析---语法语义检测(中)
目录概论1 配置1.1 文件扩展名1.2 PVF列表1.3 全局安全函数列表1.4 外部输入列表1.5 关注函数列表1.6 漏洞帮助信息1.7 Token分类列表2 模型构建2.1词法分析和语法分析2.2 模型构建2.3控制流分析3 分析3.1污点分析3.2过程内和过程间分析RIPS的局限性概论RIPS的核心分析器是用php语言写的,检测结果保存为HTML文件,并用javascript写的窗口管理器来展示检测结果。RIPS不需要第三方依赖,只需要一个web服务器和浏览器即可,将检测代码部署到服务器上,
2020-10-13 00:08:51
638
原创 webshell检测方式深度剖析---语法语义检测(上)
目录概述web应用安全漏洞的本质基于静态代码分析的检测框架配置模型构建分析污点分析过程内和过程间分析结果处理总结概述语法语义检测本质上属于静态代码分析,鉴于篇幅原因,我们分三讲来进行该部分:第一讲从理论角度,论述基于语法语义的静态分析如何应用在webshell检测上,给出一个通用的检测框架。第二讲从实践角度,讲述RIPS在基于给出的理论框架下的具体实现,实现从理论到实践的落地过程。第三讲从代码角度,分析RIPS的架构设计和核心代码部分,从源码入手,深入分析其核心检测原理。web应用安全漏洞的
2020-07-15 23:24:09
994
原创 欣赏一下“秀色可餐”的代码
前段时间,EA公司开源了红警1的部分代码,大家都在赞叹其代码规范性。周末闲来无事,正好可以欣赏一下所谓“秀色可餐”的代码到底长啥样。红警1是一款1995年发售的游戏,也就是说,这些代码距今已经25年了。游戏代码是用C++写的,而且现如今C++依然是TIOBE排行榜前五名中的常客,这不仅让人感叹c++这门语言的生命力。好了,闲话少叙,咱们马上进入正题。首先从github上clone下红警1的代码,打开代码目录,是下面这样式的:嗯,文件名都是大写,还挺另类的,至少我没有见过其他的C++项目是这样文件命名
2020-07-14 23:03:36
3819
原创 webshell检测方式深度剖析 ---统计学特征检测
目录概论统计学特征重合指数概论该篇文章讲述了NeoPI如何利用统计学特征来检测webshell,笔者认为NeoPI选择的这些统计学方法在webshell检测上有些鸡肋,没有太大的实用效果。反而其中的各种统计学方法值得学习一下,因此文章会重点讲解这些统计学特征的原理,以求可以举一反三,并应用在其他领域。统计学特征NeoPi使用以下五种统计学特征检测方法,下面分别来分析各种方法的原理和代码实现(代码部分只选择了核心代码并附加了注释,方便大家阅读。):重合指数重合指数法是密码分析学的一种工具,主要
2020-07-10 22:31:54
1174
原创 webshell检测方式深度剖析---开篇
从本篇文章开始,笔者计划做一个关于webshell检测方式的小专题。目的在于深入分析当前常见且流行的几类检测方式,介绍其检测原理,展现各种检测方式在检出率和误报率上的优劣势。同时在每类检测方式中,选取一款开源、有代表性的webshell检测工具,对其进行深入的、源码级的剖析,加深对这类检测方式的理解。webshell本身可以以各种语言脚本形式存在,比如php、java、python等,但是尤以php的webshell种类最多,检测难度也最大。因此,本专题以php脚本的webshell为目标对象,后续的
2020-06-29 15:35:37
1575
转载 插件化架构:OSGI
OSGi是什么OSGi是Open Services Gateway initiative的缩写,叫做开放服务网关协议。我们说到OSGi时,根据上下文不同,通常可能指OSGi联盟、OSGi标准或者OSGi框架。OSGi最早是为了建立一套将可管理的服务(Managed Service,即插件)通过网络交付到设备中的开放标准,现在已经逐渐扩展到了企业应用领域,在JAVA企业级开发中扮演越来越重要的角色...
2020-04-22 00:05:53
965
原创 插件化架构:php扩展机制
扩展是PHP的重要组成部分,它是PHP提供给开发者用于扩展PHP语言功能的主要方式。开发者可以用C/C++语言定义自己的功能,通过扩展嵌入到PHP中。常见的,扩展可以在以下几个方面有所作为:介入PHP的编译、执行阶段: 可以介入PHP执行脚本生命周期中的那5个阶段(模块初始化、执行等阶段),比如opcache,就是重定义了编译函数,实现内核hook功能;实现自定义内部函数: 可以定义内部...
2020-04-14 17:43:06
1055
转载 插件化架构:基本原理
插件化架构(Plug-in Architecture)是一种面向功能进行拆分的可扩展性架构,通常用于存在多个版本、需要下载安装才能使用的客户端应用,例如 php等这类解释器的扩展模块、Eclipse、notepad++ 这类 IDE 软件的插件、Nginx的模块等。当然,后台业务系统也可以设计成插件化架构来实现高扩展性。基本架构插件化架构包含两类组件:核心系统(core system)和插件模...
2020-04-13 18:27:44
2905
原创 一种将变化封装的设计模式
一种将变化封装的设计模式欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用...
2020-04-08 19:19:16
387
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人