漏洞
漏洞产生条件: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.代码挖掘
注入漏洞: