代码审计必备知识点:
1、代码审计开始前准备:
环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。
2、代码审计前信息收集:
审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。
3、代码审计挖掘漏洞根本:
可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。
4、代码审计展开计划:
审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。
代码审计两种方法:
功能点或关键字分析可能存在的漏洞
-抓包或搜索关键字找到代码出处及对应文件。
-追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。
-常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。
-框架 MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。
1.搜索关键字找敏感函数
2.根据目标功能点判断可能存在的漏洞
常见漏洞关键字:
SQL注入:
select insert update mysql_query mysqli等
文件上传:
$_FILES,type="file",上传,move_uploaded_file()等
XSS跨站:
print print_r echo sprintf die var_dump var_export等
文件包含:
include include_once require require_once等
代码执行:
eval assert preg_replace call_user_func call_user_func_array等
命令执行:
system exec shell_exec ` ` passthru pcntl_exec popen proc_open等
变量覆盖:
extract() parse_str() import_request_variables() $$ 等
反序列化:
serialize() unserialize() __construct __destruct等
文件读取:
fopen file_get_contents fread fgets fgetss file fpassthru parse_ini_file readfile等
文件删除:
unlink() remove()等
文件下载:
download() download_file()等
通用关键字:
$_GET,$_POST,$_REQUEST,$_FILES,$_SERVER等
Thinkphp框架介绍
使用thinkphp框架的源码审计思路:
1.使用源码查看工具打开源码,全局搜索thinkphp确认源码是否使用thinkphp框架
2.源码如果没有按照thinkphp框架的代码规则来写,则不会触发thinkphp框架的过滤规则。按照常规思路测试即可
3.源码如果是按照thinkphp框架的代码规则来写的,则全局搜索THINK_VERSION确认框架版本信息,根据版本漏洞来测试。否则相当于在测试框架的0day。
入口文件查找:
使用phpstorm全局搜索APP_PATH确认入口文件
开启Thinkphp框架的调试开关:
打开入口文件指定的应用目录,找到config.php配置文件将app_debug和app_trace的状态更改为true。
在找到database.php数据库配置文件将debug的状态更改为true。
打开网站,右下角就会生成一个调试按钮:
打开即可查看调试信息:
案例演示:Thinkphp框架访问规则演示
ThinkPHP 5.0 在没有启用路由的情况下典型的URL访问规则是:http://域名/index.php(或其他应用入口文件)/模块/控制器/操作/参数名/参数值
访问方法:
规则其实就是:入口文件/目录/类名/方法名
访问方法并且传递参数:
访问规则其实就是:入口文件/目录/类名/方法名/参数名/参数值