seay代码审计工具_代码审计安全实践

第一次写文章,希望大牛们轻喷1b0fc7d5aaa19d675933a99f46d62cc1.png

一、代码审计安全

代码编写安全:

程序的两大根本:变量与函数

漏洞形成的条件:可以控制的变量“一切输入都是有害的 ”

变量到达有利用价值的函数(危险函数)“一切进入函数的变量是有害的”

漏洞的利用效果取决于最终函数的功能,变量进入什么样的函数就导致什么样的效果。

变量安全:

秉承一个原则  “一切输入都是有害的”

预定义变量[常规外部提交的变量]:

除了$_GET,$_POST,$_Cookie的提交之外,还来源于$_SERVER,$_ENV, $_SESSION 等register_globals = on [未初始化的变量] 当On的时候,传递过来的值会被直接的注册为全局变量直接使用,而Off的时候,我们需要到特定的数组里去得到它,PHP » 4.20 默认为off

变量覆盖[未初始化及覆盖前定义的变量]:

 如:$$使用不当、遍历初始化变量、 extract() 、parse_str()等

变量的传递与存储[中转的变量]:

存储于数据库、文件[如配置、缓存文件等

函数安全:

“什么样的函数导致什么样的漏洞”

文件包含包含漏洞:require、include、require_once、include_once

代码执行执行任意代码漏洞:eval()、assert()、preg_replace()、create_function()

命令执行执行任意命令漏洞:exec()、passthru()、proc_open()、shell_exec()、system()、popen()

文件系统操作文件(目录)读写等漏洞:file_get_contents、file_put_contents、fopen、readfile

数据库操作SQL注入漏洞:select from、mysql_connect、mysql_query、mysql_fetch_row 数据显示 XSS漏洞:print、print_r、echo、print、sprintf、die、Var_dump、var_export

二、代码审计和漏洞验证:

环境:

       PHP.ASP等语言环境

       Apache.Tomcat.Ngin等中间件

       Mysql.Oracle等数据库

工具:

       Notepad++、Sublime等代码编辑器

       Seay.RIPS等代码审计工具

       Burp等漏洞验证工具

三、常见漏洞挖掘与防范:

根据功能点定向审计,例如在文件上传功能模块、文件管理功能模块、登录功能等模块进行漏洞挖掘验证。

通读全部代码

四、安全编程规范:

1.SQL注入防护

      (1)采用预编译,在Java Web开发一般在采用预处理,在sql语句中放入?占位符,然后通过后面的传参传递参数,可在一定程度上防止SQL注入。

      (2)过滤函数和类, 使用pdo的prepare方式来处理sql查询,但是当PHP版本<5.3.6之前还是存在宽字节SQL注人漏洞,原因在于这样的查询方式是使用了PHP本地模拟prepare,再把完整的SQL语句发送给MySQL服务器,并且有使用setnames'gbk'语句,所以会有PHP和MySQL编码不一致的原因导致SQL注人

      (3) GPC/RUTIME魔术引号

           通常数据污染有两种方式:

           1、是应用被动接收参数,类似于GET、POST等;

           2、是主动获取参数,类似于读取远程页面或者文件内容等。

所以防止SQL注入的方法就是要守住这两条路

→ magic_ quotes_ gpc 负责对GET、POST、COOKIE的值进行过滤。

→ magic_ quotes_ runtime 对从数据库或者文件中获取的数据进行过滤。

2. 反引号命令执行

反引号(`)也可以执行命令,它的写法很简单,实际上反引号(`)执行命令是调用的shell_exec()函数。

 002f1fb1d702c9830ecc7e607ce0eb36.png

这段代码正常执行的情况下是会输出当前用户名的,而我们在php.ini里面吧PHP安全模式打开一下,再重启下WebServer从新加载PHP配置文件,再执行这段代码的时候,我们会看到下面这个提示:

Waring:shell_exec() [function.shell_exec]: Cannot execute using backquotes inSafe Mode in D:\www\test\1.php on line 2
这个提示说明反引号执行命令的方式是使用的shell_exec()函数。  3. 命令执行漏洞防范规范: (1) 命令防注入函数: PHP在SQL防注入上有addslashes()和mysql_[real_]escape_string()等函数过滤SQL语句,输人一 个string类型的参数,为要过滤的命令,返回过滤后的sting类型的命令,过滤后的string类型的命令,过滤的字符为
’&’、’;’、’|’、’*’、’?’、’~’、’<’、’>’、’^’、’(’、’)’、’[’、’]’、’{’、’}’、’$’、’\’、’\x0A’、’\xFF’、’%’、单引号和双引号仅仅在不成对的时候被转义。

(2) 参数白名单: 参数白名单方式在大多数由于参数过滤不严产生的漏洞中都很好用是一种通用修复方法,我们之前已经讲过,可以在代码中或者配置文件中限定某些参数,在使用的时候匹配一下这个参数在不在这个白名单列表中,如果不在则直接显示错误提示即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Seay代码审计工具是一款针对软件代码进行漏洞扫描和安全评估的工具。它能够帮助开发人员和安全人员发现代码中的潜在风险和漏洞,并提供针对性的建议和修复措施。 Seay代码审计工具的提取结果包括以下几个方面: 1. 代码静态分析:Seay会对代码进行静态分析,发现其中存在的潜在安全漏洞,比如SQL注入、跨站脚本攻击等。通过对代码的全面扫描,它能够识别出可能存在的安全风险点,并给出相应的建议和修复方案。 2. 敏感信息泄露检测:Seay能够检测代码中是否存在敏感信息泄露的风险,例如包含硬编码的密钥、密码、API密钥等。这有助于开发人员及时发现并修复潜在的信息泄露问题,提高系统安全性。 3. 安全最佳实践检查:Seay会根据相关的安全最佳实践标准,检查代码中是否存在与安全最佳实践相违背的问题。这包括代码中是否存在不安全的函数调用、缺乏输入验证、错误的权限控制等。通过检查代码的合规性,可以确保系统按照安全标准来进行开发。 4. 弱密码检测:Seay能够检测代码中使用的密码强度是否足够,包括密码长度、字符组合、是否存在常见弱密码等。这有助于确保系统的用户密码的安全性。 总之,Seay代码审计工具通过全面扫描和分析软件代码,能够提供开发人员和安全人员关于代码安全性的详细报告,有助于及时发现和修复潜在的安全漏洞,提升系统安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值