漏洞

漏洞产生条件:1.可控变量 2.函数

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

漏洞的利用效果取决于最终函数的功能

 

漏洞的利用效果取决于最终函数的功能

代码审计前的准备

A.得到代码       

         a.对于开源的应用程序:

                  *得到程序的版本信息,越详细越好。       

                  *具体应用程序版本扫描  

         b.对于不开源的应用程序:    

                  *通过黑盒扫描得到备用文件     

                  *通过黑盒扫描利用sql注射暴代码[loadfile()]        

                  *通过黑盒扫描利用容易文件下载漏洞

                  *上一次渗透测试打包下载的代码

B.得到平台信息   

         php版本及php.ini一些基本设置、OS信息、Web服务信息、数据库

 

准备工作:

1.搭建环境

2.审计辅助工具

2.1 编辑软件

Notepad++

Editplus

Zend stdio

2.2审计工具

RIPS

Fortify sca

搜索工具(光速搜索,Tommsearch文本遍历工具)

2.3 调试软件

Burpsuite

正则表达式工具

Sql执行工具

加解密 编码转码工具

 

代码审计思路:

1.变量函数追查

2.全文审计

3.点对点

 

挖掘流程分析

漏洞产生的关键字:

注入,上传,执行,包含,覆盖,跨站等

sql注入关键字:select insert update $_GET $_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

 

防护函数:

1.脚本语言自带的函数

注入漏洞防护函数:addslashes,is_numeric,is_int,is_integer,htmlspecialchars,mysql_real_escape_string,mysql_escape_string

上传漏洞防护函数:substr strrpos $_FILES数组参数

2.开发者自写的函数

正则表达式

 

实验:

熊海个人网站 cmsV1.0

Php+mysql

 

1.常规工具扫描

2.代码挖掘

 

注入漏洞:

posted @ 2016-04-16 22:39  沐风先生  阅读(254)  评论(0编辑  收藏  举报