老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

代码审计及安全测试方法有什么?老男孩网络安全培训

老男孩IT教育

常见问题

2020年12月9日 14:11

网络安全学习中,源代码审计是较为重要的一项。那么源代码审计有哪些分类?审计方法有什么?代码安全测试方法有哪些?看老男孩教育网络安全培训怎么说。

  网络安全学习中,源代码审计是较为重要的一项。那么源代码审计有哪些分类?审计方法有什么?代码安全测试方法有哪些?看老男孩教育网络安全培训怎么说。

  源代码审计分为白盒、黑盒、灰盒

  白盒:拥有源代码进行审计

  黑盒:不知道源代码的情况下进行渗透审计

  灰盒:介于黑盒与白盒之间

  审计方法总结

  主要代码审计方法是跟踪用户输入数据和敏感函数参数回溯:

  跟踪用户的输入数据,判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑

  可以是一个函数,或者是条小小的条件判断语句。

  敏感函数参数回溯,根据敏感函数,逆向追踪参数传递的过程。这个方法是最高效,最常用

  的方法。大多数漏洞的产生是因为函数的使用不当导致的,只要找到这些函数,就能够快速挖掘想要的漏洞。

  代码安全测试方法

  代码审核采用人工审核和静态分析工具辅助的方式进行。

  人工审核:既能解决内部问题也能解决外部问题。这也是目前最有效率的解决方案,并且在理论上手工代码审核是非常有效的,但人工审核的效率不高,所以我们会采用自动化分析工具辅助人工的方式来提高审核效率。

  静态分析工具:通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。

  1,fortify

  2,seay源代码审计

  人工代码审计的通用思路

  1、通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。

  2、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。

  3、继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。

  漏洞产生的原因

  1、变量控制不严(一切输入都是有害)。

  2、变量到达有利用价值的函数(一切进入函数的变量是有害的),漏洞的利用效果取决于最终函数的功能。

  以下是基于关键词审计技巧总结:

  在搜索时要注意是否为整个单词,以及小写敏感这些设置

  php审计

  命令执行漏洞

  system()、exec()、shell_exec()、passthru()、pcntl_exec()、popen()、proc_open()

  代码执行漏洞

  eval()、assert()、preg_replace()、call_user_func()、call_user_func_array()、array_map()

  xss:常用的输出函数列表如下:

  print、print_r、echo、printf、sprintf、die、var_dump、var_export,

  文件读取函数列表如下:

  file_get_contents()、highlight_file()、fopen()、readfile()、fread()、fgetss()、fgets()、parse_ini_file()、show_source()、file()

  sql注入关键字:

  select、insert、update、、​POST、$REQUEST、

  上传漏洞关键字:

  $_FILES 、move_uploaded_file

  执行漏洞关键字:

  shell_exec、exec、passthru

  system、popen

  包含漏洞关键字:

  include、include_once、require、require_once

  变量覆盖关键字: $$

  跨站漏洞关键字:

  echo、print、print_r、var_dump、var_exprot,insert

网络安全培训学习,源代码审计都有哪些知识点

  java审计

  密码硬编码、密码明文存储:

  password 、pass、jdbc

  XSS:

  getParamter、<%=、param.

  任意文件下载:

  download 、fileName 、filePath、write、getFile、getWriter

  任意文件删除:

  Delete、deleteFile、fileName 、filePath

  文件上传:

  Upload、write、fileName 、filePath

  命令注入:

  getRuntime、exec、cmd、shell

  缓冲区溢出:

  strcpy,strcat,scanf,memcpy,memmove,memeccpy, Getc(),fgetc(),getchar;read,printf

  XML 注入:

  DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser

  SAXReader 、XMLReader

  SAXSource 、TransformerFactory 、SAXTransformerFactory 、

  SchemaFactory

  反序列化漏洞:

  ObjectInputStream.readObject

  、ObjectInputStream.readUnshared、XMLDecoder.readObject

  Yaml.load 、 XStream.fromXML 、 ObjectMapper.readValue 、

  JSON.parseObject

  url 跳转:

  sendRedirect、setHeader、forward

  不安全组件暴露:

  activity 、 Broadcast Receiver 、 Content Provider 、 Service 、

  inter-filter

  日志记录敏感信息:

  log log.info logger.info

  代码执行:

  eval、system、exec

  工具局限性:

  工具本身存在一定量的误报或者漏报。

  扫描结果需要大量人工确定甄别。

  如用多种语言开发的软件,则需单独分析。

  使用工具缺乏规范化的编码规范。

  不能自动收集常见的代码安全问题。

  以上便是源代码审计相关的学习内容分享。更多网络安全学习,推荐关注老男孩教育网络安全培训课程。老男孩网络安全课程,全程面授教学,理论与实战相结合,定期考试检测学习成果,查漏补缺,帮助学员高效学习掌握网络安全技能。点击链接查看网络安全视频:https://www.oldboyedu.com/video_library.html

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。