AKun Wallpaper 代码审计实战分析1

2023-10-17 09:59

本文主要是介绍AKun Wallpaper 代码审计实战分析1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

萌新博主前一段时间一不小心发现了一个漏洞并获取了一个CVE编号,高兴了好一阵子。于是本萌新就想学习一下代码审计,挖一点CVE来玩一玩。最终选择了《代码审计——企业级Web代码安全架构》作为学习资料。学习一阵子后准备进行实战分析,于是就想起了自己多年前写的一个小破站,代码下载地址:https://gitee.com/rpsate/akun-wallpaper 。该网站功能较少,采用函数式编程,代码嵌套少,漏洞较多,十分适合代码审计入门。该网站的功能模块如下图所示:

在这里插入图片描述

网站部署

首先在mysql中创建一个名为 searchimages的数据库。

mysql -uroot -proot #此处实例账号和密码都为root
create database searchimages #创建数据库

然后将网站根目录中的 searchimages.sql导入该数据库中,网站后台的默认账号和密码是admin:admin

use searchimages
source D:\phpstudy\www\searchimages.sql #导入数据库

然后修改文件/configs/config.php中数据库账号和密码即可。

在这里插入图片描述

XSS漏洞

漏洞分析

首先通过审计工具fortify自动审计,这个工具可以扫描出可能存在的漏洞代码,然后再进行人工分析。扫描后发现存在三十多个可能存在xss漏洞的代码。

在这里插入图片描述

如下图中第一个xss漏洞在jquery.3.3.1.js中,这个文件是调用的js库,暂时不用管。我们看到 editAdmi.php的29行,这里直接将 $username$email变量输出来。我们看到窗口的左下方有数据流走向分析,点击中间 Diagram按钮后会出现数据流的走向的图示。这可以直观的表示出数据从哪里来,中间经过了哪里,这样可以使我们更加快速的分析出代码中是否存在漏洞。

在这里插入图片描述

通过分析发现 $username$email直接从数据库中取出,未经处理直接输出在了页面上。这极有可能存在一个xss漏洞,接下来可以通过利用该漏洞来确认该处是否存在漏洞。

在这里插入图片描述

漏洞复现

下面我们来复现一下这个xss漏洞。登陆网站后台,在添加管理员页面的邮箱栏填写 "/><script>alert(1)</script>//,账号和密码任意,然后点击添加管理员按钮。

在这里插入图片描述

点击刚刚添加账号后面的修改按钮就跳转到了 editAdmin.php页面,然后就发现成功的弹出了一个提示框,这说明该处存在一个漏洞。

在这里插入图片描述

在这里插入图片描述

修复漏洞

书中提供了两种解决建议,分别为:特殊字符HTML实体转码,标签事件属性黑名单。黑名单的绕过方式多种多样,防范难度非常高,我们这里就采用特殊字符实体转码的方式,当然最好同时采用两种方法。

特殊字符HTML实体转码主要有两个函数: htmlentities()htmlspecialchars(),两者都是将html特殊字符转码,其区别是htmlspecialchars()只格式化& ' " <> 这几个特殊符号,htmlentities()会转换除了空格之外的特殊字符。

要注意的是使用htmlentities()如果不指定编码,遇到中文则会乱码。

两者默认都不会转义单引号 ',需要设置第二个参数来转义单引号。

第2个参数取值有3种,分别如下:

  • ENT_COMPAT(默认值):只转换双引号。
  • ENT_QUOTES:两种引号都转换。
  • ENT_NOQUOTES:两种引号都不转换。

如果不转义单引号,在特殊的情况下是会存在xss漏洞的,所以我们可以自定义一个同时对特殊字符和单引号转义的函数。该网站的 /lib/common.func.php文件被所有网页包含,可以在该页面中定义全局函数。

function my_htmlspecialchars($str) {return htmlspecialchars($str, ENT_QUOTES);
}

然后在每个数据输出点调用该函数即可,如下图所示。

在这里插入图片描述

然后我们刷新editAdmin.php页面,看到没有再次弹出提示框,而是在邮件输入框正常显示了全部的js代码。我们可以采用同样的方法可以修复其他xss漏洞。

在这里插入图片描述

漏洞分析

接下来看到 editImage.php的32行, $imagePath也是从数据库中直接取出,并且未处理直接输出在页面上。我们以同样的方法复现该漏洞,但是没有成功!所以可能是该数据再写入数据库前已经处理了。

在这里插入图片描述

接下来我们分析一下 $imagePath是如何进入数据库的,通过该变量名称得知该数据即图片的地址。我们看到 douploadImages.php的72行,通过分析得出 putImage函数是将图片的名称和地址写入数据库中。而图片的地址是通过时间戳生成唯一id,然后通过md5加密得到,所以这个数据源不可能存在恶意数据。所以通过分析得到该处不存在xss漏洞。

在这里插入图片描述

接下来分析 editImages.php的36行,变量$imageName是图片的名字,我们刚刚看到这个数据在输入数据库的时候没有处理,所以该处存在xss漏洞,需要调用特殊字符HTML实体转码函数来处理该数据。我们可以用同样的方法修复其他xss漏洞。

在这里插入图片描述

这篇关于AKun Wallpaper 代码审计实战分析1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/224638

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d