当前位置:首页 > 技术分析 > 正文内容

代码审计常见漏洞总结(代码评审缺陷率是什么)

ruisui883个月前 (02-04)技术分析14

代码审计,属于白盒测试,审查代码检查是否有安全问题,核心就两点:跟踪用户输入数据+敏感函数参数回溯。

关键词查询

1. 密码硬编码(密码明文存储)——即将密码直接以明文的形式写在代码中,既不安全,也难以维护:password,pass,pwd,jdbc等

2. 反射型XSS——从用户那儿获取参数中的值,未经检查参数合法性的情况下,直接输出在js代码中,产生脚本攻击:getParameter,<%=,param等

3. 存储型XSS——指非法数据存入到数据库中,每次加载都会执行恶意代码产生攻击。为了检查代码是否有该漏洞,需从数据库的插入语句中回溯参数的来源,如果整个流程都没有对参数进行过滤,且没有全局过滤器,则判断存在存储型XSS:insert,save,update等

4. SQL注入——sql语句中出现+,append,$(),#等拼接字眼且没有配置SQL过滤文件,则存在sql漏洞。根本解决办法是预编译,也就是sql语句事先编译好了,随后传入参数填坑,不会重新再编译,也就不会有sql注入:select,update,delete,insert等

5. 任意文件下载——整个流程中没有对用户请求的文件名进行合法性检查,导致用户能够下载一些配置文件:fileName,filePath,getFile,getWriter等

6. 任意文件删除——同样也是没有对用户请求的参数进行过滤,导致输入参数拼接以能够删除重要文件:delete,deleteFile,fileName,filePath等

7. 任意文件上传——未过滤用户输入文件名,导致能够上传恶意可执行文件。需注意有没有配置文件上传白名单,是否有检查后缀名,配置文件是否设置了白名单或者黑名单:upload,write,fileName,filePath等

8. 命令注入——判断是否直接拼接外部传来的值:getRuntime,exec,cmd,shell等

9. 缓冲区溢出——直接拷贝或*,未考虑大小:strcpy,strcat,scanf,memcpy,memmove,memeccpy,Getc(),fgetc(),getchar,read,printf等

10. XML注入——在导入配置、数据传输接口等场景,留意XML解析器是否禁用外部实体:DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser、SAXReader 、XMLReader、SAXSource 、TransformerFactory 、SAXTransformerFactory 、SchemaFactory等

11. 日志记录敏感信息——由于日志文件保存位置有一定要求,一般不在考虑范围之内(不结合其他漏洞一起考虑的情况下):log.info,logger.info等

12. URL跳转——注意是否配置了url跳转白名单:sendRedirect,setHeader,forward等

13. 敏感信息泄露及错误处理——查看配置文件是否配置了统一错误页面,如果有则不存在此漏洞,如果没有则搜索定位看是否泄露敏感信息:Getmessage,exception等

14. 反序列化漏洞——当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码:ObjectInputStream.readObject,ObjectInputStream.readUnshared,XMLDecoder.readObject,Yaml.load,XStream.fromXML,ObjectMapper.readValue,JSON.parseObject

15. 不安全组件暴露——通过查看配置文件 AndroidManifest.xml,查看属性有没有配置 false。

逻辑漏洞

1. CSRF(Cross Site Request Forgery, 跨站域请求伪造)——查看配置文件有没有配置csrf全局过滤器,如果没有则看每个操作前有没有添加token的防护机制。

2. SSRF(Server-Side Request Forgery:服务器端请求伪造)——查看用户可控输入链接有没有过滤机制。

3. 越权漏洞——重点关注用户操作请求时是否有对当前登陆用户权限做校验或者权限框架的配置文件以及实现方法。

4. 敏感数据弱加密——看数据传输中的加密方法,一般写在工具类util中。

5. 短信验证码——时间限制防止可爆破,次数限制防止对手机产生攻击,可否自定义防止发送不良信息。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1661.html

标签: objectmapper
分享给朋友:

“代码审计常见漏洞总结(代码评审缺陷率是什么)” 的相关文章

vue 3 学习笔记 (八)——provide 和 inject 用法及原理

在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传很多次,会很麻烦。像这种情况,可以使用 provide 和 inject 解决这种问题,不论组件嵌套...

Gitlab+Jenkins通过钩子实现自动部署web项目,图文详细教程

扩展参考:Jenkins+Gitlab通过脚本自动部署回滚web项目至集群 一:基础环境介绍及准备1):Gitlab服务器:ubuntu 192.168.152.131 ---参考搭建:Linux安装gitlab,docker安装gitlab教程2):Jenkins服务器:ubunu 192.168...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...

js中数组filter方法的使用和实现

定义filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。语法var newArray = arr.filter(callback(element[, index[, selfArr]])[, thisArg])参数callback循环数组每个元素时调用的回调函数。回调函...

vue3使用vue-router路由(路由懒加载、路由传参)

vue-router 是 vue的一个插件库1. 专门用来实现一个SPA单页面应用2 .基于vue的项目基本都会用到此库SPA的理解1) 单页Web应用(single page web application,SPA)2) 整个应用只有一个完整的页面3) 点击页面中的链接不会刷新页面, 本身也不会向...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...