一、背景作者之前录制了一套XSS视频教程,在章节中讲解了人工挖掘、工具挖掘、代码审计三个部分漏洞案例。我打算以文章的形式再写一遍内容。前两篇已经写好了,内容有一定的关联性。手动XSS挖掘文章地址是快速找出网站可能存在的XSS漏洞的做法(一)https://segmentfault.com/a/1190000016095198本文主要记录通过代码审计进行XSS漏洞挖掘,分为三部分:查找关键位置、正向审计、反向审计。审计系统就是渗透测试系统,测试系统的搭建可以参考作者的第一篇文章。2.操作概述找出关键位置正向审计和反向审计3.找出关键位置打蛇打七寸,说明在关键位置做事效率会更高。代码审计查找漏洞也是如此,所以作者需要找出XSS的关键位置;对于目前大多数的Web应用来说,MVC模型是一种非常主流的形式,所以笔者会在这里找到对应的控制器和模板。本节主要讲解查找位置的思路3.1查找控制器查找控制器的方式通常是分析主入口文件和URL地址。现在我打开主页,发现URL地址是http://permeate.songboy.net/home/index.php,当我点击该部分后,URL地址变成了下面的地址http://permeate.songboy。net/home/index.php?m=tiezi&a=index&bk=6从url地址可以看出,无论是首页还是栏目页,都是通过url地址home/index.php,所以笔者可以打开home/index.php文件以检查存储控制器的位置。打开后代码如下public/footer.php";再次打开../core/common.php文件,代码如下functionincludeAction($model,$action){//判断controller是否存在$filePath="./action/$模型.php";如果(is_readable($filePath)){require_once$filePath;$class=new$model;如果(is_callable(array($class,$action))){$class->$action();返回真;}}//如果没有找到对应的controller,直接调用模板文件$tplFilePath="./tpl/$model/$action.php";if(is_readable($tplFilePath)){require_once$tplFilePath;returntrue;}echo'Controllerortemplatefile'.$filePath.'Doesnotexist!';die;}从代码你可以可以看到它的controller文件存放在home/action/下,此时笔者打开这个文件夹可以看到几个php文件,如下图所示,回想一下刚才看到的URL地址是如下http://permeate.songboy.net/home/index.php?m=tiezi&a=index&bk=6认为其controller文件为tiezi.php,打开可以看到$val){$$key=$val;}require_once$filePath;}从上面的代码可以看出,模板存放在home/tpl目录下,通过文件夹打开查看,如下图3.3验证位置通过上面的操作过程,controller和模板的位置已经基本确定,但是为了防止出现意外,还是要核对准确,在controller中输出字符串1111111,在模板中输出字符串222222222,如果按照笔者之前的expectation,那么两组字符串都会输出,参考代码如下,controller中添加的测试代码如下publicfunctionindex(){echo'11111111111';模板文件中添加的测试代码如下222222222222222
