代码审计-SQL注入类+文件对比技术

admin 2024年1月15日13:00:18评论14 views字数 1196阅读3分59秒阅读模式

代码审计必备知识点:

1代码审计开始前准备:

环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。

2、代码审计前信息收集:

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。

3、代码审计挖掘漏洞根本:

可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。

4、代码审计展开计划:

审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。

代码审计两种方法

1.根据关键字找到敏感函数

代码审计-SQL注入类+文件对比技术

2.根据目标功能判断可能存在的漏洞

代码审计-SQL注入类+文件对比技术

案例:审计- Bluecms1.6源码系统存在sql注入漏洞-正则表达式

1.搭建好环境

代码审计-SQL注入类+文件对比技术

2.将源码导入到phpstorm代码审计工具中

代码审计-SQL注入类+文件对比技术

3.使用正则表达式全局搜索(Ctrl+Shift+F) sql注入关键字

正则表达式:(update|select|insert|delete|).*?where.*=

代码审计-SQL注入类+文件对比技术

4.根据正则表达式搜索到的信息成功找到一处sql查询语句,且语句中有变量可控

代码审计-SQL注入类+文件对比技术

5.查看getone函数的声明,发现是用来执行sql语句的。说明这段sql语句会被执行。

代码审计-SQL注入类+文件对比技术

6.通关追踪(Ctrl+F)可控变量,发现对其没有进行过滤。说明存在sql注入漏洞

代码审计-SQL注入类+文件对比技术

7.网站访问出现漏洞的文件路径并且传递参数,验证漏洞是否可用。测试后发现无回显

代码审计-SQL注入类+文件对比技术

8.getone函数声明处将sql语句输出,看看$ad_id变量是否和代码中表现的一样可控

代码审计-SQL注入类+文件对比技术

访问地址,传递参数为1。发现$ad_id变量成功接收了传递的参数值变为了1,变量可控

代码审计-SQL注入类+文件对比技术

9.确认了变量确实可控,因为无回显需要使用延时盲注或者布尔盲注,为了不浪费时间直接使用sqlmap进行检测

输入:python sqlmap.py -u 注入点地址 -p 注入点

成功检测出目标数据库信息——漏洞存在!!!

代码审计-SQL注入类+文件对比技术

输入:python sqlmap.py -u 注入点地址 -p 注入点 --dbs

成功检测出目标数据库名:

代码审计-SQL注入类+文件对比技术

案例:文件对比技术-确认漏洞产生位置

cnvd等漏洞信息共享平台经常会发布一些某某cms爆出了某某漏洞,但是就是不公开漏洞具体信息。

如下:梦想cms后台存在sql注入漏洞。只爆出了产生漏洞的版本信息,并没有漏洞具体产生位置。

代码审计-SQL注入类+文件对比技术

我们就可以使用存在漏洞的版本和更新的版本进行对比,因为更新的目的就是解决之前的问题。

查看cms官网更新情况,可以看到漏洞版本后又更新了一个版本,就可以下载漏洞版本和更新版本进行对比。

代码审计-SQL注入类+文件对比技术

使用文件对比工具Beyond_Compare进行对比

工具下载:https://www.beyondcomparepro.com/download

打开工具,选择文件夹对比,拖入两个版本的cms。有颜色标识的就是更新后作出过更改的文件

代码审计-SQL注入类+文件对比技术

打开有颜色表示的文件,可以看到更新后修改代码的情况。我们就可以根据代码的修改情况确认漏洞的产生位置。

代码审计-SQL注入类+文件对比技术

原文始发于微信公众号(格格巫和蓝精灵):代码审计-SQL注入类+文件对比技术

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月15日13:00:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   代码审计-SQL注入类+文件对比技术http://cn-sec.com/archives/2394646.html

发表评论

匿名网友 填写信息