通过代码审计找出网站中的XSS漏洞实战(三)

news/2024/5/14 17:50:13/文章来源:https://blog.csdn.net/u013431141/article/details/103312820

一、背景

笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘、工具挖掘、代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为快速找出网站中可能存在的XSS漏洞实践(一)https://segmentfault.com/a/1190000016095198

本文主要记录通过代码审计的方式进行XSS漏洞挖掘,分为了找出关键位置,正向审计,反向审计三个部分,审计的系统为permeate渗透测试系统,测试系统的搭建可以参考笔者的第一篇文章。

二、操作概要

  1. 找出关键位置
  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文件来查看控制器所存放的位置,打开后代码如下所示

<?php
require_once "../core/common.php";
include "./public/header.php";
includeAction("$model","$action");
include "./public/footer.php";

再次打开../core/common.php文件,代码如下所示

function includeAction($model, $action)
{//判断控制器是否存在$filePath = "./action/$model.php";if (is_readable($filePath)) {require_once $filePath;$class = new $model;if (is_callable(array($class, $action))) {$class->$action();return true;}}//如果没有找到对应的控制器,直接调用模板文件$tplFilePath = "./tpl/$model/$action.php";if (is_readable($tplFilePath)) {require_once $tplFilePath;return true;}echo '控制器或模板文件' . $filePath . '不存在!';die;
}

从代码中可以看出,其控制器文件存放在home/action/下,此时笔者打开此文件夹,可以看到几个php文件,如下图所示

image

回想刚才笔者所看到的URL地址如下

http://permeate.songboy.net/home/index.php?m=tiezi&a=index&bk=6

联想起来其控制器文件为tiezi.php,将其打开一看

<?phpclass tiezi
{function __construct(){}public function index(){.....$data['count'] = $count;$data['page_size'] = $page_size;$data['page_count'] = $page_count;$data['page_num'] = $page_num;displayTpl('tiezi/index', $data);}

果然发现了index方法

3.2 找出模板

得到控制器之后,笔者还需要找到模板存放的位置,通常模板与控制器是息息相关,因此可以控制其中找到蛛丝马迹,比如上面的代码当中,最后一行代码为displayTpl函数,从字面意思上可以理解为显示模板,因此笔者通过PHPStorm的跳转功能直接跳过去查看该函数的具体流程,找到代码如下所示

/*** 加载模板文件* @param $tplPath*/
function displayTpl($tplPath, $data = [])
{$filePath = "./tpl/$tplPath.php";if (!is_readable($filePath)) {echo '模板文件' . $filePath . '不存在!';die;}foreach ($data as $key => $val) {$$key = $val;}require_once $filePath;}

在上面代码当中可以看出模板存放于home/tpl目录下,通过文件夹打开查看,如下图所示

image

3.3 验证位置

通过上面的操作流程已经基本确定控制器与模板的位置,但为了防止意外,还是准确验证一下,在控制器中输出一个字符串1111111,在模板中输出字符串222222222,如果按照笔者之前所预想的,那么这两组字符串都会被输出,参考代码如下

在控制器中加入的测试代码如下

public function index()
{echo '11111111111';

在模板文件中加入的测试代码如下

222222222222222
<?php
$get = $_GET;
?>
<section class="section">

现在会到浏览器,在当前页面单击鼠标右键,选中查看源代码,如下图所示

image

在源代码当中,搜索字符串11111,果然搜索到字符串,如下图所示

image

四、正向审计

在找到关键位置之后,笔者便可以针对性的去进行代码审计,XSS的代码审计主要有两种方式,正向代码审计,反向代码审计;正向代码审计的意思是从参数的接收到参数最后的使用这个流程进行检查,而反向审计则是相反从变量使用的位置上推到参数接收

4.1 接收参数位置

首先通过正向方式来进行代码审计,正向代码审计是从接收参数进行排查,因此找到控制器当中,通过编辑器的搜索功能,笔者在控制器文件当中搜索了关键字 $_GET 找到了tiezi.php控制器中的index方法,代码如下所示

    public function index(){$id = $_GET['bk'];$bk = &$id;//开始分页大小$page_size = 15;//获取当前页码$page_num = empty($_GET['page']) ? 1 : $_GET['page'];//中间代码.................省略$data['bk'] = $bk;$data['count'] = $count;$data['page_size'] = $page_size;$data['page_count'] = $page_count;$data['page_num'] = $page_num;displayTpl('tiezi/index', $data);}

4.2 模板位置是否过滤

从上面代码当中可以看出参数bk并没有进行任何过滤,便直接放到了模板当中,这便留下安全隐患,如果在模板当中也没用进行安全过滤,那么就存在着反射型XSS漏洞,打开模板文件并搜索关键词bk,代码如下所示

<div class="post-list-controller"><div style="float: right"><a class="btn btn-primary" href="fatie.php?bk=<?php echo $bk ?>">发帖</a></div>

可以看出,模板中确实没有进行安全过滤

4.3 漏洞验证

http://permeate.songboy.net/home/index.php?m=tiezi&a=index&bk=6%22%3E%3Cscript%3Ealert(123)%3C/script%3E

如下图所示

image

五、反向审计

反向审计则从模板中找出使用了那些变量,并反推变量的来源,以及是否进行了安全过滤

5.1 找出模板中的变量

通过PHPStrom编辑器的正则表达式功能匹配变量,正则表达式如下

echo \$([a-z]*)

这个正则表达式是匹配输出变量,比如匹配字符echo $zhangsan,用PHPStorm匹配到的结果如下图所示

image

双击鼠标左键打开对应代码文件/home/search.php,代码如下所示

image

在代码中可以看出变量直接放在模板当中,如果在控制器当中也没有转义此变量的来源,那么很有可能会存在XSS问题。

5.2 查找变量来源

追踪变量$keyword,找到变量来源

<?php
include "public/header.php";
include "../core/common.php";$keywords = $_REQUEST['keywords'];
if (!empty($keywords)) {$where = " where title like '%$keywords%' ";

从上面的代码当中可以看出变量$keywords并没有进行任何过滤,因此可以笃定此处也存在这XSS漏洞问题

5.3 漏洞验证

从代码的位置发现与前面的唯一入口不同,此代码文件并不是类文件,因此尝试直接访问,构造出URL地址如下

http://permeate.songboy.net/home/search.php?keywords=%E6%B5%8B%E8%AF%95%3Cscript%3Ealert(123)%3C/script%3E

通过火狐浏览器访问此URL地址之后,出现结果如下图所示

image

在提示框当中果然弹出了123的提示

六、新书推荐

如果对笔者的Web安全文章较为感兴趣,可以关注笔者更多文章内容,新书《PHP Web安全开发实战》,现已在各大网点销售,封面如下图所示

image

作者:汤青松

微信:songboy8888

日期:2018-10-09

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/dev...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_792438.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过代码审计找出网站中的XSS漏洞实战(三)

一、背景 笔者此前录制了一套XSS的视频教程&#xff0c;在漏洞案例一节中讲解手工挖掘、工具挖掘、代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完&#xff0c;内容有一些关联性&#xff0c;其中手工XSS挖掘篇地址为快速找出网站中可能存在的XSS漏洞实践…

阿里云快速网站搭建详解

一、网站建站流程 主要步骤: 要有一个域名购买主机要有数据库,一般购买主机赠送解析域名下载网站程序(演示用的WordPress)上传程序安装程序(配置数据库、网站基本信息、管理员信息等)二、DNS服务器快速入门 DNS服务概述 DNS(Domain Name System)域名系统,在TCP/IP 网…

网易易盾推出政企网站安全方案 主打主动治理、防篡改

今天&#xff0c;网站已经成为企业、政府、教育等机构必备的“生产资料”&#xff0c;它是信息展示、服务提供、营销宣传以及企业形象的重要渠道。然而&#xff0c;如此重要的对外窗口&#xff0c;在今天仍遭受连绵不绝的网站篡改等安全事件。 网页篡改是指恶意破坏或更改网页内…

VS2012 发布网站步骤

VS2012中发布网站的方式与以往有了不同&#xff0c;前面的版本发布如图 而2012点publish的时候弹出框有所不同&#xff0c;这边需要新建一个profile名字随便起&#xff0c;发布的方式有好几种&#xff0c; 当然不同的方式配置不同&#xff0c;用的最多的就是files system了 选择…

在Github上搭建自己的博客网站

程序员都应该有写博客的习惯&#xff0c;博客可以作为知识管理&#xff0c;提升自己。当然写博客的地方有很多&#xff0c;CSDN&#xff0c;博客园以及新浪&#xff0c;网易等等。但是如果使用Github Pages来搭建一个有自己域名的独立网站&#xff0c;会不会更加炫酷呢&#xf…

使用七牛云存储在网站中进行图片外链

在CSDN中写博客&#xff0c;如果想在文章中插入一张图片&#xff0c;其实是非常简单的&#xff0c;只要从你本机进行图片选择&#xff0c;然后选择上传&#xff0c;图片就会上传到CSDN的服务器&#xff0c;到时候在文章显示的时候就会读取该图片。但是如果是在自己的搭建的网站…

使用百度统计对网站进行流量分析和统计

在自己建立一个网站后&#xff0c;最关心的问题就是到底有多少人访问了我的网站&#xff0c;也就是我的网站的流量到底是多少。以此可以不断进行完善和优化。这里将会使用百度的两个统计工具&#xff1a;百度统计和百度站长来进行分析。以我自己的建立的基于Hexo博客网站 : htt…

按钮制作网站收集

As Button Generator is the Button Generator 网站地址&#xff1a;http://jirox.net/AsButtonGen/ FlashButton.com free Animated Flash Buttons Menu Generator 网站地址&#xff1a;http://www.flashbuttons.com/ Da Button Factory Create pretty buttons online, quickl…

Logo在线制作网站收集

Supalogo - create nice logo 简单的Logo在线生成器 网站地址&#xff1a;http://supalogo.com/ 效果&#xff1a; 网站预览图&#xff1a; 说明一点就是&#xff0c;该网站也支持中文&#xff0c;日文等等。不过格式只有一两种。 Logo Ease -Free Logo Design Logo Ease…

0days最好的破解网站

best 0days ,0days,crack,patch,keymaker,keygen,bbl,download Search result!不知道有没有人知道这个东西&#xff0c;号称最好的破解&#xff0c;补丁&#xff0c;序列号生成等等之类的。网站地址&#xff1a; http://0days.51cc.net/

歌词搜索网站收集

LRC123 LRC歌词搜索引擎 网站地址&#xff1a;http://www.lrc123.com 飞叶歌词网 -全球最大中文LRC歌词搜索引擎 网站地址&#xff1a;http://lrc.aspxp.net 歌词搜索的网站蛮多的&#xff0c;LRC123网站不错。

图片特效制作网站收集

3D-box maker 3d-box & package on-line for free 网站地址&#xff1a;http://3d-pack.com / 效果图&#xff1a; Preloaders.net | Free AJAX animated loading gifs | 3 dimensional (3D) 三维进度条、Load图案制作 网站地址&#xff1a;http://preloaders.net / 缩略…

11个超棒的iOS开发学习网站

我相信&#xff0c;要想从一个"还不错"的人变成一个卓越的人&#xff0c;我们需要不停地向他人学习&#xff0c;同时还得尽早地适应最新的技术和工具。除了苹果官方文档网站之外&#xff0c;列举了一些能获取有价值的文章和资源的网站&#xff0c;这些网站能够帮助我…

mysql is null 性能_「isnull」MySql数据库的优化-MySql中is NULL、ISNULL()和IFNULL()运行速度的比较 - seo实验室...

isnull在查询过程中&#xff0c;我们经常用到非空和is null的查询&#xff0c;为了更高效的查询&#xff0c;我们应该知道那种方法更快。在上一篇中&#xff0c;我们已经添加了一些数据。根据这些数据我们就可以来做一些验证。第一步&#xff0c;is NULL要比ISNULL()的比较SELE…

modelandview跳转页面404_404页面对网站SEO有什么影响?小看它可能让你吃大亏

前两天有个朋友找到我&#xff0c;让我帮他看一下他的网站关键词排名为什么突然暴跌&#xff0c;后来在检查原因的时候才发现&#xff0c;原来是他把404页面给去除了。在他将404页面恢复之后&#xff0c;许多关键词又重新有了一定的排名。因此在做网站SEO优化的时候也不要忽略了…

微软法国一网站被黑

微软法国的网站&#xff1a; http://experts.microsoft.fr/被黑&#xff0c;我这里现在无法访问。据黑客称&#xff0c;他来自土耳其&#xff0c;下一个目标就是microsoft.com。看截图&#xff1a;

速卖通关键词挖掘工具_利用SEO工具挖掘同行竞争对手关键词数据快速布局网站词库...

工欲善其事必先利其器&#xff0c;这句话告诉我们&#xff0c;善用工具&#xff0c;往往会起到很好的效果。对于SEO来说&#xff0c;做排名有很多方面的工作&#xff0c;这其中网站内容是非常重要的部分。而网站内容是围绕关键词的布局而展开。所以一个网站的关键词布局&#x…

Kevin Mitnick的网站 Gotz owned!

... 8月23日国际报道知名黑客Kevin Mitnick的网站上周日遭人入侵&#xff0c;还留下到此一游的留言。黑客是在上周日由巴基斯坦入侵代管Mitnick网站的电脑&#xff0c;并换掉原有首页&#xff0c;包括KevinMitnick.com与MitnickSecurity.com都出现一些不雅字句。“代管我网站的…

HKROnline SyncNavigator 注册机(非破解)下载地址,官方网站

www.syncnavigator.cn SyncNavigator 做数据同步时所支持的数据库类型&#xff1a; 支持sqlserver 2000-2014所有版本&#xff0c;全兼容&#xff0c;和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 来源数据库和目标数据库可以版本不同&#xff0c;比如&#xff1a;来源数据库…

sql 模糊查询不包含_当你的网站查询功能处是这样,那该处一定存在sql注入,要抓紧整...

搜索功能几乎是所有网站都有的功能&#xff0c;我们来看一下我们搭建好的这个网站中的搜索功能。网站正常打开后卫以下页面&#xff0c;该页面总共2条信息。这时候输入“专业编号”为03我们可以看到&#xff0c;输入03后会把专业编号包含有03的记录给查询出来。ps&#xff1a;其…