悟空企业级WEB代码安全审计架构介绍

2016-11-29 20:13:00
admin
原创
524
摘要:本文介绍企业级的WEB代码安全审计架构,包括环境搭建、审计思路、审计工具的使用以及功能安全的设计原则。

代码审计是保障程序健壮性的重要环节,在我们公司也是技术部门学习成长最重要的环节,我们绝大多数的技术培训都是在做代码审计过程中完成的。代码审计包括许多方面的审计,业务逻辑审计、代码风格审计、代码结构审计、代码安全审计、漏洞审计等等,代码安全审计是达到企业级应用的关键环节,可以说没有做代码安全审计就不能达到企业级的应用程序。本文主要介绍我们的代码安全的一些审计思路、方法以及工具的使用。


开始之前先来个养眼的美女,轻松一下张钧甯,文艺范美女的典范!

let us go-----这分割线-------------------------------------------------------------------------------------------------------------------------------------------->


首先,我们那看一下下方的思维导图。


思维导图是个很好的东西,我在思考各种事情、写复杂程序等等各种场景都会用上这个东西,当然代码审计的时候也会用到,因为它能帮我很快熟悉框架,并且记录可能出现安全问题的地方。如下图所示

这是在审计禅道时弄的一个简单思维导图,禅道这套系统一共审计出来了几十个漏洞利用点,包括免登录注入和getshell。


可以看到我的这个思维导图,里面包括以下因素:




1、程序执行过程(URL怎么解析、首先调用哪些文件等等)


2、重要配置文件


3、模块解释


4、出现问题的点(用红旗标记)


5、代码备注




这样一来我们对程序的框架就会一览无余,思路自然清晰。




还有一个问题是关于:怎么挖掘免登陆的漏洞?


程序自然会检测权限,就像我这个思维导图里面写的禅道一样,common模块的isopenmethod()函数检查权限,哪些模块可以不用登陆或者低权限可访问


public function isOpenMethod($module, $method)

{

if($module == ‘user’ and strpos(‘login|logout|deny|reset’, $method) !== false) return true;

if($module == ‘api’ and $method == ‘getsessionid’) return true;

if($module == ‘misc’ and $method == ‘ping’) return true;

if($module == ‘misc’ and $method == ‘checktable’) return true;

if($module == ‘misc’ and $method == ‘qrcode’) return true;

if($module == ‘misc’ and $method == ‘about’) return true;

if($module == ‘misc’ and $method == ‘checkupdate’) return true;

if($module == ‘misc’ and $method == ‘changelog’) return true;

if($module == ‘sso’ and $method == ‘login’) return true;

if($module == ‘sso’ and $method == ‘logout’) return true;

if($module == ‘sso’ and $method == ‘bind’) return true;

if($module == ‘sso’ and $method == ‘gettodolist’) return true;

if($module == ‘block’ and $method == ‘main’) return true;


if($this->loadModel(‘user’)->isLogon() or ($this->app->company->guest and $this->app->user->account == ‘guest’))

{

if(stripos($method, ‘ajax’) !== false) return true;

if(stripos($method, ‘downnotify’) !== false) return true;

if($module == ‘tutorial’) return true;

if($module == ‘block’) return true;

if($module == ‘product’ and $method == ‘showerrornone’) return true;

}

return false;

}


从代码中可以看到,主要是’user’ 、’api’ 、’misc’ 、’sso’ 以及’block’ 模块的部分函数无需登陆就可以访问,$module 代表模块,$method代表函数,那我们就可以把这些函数都看一遍,看是否存在可利用的漏洞。


文章分类
联系我们
联系人: 李金东
电话: 18677062224
Email: 20610400@qq.com
QQ: 20610400
微信: huidejin
微博: wkidt
地址: 南宁市长湖路长湖景苑1栋1602