0x01 前言
在写这篇文章之前,说说代码审计的思路吧,我们要学好代码审计必须要熟悉代码的审计思路,首先了解网站是用什么框架搭建的,熟悉网站的各个功能点进行黑白盒结合的方式来测试,也可以借助代码审计工具来分析,最主要的是全文通读代码,常见的代码审计有以下几种,代码审计需要细心,发现漏洞点
1.根据敏感关键字回溯参数传递过程;
2.查找可控变量,正向追踪变量传递过程;
3.寻找敏感功能点,通读功能点代码;
4.直接通读全文代码;
5.敏感函数回溯参数过程。
有什么不足之处欢迎大佬纠正
0x02整体概况
1.代码审计工具
2.根据功能点代码审计
3.查找可控变开量代码审计
4.根据敏感关键字回溯参数代码审计
0x03详细过程
1.先看网站具体有什么功能点,从功能点进行代码审计先黑盒测试后台管理页面
2.发现返回sql语句存在sql注入
白盒测试分析源代码
找到admin下的index。Php文件,发现了gte请求传了一个参数为r,和文件包含路径,说明后台登录url请求r参数是某个php文件
有在admin文件fies目录中审计代码发现发现这个文件没有,试着在inc目录下审计
找到了checklogin.php文件发现这段代码有问题,判断user为空 重定向到index.Php
发现登录页面login.Php文件,从分析代码发现存在盲注,可以确定发现登录功能界面存在sql注入
查找可控变量,正向追踪变量传递过程,查找$_POST['user']正向追踪分析
打开这个路径发现http://www.xxxxxx.com/admin/index.php?r=manageinfo页面也存在sql注入,分析 manageinfo.php
可以发现有三处,其中第二处,是登录相关的,第三处是安装相关的发现没有做过滤的sql语句
通读全文代码知道文件目录结构,可以看到网站根目录下有一个 index.php,后台目录下有一个 index.ph读代码从入口开始进行分析分析网站入口代码
可以看出 index.php 代码中有一个变量$action,代码逻辑如下:
接收 get 请求中的 r 变量,赋值给$file 变量
判断$file 变量,为空赋值 index,不为空进行下一步
使用 include 包含 files 文件中的文件
可以看到,这个地方包含的文件名是我们自己指定的,即这个地方变量可控,而且没有过滤,
所以存在文件包含漏洞
测试 payload: http://www.xionghai.com/index.php?r=../../123
根据敏感关键字回溯参数代码审计,根据 update关键字回溯参数分析代码,先用 Seay 进行扫描,使用 Seay 源代码审计系统的自动审计工具,然后去源代码查看 发现没有过滤
0x03总结
1:文件上传功能
常见点:文章编辑、资料编辑、头像上传、附件上传
常见漏洞:文件上传漏洞、SQL注入漏洞、XSS漏洞
2:文件管理功能
常见点:URL中有文件路径、代码中有文件相关函数
常见漏洞:任意文件读取、任意文件删除、任意文件下载、xss漏洞
3:登录认证功能
常见点:登录、密码找回 、 登录后对用户资料的操作
常见漏洞:SQL注入、越权漏洞
4:留言;评论回复;文章发表;资料设置
常见漏洞:XSS
5:搜索
常见漏洞:SQL注入、XSS
6:模板功能
常见漏洞:写入后门
7:数据库备份功能
常见漏洞:文件删除、文件下载