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

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

ruisui884个月前 (02-04)技术分析21

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

关键词查询

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
分享给朋友:

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

VIM配置整理

一、基本配色set number set showcmd set incsearch set expandtab set showcmd set history=400 set autoread set ffs=unix,mac,dos set hlsearch set shiftwidth=2 s...

vue v-html动态生成的html怎么加样式/事件

1、动态生成的html,样式不生效//html 布局 <view v-html="html"> {{html}} </view> //动态生成的元素 <view class="btngo" @tap="handleLink...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...

Vue进阶(幺叁捌):vue路由传参的几种基本方式

1、动态路由(页面刷新数据不丢失)methods:{ insurance(id) { //直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/particulars/${id}`,...

VUE-router

七.Vue-router1、什么是vue-routervue-router是vue.js官方路由管理器。vue的单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统页面切换是用超链接a标签进行切换。但vue里是用路由,因为我们用Vue做的都是单页应用,就相当于只有一个主的i...

基于 vue3.0 小程序拖拽定制

今天给大家分享一个使用Vue3编写的自由DIY小程序页面。mbDIY 一款基于vue3.x构建的可拖拽定制小程序模板。支持新建页面、自由拖拽模块、复制/移动、自定义模块样式等功能。整个项目分为页面、模块、控件三大部分。模块里面的组件可拖拽至主面板区,编辑后保存即可预览效果。快速安装# 克隆项目 gi...