查看原文
其他

代码审计所需工具及使用

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:16004488


微信公众号:计算机与网络安全

ID:Computer-network

代码审计往期内容回顾

代码审计(一)

代码审计(二)

在代码审计和开发中,我们都需要一些代码编辑器来编辑代码,或者调试代码,也需要一些工具来验证漏洞是否存在。而各个编辑器也有所差异,所谓宝刀配英雄,使用一款好的编辑器能帮助你所向披靡,更简单轻松地写代码。而对于审计师来说;代码审计软件也是如此,一款好的代码审计工具可以使审计师在短时间内快速发现代码问题。本文详细介绍几款常用的代码编辑器和代码审计软件以及一些常用的漏洞验证辅助工具。


一、代码编辑器


不管是做开发还是代码审计,一款顺手的代码编辑器必不可少,代码编辑器从轻量级到功能复杂强大的完备型,从免费到商业,都有很多款供我们选择,我们可以根据需要选择最适合的一款,常用的轻量级代码编辑器有Nodepad++、Editplus、UltraEdit、PSPad、Vim、Gedit,等等,这些都是都是通用型文本编辑器,支持多种编程语言代码高亮,优点是操作简单,启动快并且对文本操作很方便。常用的完备型PHP开发软件也不少,这类编辑器主要的优点是功能全,对代码调试、代码提示等都支持得比较好,使我们在开发的时候bug更少,开发效率更高,常用的有Zend Studio、PhpStorm、PhpDesigner以及NetBeans等。


如果你用编辑器来做开发,并且代码量比较大,建议你使用Zend Studio。如果用来做代码审计或者少量代码的开发,建议使用Nodepad++这类轻量级文本编辑器。

(一)Notepad++


Notepad++是一套非常有特色的开源纯文字编辑器(许可证:GPL),运行于Windows系统,有完整的中文接口及支持多国语言撰写的功能(UTF8技术)。它的功能比Windows中的Notepad(记事本)强大,除了可以用来编辑一般的纯文字文件之外,也十分适合轻量开发的编辑器。Notepad++不仅有语法高亮显示功能,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。


Notepad++可以安装免费使用。支持如下语言的代码高亮显示:C、C++、Java、C#、XML、HTML、PHP、ASP、AutoIt、DOS批处理、CSS、ActionScript、Fortran、Gui4Cli、Haskell、JSP、Lisp、Lua、Matlab、NSIS、Objective-C、Pascal、Python、JavaScript等。


Notepad++拥有非常多强大的功能,特别是对文本操作非常灵活,这是笔者用得最多的一个文本编辑器,经常用来做一些有特定格式的文本批量替换、搜索、去重,等等。当然,它的强大不止如此。下面简单介绍下它的核心功能:


1)内置支持多达27种语法高亮显示(包括各种常见的源代码、脚本,能够很好地支持.nfo文件查看),还支持自定义语言。

2)可自动检测文件类型,根据关键字显示节点,节点可自由折叠/展开,还可显示缩进引导线,代码显示得很有层次感。

3)可打开双窗口,在分窗口中又可打开多个子窗口,显示比例。

4)提供了一些有用工具,如邻行互换位置、宏功能等。

5)可显示选中的文本的字节数(而不是一般编辑器所显示的字数,这在某些情况下很方便,比如软件本地化)。

6)正则匹配字符串及批量替换,也支持批量文件操作。

7)强大的插件机制,扩展了编辑能力,如Zen Coding。


我们可以在官网Notepad++官网(notepad-plus-plus.org)下载最新版。主界面如下图所示。


(二)UltraEdit


UltraEdit(官网www.ultraedit.com)是一款功能强大的文本编辑器,不过它不是开源软件,官网售价79.95美元,可以完美运行在Windows、Linux以及Mac系统上。


这款编辑器不仅可以编辑文本,还支持十六进制查看以及编辑。可以直接在上面修改exe等文件,如下图所示。


该编辑器支持将近二十种编程语言的语法高亮显示,可同时编辑多个文件,支持打开超过4GB以上的文件,支持多种编码转换、排序去重。通过配置使用的脚本运行程序路径,比如php.exe的路径,就可以在使用UltraEdit编辑PHP代码的时候直接执行代码。再结合它的代码补全功能,它也算得上一款不错的代码编辑器。要实现这个功能,首先在“高级→工具栏配置”中配置一些执行环境参数,在“命令行”的位置填入你的PHP文件路径,在“菜单项目名称”上写你想填的菜单栏名称,这里写的是php.exe,在“工作目录”中写上你的PHP exe路径,然后点击“确定”按钮,即可新建一个文件。在“高级”菜单里面点一下添加的php.exe(菜单栏名称)即可执行代码,如下图所示。


另外一个比较好的功能是文件对比。这个功能也是经常会用到的,特别是我们在分析开源程序发布的官方补丁时,比如Phpcms某天发布了一个代码执行漏洞修补补丁,那么我们就可以在官网下载补丁文件,然后利用UltraEdit的文件对比功能补补丁,那么我们就可以在官网下载补丁文件,然后利用UltraEdit的文件对比功能来快速找到修改了哪段代码,修改的部分是不是成功修补了这个漏洞,或者未公开的漏洞。也可以根据这个方法快速找到漏洞在哪里。


这个功能可以在菜单栏“文件→比较文件”中找到,然后选择要对比的两个以上文件,勾选“比较选项”里面以忽略开头的所有选项,点击“比较”按钮即可,如下图所示。



如果比较的文件有不同的地方,它会用红色标出,如下图所示。



UltraEdit被公认为程序员必备的编辑器,是能够满足你一切编辑需要的编辑器。


(三)Zend Studio


Zend Studio与PHP出自同一家公司,也可以说Zend Studio是PHP官方专门开发出来用来编写PHP代码的代码编辑器。Zend Studio是目前用户量最大的PHP开发工具,也是屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法高亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能,可以完美运行在目前主流的Windows、Linux以及Mac操作系统上。官网是http://www.zend.com/en/products/studio。


Zend Studio 的界面截图如下图所示。


Zend Studio非常人性化,可以让我们不用去记那么多函数,等你经常用的编程语言超过了6种以上,你就会深有感触。代码提示功能如下图所示。


另外Zend Studio在代码调试方面也非常强大,支持多种调试模式,利用它的调试功能,可以让我们非常快地发现bug位置,监控数据传递过程和函数运行情况,如下图所示。


二、代码审计工具


代码审计工具是一类辅助我们做白盒测试的程序,它可以分很多类,例如安全性审计以及代码规范性审计,等等。当然,也可以按它能审计的编程语言分类,目前商业性的审计软件大多支持多种编程语言,也有个人或团队开发的免费开源审计软件,像笔者的“Seay源代码审计系统”就是开源程序。使用一款好的代码审计软件可以极大地降低审计成本,可以帮助审计师快速发现问题所在,同时也能降低审计门槛,但也不能过分依赖审计软件。目前常用的代码安全审计软件还有Fortify SCA、RIPS、FindBugs、Codescan等。下面介绍几款常用代码安全审计工具。


(一)Seay 源代码审计系统


这是基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞,基本上覆盖常见PHP漏洞。另外,在功能上,它支持一键审计、代码调试、函数定位、插件扩展、自定义规则配置、代码高亮、编码调试转换、数据库执行监控等数十项强大功能。主界面如下图所示。


Seay源代码审计系统主要特点如下:


1)一键自动化白盒审计,新建项目后,在菜单栏中打开“自动审计”即可看到自动审计界面。点击“开始”按钮即可开始自动化审计。当发现可疑漏洞后,则会在下方列表框显示漏洞信息,双击漏洞项即可打开文件跳转到漏洞代码行并高亮显示漏洞代码行,如下图所示。


2)代码调试,代码调试功能极大地方便了审计师在审计过程中测试代码。可以在编辑器中选中代码,然后点击右键选择“调试选中”即可将代码在调试界面打开,如下图所示。



3)正则编码,Seay源代码审计系统集成了实时正则调试功能,考虑到特殊字符无法直接在编辑框进行输入,在实时正则调试功能中还支持对字符串实时解码后调试。另外,支持MD5、URl、Base64、Hex、ASCII、Unicode等多种编码解码转换功能,如下图所示。



4)自定义插件及规则,Seay源代码审计系统支持插件扩展,并且插件的开发非常简单,只需要将插件的dll文件放入到安装目录下的plugins文件夹内即可自动加载插件。目前自带插件包括黑盒+白盒的信息泄露审计以及MySQL数据库执行监控。


除了上述功能外,它还支持自定义审计规则,在规则配置界面中即可添加或修改以及禁用、删除规则,还可针对审计过程做很多审计习惯优化,使得程序简单容易上手。


(二)Fortify SCA


Fortify SCA是由惠普研发的一款商业软件产品,针对源代码进行专业的白盒安全审计,当然,它是收费的,而且这种商业软件一般都价格不菲。它有Windows、Linux、UNIX以及Mac版本,通过内置的五大主要分析引擎(数据流、控制流、语义、结构以及配置)对应用软件的源代码进行静态分析。关于这五大分析引擎的介绍如下表所示。


五大分析引擎概述

Fortify SCA是目前支持最多编程语言的审计软件。它支持的编程语言如下所示:


ASP.NET

VB6

VB.NET

Java

C#.NET

JSP

ASP

JavaScript

VBScript

HTML

Action Script

XML

Objective-C

C/C++

ColdFusion 5.0

PHP

Python

T-SQL(MSSQL)

COBOL

PL/SQL(Oracle)

SAP-ABAP


分析的过程中与它特有的软件安全漏洞规则集进行全面的匹配、搜索,在最终的漏洞结果中,包括详细的漏洞信息,以及漏洞相关的安全知识说明和修复意见。


(三)RIPS


RIPS是一款基于PHP开发的针对PHP代码安全审计的软件。另外,它也是一款开源软件,由国外安全研究员Johannes Dahse开发,它最大的亮点在于调用了PHP内置解析器接口token_get_all,并且使用Parser做了语法分析,实现了跨文件的变量及函数追踪,扫描结果中非常直观地展示了漏洞形成及变量传递过程,误报率非常低。RIPS能够发现SQL注入、XSS跨站、文件包含、代码执行、文件读取等多种漏洞,支持多种样式的代码高亮。比较有意思的是,它还支持自动生成漏洞利用。


下图为RIPS截图。


RIPS的使用非常简单,只需在主界面填入我们要扫描的路径,其余配置可根据自己的需要设置。完成设置后点击scan按钮即可开始自动审计。扫描结束后,程序会显示漏洞数量、漏洞比例等信息。查看漏洞详情时,只需点击提示漏洞处的“-”即可显示漏洞源代码和变量过程,如下图所示。



通过RIPS发现ecshop文件包含漏洞,下图所示为RIPS漏洞扫描详细结果。



代码查看也非常方便,只需要点击“review code”即可跳转到漏洞代码处,将鼠标指针悬浮在变量上,同文件的变量会高亮显示,如下图所示。


三、漏洞验证工具


不管是借助代码审计工具还是读PHP文件发现的漏洞,我们都需要验证漏洞是否真实可用。这就需要借助一些工具来帮助我们快速测试漏洞,或者在某些情况下,比如部分代码不可读时,我们可以在不继续往下读代码的情况下测试漏洞,做基于模糊测试的漏洞验证。主要的辅助工具分为数据包请求工具类、暴力枚举类、编码转换及加解密类。当然,还有一些正则调试和SQL执行监控等软件。下面只列举一些常用的,根据不同的漏洞和环境需要搭配不同的工具来测试。


(一)Burp Suite


Burp Suite是一款基于Java语言开发的安全测试工具,使用它需要安装Java运行环境。这款软件只有不到10MB的大小,但是其强大的功能受到几乎所有安全人员的青睐。Burp Suite主要分为Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder和Comparer几个大模块。下面简单介绍下各个模块:


Proxy(代理)Burp Suite的代理抓包功能是这款软件的核心功能,当然也是使用最多的功能。使用这个代理,可以截获并修改从客户端到Web服务器的HTTP/HTTPS数据包。


Spider(蜘蛛)用来分析网站目录结构,爬行速度非常不错,爬行结果会显示在Target模块中,支持自定义登录表单,让它自动提交数据包进行登录验证。


Scanner(扫描器)用于发现Web程序漏洞,它能扫描出SQL注入、XSS跨站、文件包含、HTTP头注入、源码泄露等多种漏洞。


Intruder(入侵)用来进行暴力破解和模糊测试。它最强大的地方在于高度兼容的自定义测试用例,通过Proxy功能抓取的数据包可以直接发送到Intruder,设置好测试参数和字典、线程等,即可开始漏洞测试。


Repeater(中继器)用于数据修改测试,通常在测试一些像支付等逻辑漏洞的时候经常需要用到它,只需要设置好代理拦截数据包,然后发送到Repeater模块即可对数据随意修改之后再发送。


Sequencer(会话)用于统计、分析会话中随机字符串的出现概率,从而分析Session、Token等存在的安全风险。


Decoder(解码)用于对字符串进行编码和解码,支持百分号、Base64、ASCII等多种编码转换,还支持Md5、sha等Hash算法。


Comparer(比较器)用于比较两个对象之间的差异性,支持text和hex形式的对比,通常用来比较两个request或者response数据包之间不同的地方,功能类似于网上常见的文本或者文件对比软件。


以上是Burp Suite的几乎所有功能。当然,不同的使用者有不同的需求,很少会用到上面介绍的所有功能。再详细介绍一下常用的几个功能。


1、Proxy功能


这是使用最多的功能,因为其他的几个常用功能也依赖于代理功能抓到的数据包。


它的使用非常简单,打开Burp Suite后,点击菜单栏的Proxy即可看到Proxy功能界面。首先需要设置监听IP和端口,在Proxy Listeners区域选中代理项,然后点击左边的Edit按钮。它有三种监听模式,如下图所示。


如果你只需要监听本地的数据,绑定地址的地方设置Loopback only即可。如果需要监听到本机的所有HTTPS/HTTP流量,则选中All interfaces。默认监听8080端口,在这里可以自行修改,点击OK按钮完成设置。


接下来的设置要在需要被代理的客户端完成。这里的设置如下图所示。


由于这里要监听本地浏览器的数据,所以设置代理服务器地址为127.0.0.1,端口为8080,也就是Burp Suite中之前设置的监听端口。


现在就可以开始抓包测试了。如图2-19所示,已经可以成功抓到浏览器的Request和Response数据。


2、Intruder功能


该功能主要用于模糊测试。在模糊测试分类里,用得最多的是暴力破解登录用户密码,它有非常强大的兼容性来支持各种数据格式爆破。下面让我们来见识下Intruder到底是有多强大。这里演示用它来爆破Discuz后台登录密码。注意,Discuz登录是有登录验证限制的,每个IP只有5次登录失败的尝试机会。我们利用Burp Suite绕过这个登录限制进行密码爆破,绕过原理是,由于Discuz采用的是HTTP_CLIENT_IP的方式来获取IP,而这个值可以在发送请求时伪造,于是我们可以利用Burp Suite来伪造这个登录IP绕过错误次数限制。


首先,按上面的介绍设置好代理抓包,在浏览器中打开Discuz后台登录页面,在账号及密码输入框输入任意字符,点击“提交”按钮,回到Burp Suite,将抓到的数据项发送到Intruder。接下来,就需要对登录数据包进行修改。


在Intruder的Positions中需要设置攻击类型为Pitchfork,并且全选数据包,点击Clear$按钮清除全部标识。然后在HTTP头中添加“client-ip:1.2.3.4”,并且将1234这个四个数字单独打上$标识,为Post数据里面的admin_password字段的值也打上$标识。最后修改效果如下图所示。


接下来就需要设置payload了,点击菜单栏的Payloads,为Payload set下拉框里面的第1、2、3、4个选项设置一样的Numbers payload,包括其他参数设置的最终界面如下图所示。


设置Payload set为5的Payload type为simple list,并且点击下面的Load按钮载入你的密码字典,然后我们的所有配置就完成了。点击菜单栏的“Intruder”里的“Start Attack”按钮即可开始爆破。爆破成功的效果如下图所示。


3、Repeater功能


这个功能经常用于修改数据包以及重放请求,测试漏洞的时候经常需要使用到Repeater。下面来详细看看它的使用方法。


首先设置好proxy,然后通过浏览器触发请求查看Burp Suite捕捉到的数据包,在“http history”里选中监听到的数据包项,右键发送到Repeater。接着我们就可以对请求数据做任意修改了,修改完成后点击Go按钮即可发送数据包,如下图所示。


(二)浏览器扩展


说到浏览器扩展,肯定要先说一下浏览器。通常优先选择的是Firefox,再就是Chrome浏览器,原因很简单,Firefox的扩展是目前浏览器里面最多的,也许是因为Firefox开源的原因,喜欢鼓捣它的人也就多了,自然而然各种插件和扩展也多了。另外不少扩展是专门做安全测试使用的,常用的像HackBar、FireBug、Live HTTP Headers、Modify以及Tamper Data,等等,稍后会详细介绍这几款扩展。同时,Chrome浏览器的扩展也非常多,不过方便用来做安全测试的比Firefox少,常用的有Http Headers、EditThisCookie、ModHeader等。其次就是一些扩展更少的浏览器,这里就不详细列举,不过建议常见内核的浏览器都应该安装一款,笔者电脑上就一直装着4款浏览器。


在下面的浏览器扩展介绍里,笔者会着重介绍Firefox的扩展。通常不涉及浏览器特性的漏洞测试,在Firefox下测试会比较方便;涉及浏览器特性的漏洞测试,则需要安装不同的浏览器。这里推荐一个浏览器测试软件IEtester,利用它可以切换IE浏览器内核版本,而不用安装所有版本的IE浏览器。接下来介绍常用的一些扩展的功能和使用方法。


1、HackBar


Hackbar是安全测试最常用的一款Firefox扩展,主要作用是非常方便安全人员对漏洞进行手工测试。它有三个输入框,分别是URL、Post数据以及Referer的参数设置,在输入框上部还提供了一个菜单栏,有各种各样编码、解码的小功能。Hackbar的整体界面如下图所示,箭头所指的标注框里面就是Hackbar了。


点击Load URL即可从Firefox地址栏获取当前URL,点击Execute之后即可发送我们设置好的请求数据。


2、Firebug


Firebug是一款开发者工具,功能与火狐自带的开发者工具差不多,支持直接对网页HTML、CSS等元素进行编辑,其中的“网络”功能可以直接嗅探Request和Response数据包。通常在利用一些支付漏洞或者SQL注入漏洞的时候,我们只需要把鼠标指针定位到要修改的网页区域,右键点击“使用Firebug查看元素”即可对网页进行修改测试漏洞,Firebug的界面图如下图所示。


3、Live HTTP Headers


Live HTTP Headers主要的功能是抓取浏览器Request和Response数据包,也支持对Request数据进行修改后再次请求。不好的一点在于它只能抓取到HTTP的数据,对HTTPS无效,不过用来分析简单页面数据它已经足够。Live HTTP Headers的界面如下图所示。


首先勾选Capture复选框,然后开始在浏览器中请求页面即可,选中抓到的数据包,点击Replay按钮可对数据进行编辑和重新发送。


4、Modify


Modify是一款火狐扩展工具,顾名思义,这是一款用来修改的扩展,Modify仅支持添加和修改Request中HTTP Header的字段,而且它是做全局修改,即开启Modify之后,它会把浏览器对任何网站的所有请求中对应字段进行修改。下面就介绍它的使用方法,下图就是Modify的主界面。


使用非常简单,在图中Modify的下拉框中选择要执行的模式,有Modify、Add以及Filter,然后在后面的两个输入框输入参数名以及参数值,点击Save再点击左上角的Start按钮即可启动Modify。


通过抓包可以看到以及将访问百度的请求中cookie的值修改成了“seay”,如下图所示。


(三)编码转换及加解密工具


代码审计必然要接触到编码相关的知识,历史上很多高危的漏洞是由编码问题导致的,比如在XSS漏洞中可以利用浏览器对不同编码的支持来绕过过滤触发漏洞,另外我们也经常需要用到不同的编码转码来进行模糊测试漏洞。另外是加解密以及Hash算法,在代码审计中,我们经常遇到程序对特定字符进行加密或者Hash后用作Cookie和Session,或者是用户密码的保存通常也会加密,所以我们必须要了解常用的加解密方式,下面推荐几款编码转换和加解密的工具。


1、Seay 代码审计系统自带的编码功能


主界面菜单栏点击“正则编码”即可打开该功能,目前支持Md5算法、URL、Base64、Hex、ASCII、Unicode多种常用编码方式转换。另外还针对MySQL与MSSQL注入等做利用格式做针对性处理,主界面如下图所示。


2、Burp Suite 上有一个Decoder功能


这个功能可对字符串进行编码和解码,支持百分号、Base64、ASCII等多种编码转换,还支持Md2、Md5、Sha系列等Hash算法。它的使用也非常简单,只需要输入要转换要的字符,选择需要转换成的编码即可,如下图所示。


3、超级加解密转换工具


另外介绍一个专门用来加解密的国产小工具,支持的算法比较多,独立的exe文件轻巧干净,在百度搜索“超级加解密转换工具”即可找到这款小软件,使用界面如下图所示。


加密:使用的时候只要在软件右侧的“方法分类选择”中选择加密方式,在“明文”输入框中输入需要“加密”的字符串,点击“加密”即可在“密文”框中看到加密后的结果。


解密:使用的时候只要在软件右侧的“方法分类选择”中选择解密方式,在“密文”输入框中输入需要解密的字符串,点击“解密”即可在“明文”框中看到解密后的结果。


(四)正则调试工具


正则表达式是用自定义好的特定字符组合,在正则解析引擎内进行字符匹配。正则表达式有非常强的灵活性,在很多不同的场景都会用到正则表达式,比如验证注册用户名、邮箱等格式是否合格,再比如用来搜索文件内容,很大一部分的WAF(Web应用防火墙)的规则也是基于正则表达式,等等,可谓无处不在,然而如果正则表达式写得不严谨,就经常会导致各种bug出现,像防火墙被绕过,等等。


首先要熟悉正则表达式的用法,熟悉各个符号的含义,这样我们才能写出严谨的正则表达式,才能在代码审计中发现别人正则表达式的问题所在。


可以回顾往期文章《正则表达式》,这里仅介绍几个常用的正则表达式调试工具。


1、Seay代码审计系统中自带的正则调试功能


在Seay代码审计系统的菜单栏点击“正则编码”项,即可看到正则调试功能的主界面,它支持正则实时预览,即你在输入框修改正则表达式或者要匹配的源字符的时候,调试的结果会实时显示在下方的信息栏中,非常的直观和方便。效果图如下图所示。


除了实时调试,它还支持实时解码调试,一些特殊字符我们无法在输入框输入,但是可以利用编码处理后输入,只要设置解码选项,程序在用正则匹配前会先将源字符进行指定的编码转换后在进入正则引擎匹配,目前支持URL编码、Base64编码以及Hex编码,使用效果如下图所示。


2、灵者正则调试


这是一款从RenGod(灵者更名)中提取出来的绿色版正则调试工具,单文件的大小只有400多K,支持正则搜索、正则替换,也同样支持实时预览,在正则性能上也做的相当不错。如下图所示是它的主界面。


这款工具使用起来也非常简单,比如正则搜索功能的使用,将要搜索的文本放入到“要搜索的文本”输入框中,在“正则表达式”输入框中输入正则表达式,即可实时的在下方看到匹配上的结果。


(五)SQL执行监控工具


SQL执行监控可以非常高效地帮助我们发现一些SQL注入和XSS等问题,帮助我们非常方便地观察到数据在Web程序与数据库中的交互过程,在做模糊测试时,只需利用模拟测试工具爬取页面的URL及表单,提交特定的参数如带单引号(‘)等,通过分析SQL执行日志则可以非常准确地判断出SQL注入漏洞是否存在,同样的注入<>”等符合也可以用来测试XSS漏洞。


这里分别针对MySQL和MSSQL列举SQL执行监控的工具和使用方法,其中着重介绍MySQL的监控,因为PHP大多都是使用的MySQL作为存储。


针对MySQL的执行监控,笔者没有找到比较好的工具,于是在自己的代码审计系统上加入了这么一个插件,主要原理是开启MySQL的general_log来记录MySQL的历史执行语句,它有两种记录方式,默认是通过记录到文件方式,另外一种是通过直接记录到MySQL库的general_log表中,为了更方便地查询,我选择的是记录到MySQL数据库的方式。另外这个功能的开启方式也有两种,一种是直接用MySQL的SQL语句开启,SQL语句如下:


set global general_log=on

SET GLOBAL log_output='table'


执行结果如下图所示。



不过这些步骤在笔者的工具中都自动完成了,同时它还支持快速过滤实时预览。只要点击下断,操作完之后点击更新即可看到这段时间内在MySQL执行过的所有SQL语句,主界面如下图所示。


另外一种开启方法是在MySQL配置文件中修改,在[mysqld]配置中加入如下代码:


general_log=ON

general_log_file={

日志路径

}/query.log


重启MySQL后可以看到所有的SQL查询语句都会记录在设置的这个文件中。


SQL Server执行监控也很简单,在SQL Server上自带有一个性能监控的工具SQL Server Profiler,在开始菜单里可以找到它,使用SQL Server Profiler可以将SQL执行过程保存到文件和数据库表,同时它还支持实时查看和搜索。


下面我们来看看怎么使用它,打开SQL Server Profiler后,在左上角的菜单栏里选择“文件→新建跟踪”,在常规栏输入跟踪名(随意)后,点击“事件选择”标签,我们只需要SQL执行过程,所以要过滤掉一些干扰的东西,比如登录、退出等,在事件选择里只保留TSQL下面的SQL:BatchCompleted事件,然后点击“运行”,如下图所示。


运行后监控的到SQL语句如下图所示。


从图中监控结果可以非常清楚第看到之前执行的SQL语句以及开始执行时间、结束时间。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存