当前位置: 首页 > news >正文

代码审计及示例

简介:

代码安全测试是从安全的角度对代码进行的安全测试评估。

结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷,在代码形成软件产品前将业务软件的安全风险降到最低。

方法:

人工审核:

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

静态分析:

通过一组全面规则、测试机制和方针在软件开发过程、测试中发现软件的安全缺陷。基于函数分析,比如正则表达式

审计思路:

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

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

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

漏洞产生原因:

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

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

漏洞挖掘:

sql注入关键字: selectinsertupdate$_GET $_POST$_REQUEST

上传漏洞关键字: $_FILES move_uploaded_file

执行漏洞关键字: shell_execexecpassthru systempopen

包含漏洞关键字: includeinclude_oncerequirerequire_once

变量覆盖关键字: $$

跨站漏洞关键字: echoprintprint_rvar_dumpvar_exprot

代码审计分析

SQL注入

XSearch工具对代码取关键字

对搜索到的文件验证下

SQL注入漏洞可以查询关键字select from、mysql_connect、mysql_query、mysql_fetch_row等,白盒审计时可以关注数据库查询方式还有update、insert、delete

二次注入搜索:urldecode或者rawurldecode

魔术符号GPC是on,会把单引号(')、双引号(")、反斜杠(\)和NULL加上反斜杠转义。搜索urldecode或者rawurldecode,验证二次转义。

二次转义过程如下:

原url代码:/1.php?id=1%2527

php默认第一次转义:/1.php?id=1%25       绿色的%25会被被PHP转义成%

urldecode转义:/1.php?id=1      在碰到函数就会把%25再次转义,变成’逗号

这种转义会有注入风险

会话认证漏洞

搜session,cookie是否加密

考虑session是不是固定的,有没有验证。可能存在session会话过滤攻击。

考虑cookie有没有校验,换成其他用户名,可能存在cookie欺骗漏洞。

apache搭建两个系统

xhcms:http://192.168.246.11/xhcms/

phpweb:http://192.168.246.11/phpweb/   要用低版本,使用5.2.17版本的php

审计工具

安装fortify破解版,其他审计工具:PMD、fidebugs、checkstyle、seay pgp代码审计工具

fortify扫描

构造啦一个语句验证漏洞,也可以BP抓包验证。同一个页面可能会有很多误报

seay pgp代码审计工具扫描xhcms

综合扫描

根据自己经验判断漏洞

登录后台

高危漏洞:不存在的用户可以登录后台

构造语句111'"><script>alert(111)</script>

留言昵称的漏洞

留言内容的漏铜

CSRF漏洞,delete没有做token验证

http://www.lryc.cn/news/207423.html

相关文章:

  • 【Kotlin精简】第6章 反射
  • 基于FPGA的电风扇控制器verilog,视频/代码
  • 【MySQL】区分:等值连接/自连接/自然连接/外连接 以及ON和Where使用
  • Windows环境下Apache安装部署说明及常见问题解决
  • Linux-安装docker-compose
  • 机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)
  • Java零基础入门-赋值运算符
  • xshell+xming显示jmeter的gui页面
  • el-tree业务
  • 警惕Mallox勒索病毒的最新变种malloxx,您需要知道的预防和恢复方法。
  • linux中断下文之tasklet(中断二)
  • Mysql事务+redo日志+锁分类+隔离级别+mvcc
  • Kafka-Java四:Spring配置Kafka消费者提交Offset的策略
  • Python 训练集、测试集以及验证集切分方法:sklearn及手动切分
  • 数据结构,及分类(存储分类、逻辑分类)介绍
  • Powershell脚本自动备份dhcp数据库
  • 第十六章总结:反射和注解
  • mysql 切割字符串函数
  • 汽车发动机电机右盖设计
  • ETHERNET/IP从站转CANOPEN主站连接AB系统的配置方法
  • 人工智能和机器学习:走向智能未来的关键
  • openGauss本地Centos7.6单机安装和简单应用
  • LeetCode--1 两数之和
  • Hafnium安全分区管理器和示例参考软件栈
  • Python解读市场趋势:LSTM 和 GRU 在预测 Google 股价方面的探索
  • vue源码分析(二)——vue的入口发生了什么
  • 系统架构师论文总结【持续更新】
  • STM32-LCD中英文显示及应用
  • 13.4web自动化测试(Selenium3+Java)
  • P1966 [NOIP2013 提高组] 火柴排队