代码审计:企业级web代码安全架构
#代码审计 对源代码进行检查,寻找代码中的bug,代码审计是企业安全运营以及安全从业者必备的基础能力
就是代码审计,以开放的形式从代码层面寻找bug
seay源代码审计系统
RIPS基于php开封的针对php代码安全审计的软件
检查敏感函数的参数,回溯变量,判断变量是否可控并且没有经过严格 的过滤,这是一个逆向追踪的过程
跟踪外部传入的参数,观察是否有变量传入到高危函数里面,或者传递 过程中有代码逻辑漏洞,这是一个正向追踪的方式
直接挖掘功能点漏洞,根据经验判断通常在哪些功能中会出现漏洞,直 接全篇阅读该功能代码
编程语言的特性和基础(php)
web前端编程基础
漏洞形成原理
代码审计思路
不同系统、中间件之间的特性差异
环境搭建
phpstudy
php核心配置
分析引擎
数据流:可以检测涉及将被感染数据(用户输入)用于危险用途的潜在漏洞
控制流:检测潜在的危险操作的执行顺序
语义:在程序内部层面检测可能会引发潜在危险的函数和API的各种使用情况
结构:结构分析用于检测可能存在危险的机构缺陷或程序定义
配置:分析在应用程序的配置文件中搜索错误、缺陷、和违反规则的策略漏洞
主要模块
proxy代理:代理抓包功能,可以截获并修改从客户端到web服务器的请求数据
spider:分析网站目录结构
scanner:发现web程序漏洞,扫描sql注入、xss跨站、文件包含、http头注入、源码泄漏等多种漏洞
Intruder入侵:进行暴力破解和模糊测试
repeater中继器:用于数据修改测试
sequencer会话:统计、分析会话中随机字符串的出现概率,从而分析session、token等存在的安全风险
decoder:编码和解码
comparer比较文件的差异性
根据敏感关键字回溯参数传递过程
查找可控变量,正向追踪变量传递过程
寻找敏感功能点,通读功能点代码
直接通读全文代码
函数集文件
配置文件
安全过滤文件
index文件
根据功能点定向审计
文件上传功能
文件管理功能
登陆认证功能
常见漏洞
#sql注入漏洞
1、注入直接写入webshell,或者执行系统命令
2、注入获取管理员的密码信息
挖掘
一般经常出现在登录、获取http请求头、订单处理、业务相对复杂的地方
普通注入union查询数据库
编码注入、宽字节注入
二次urldecode注入
防范
通常数据污染的两种方式,一种是应用被动接受参数,一种是主动获取参数
xss漏洞跨站脚本攻击cross site scriptings
一种是通过外部输入然后直接在浏览器端触发,反射型xss
一种是先利用代码保存在数据库或文件中,存储型xss
只要是利用没有被过滤的参数,且这些参数传入到输出函数
经常出现在文章发表、评论回复、留言、资料设置等地方的存储型xss
一般的xss漏洞都是因为没有过滤特殊字符,
导致可以通过注入单双引号记忆尖括号等字符利用漏洞
劫持其他用户进行一些请求
CSRF主要是用于越权操作,所有的漏洞自然在有权限控制的地方,管理后台、会员中心,论坛帖子以及交易管理
打开非静态操作的页面,抓包看有没有token,没有token的话,直接请求整个页面,不带referer,如果返回的数据还是一样的,就有可能有csrf漏洞
文件包含漏洞大多出现在模块加载,以及cache调用的地方,比如传入的模块名参数
远程文件包含
可以包含远程文件的包含漏洞,远程文件包含需要设置allow_url_include = On
文件包含截断
大多数的文件包含漏洞都是需要截断的
先看功能点对应的文件,再去读文件,或者搜索文件读取的函数
防范:
采用白名单的方式过滤文件扩展名
保存上传的文件时,重命名文件md5timerand 方式
应用程序本身过滤不严,用户可以通过请求将代码注入到应用中执行。
eval()和assert()函数导致的代码执行漏洞大多是因为载入缓存或者模版以及对变量的处理不严格导致
可以自定义的参数值替换程序猿有的变量值,变量覆盖漏洞通常需要结合程序的其他功能来实现完整攻击
程序的逻辑失误导致的
一般的认证安全问题都会在服务端直接取用cookie的数据而没有校验,其次是cookie加密数据存在可预测的情况
通常没有使用session来认证,而是直接将用户信息保存在cookie中,程序使用的时候直接调用
需要先构造号利用代码写入网站保存
在第二次或多次请求后调用攻击代码触发或者修改配置触发的漏洞