AKun Wallpaper 代码审计实战分析5

2023-10-17 09:59

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

前言

前面四篇文章已经分析出了大部分的严重和高危漏洞,同时分析了这些漏洞的原理和修复方法。在这一篇文章中将继续分析fortify扫描出的漏洞。

AKun Wallpaper 代码审计实战分析1:https://blog.csdn.net/rpsate/article/details/122354690

AKun Wallpaper 代码审计实战分析2:https://blog.csdn.net/rpsate/article/details/122387998

AKun Wallpaper 代码审计实战分析3:https://blog.csdn.net/rpsate/article/details/122400520

AKun Wallpaper 代码审计实战分析4:https://blog.csdn.net/rpsate/article/details/122417856

漏洞分析1

在fortify的左边漏洞视图中看到了 Header Manipulation:Cookies,fortify的解释是: Including unvalidated data in Cookies can lead to HTTP Response header manipulation and enable cache-poisoning, cross-site scripting, cross-user defacement, page hijacking, cookie manipulation or open redirect.,翻译成中文是:在 Cookie 中包含未经验证的数据可能会导致 HTTP 响应标头操作并启用缓存中毒、跨站点脚本、跨用户破坏、页面劫持、cookie 操作或开放重定向。

在这里插入图片描述

判断此处是否存在漏洞就要分析数据的来源和去向,其数据来源是数据库 admin_root表中的id和用户名,其中户名在写入数据库时已经过滤了特殊字符,但是为了避免 CRLF注入,也需要吧 %0d%0a(\r\n)过滤。其中id是数据库自动生成的,不会存在危险数据。

CRLF注入:https://blog.csdn.net/rpsate/article/details/120601703

在这里插入图片描述

再看cookie数据的去向,通过全局搜索 $_COOKIE可以得知cookie的去向。通过全局搜索发现只有 admin/index.php的40行使用了cookie数据,而且也对js特殊字符过滤(前面已经修复),所以此处没有其他漏洞了。

在这里插入图片描述

漏洞分析2

不安全的随机数生成函数 mt_rand。这个函数每生成一个随机数就要更换一次随机数种子,不然可以通过已得到的随机数反推出随机数种子,然后再通过随机数种子推算出随机数。此处随机数的作用是获取随机的字体大小,验证码在图片种的随机的位置,随机的字体等等。这些随机数据给用户知道也无关紧要,最重要是的不能让用户推算出验证码。

随机数是根据随机数种子计算得到的,而且随机数与随机数种子是一一对应的关系。随机数生成函数:R=f(x),其中x就是随机数种子,R就是随机数。

再举一个通俗易懂的例子:我们把随机数种子比作一颗种子,随机数比作一个小树苗, mt_rand()执行一次那么树苗就长大一岁。基因一样的种子长大后长得到的树苗一模一样,但是每个年龄段的容貌是不同的。所以同样的随机数种子获得的随机数是一样的(基因一样,所以容貌相同),不更换随机数种子的情况下,每次mt_rand获取的随机数是不同的(每个年龄段的树苗容貌不同)。

在这里插入图片描述

看到 lib/string.func.php,这个文件中 buildRandomString函数是生成验证码的函数。此处验证码生成方式是通过 str_shuffle函数随机打乱字符串,然后取前4位字符。此处没有用到 mt_rand函数,所以不可以推算出验证码,不存在漏洞。

在这里插入图片描述

漏洞分析3

使用了Hardcoded password(硬编码密码),意思就是将密码直接写在了代码中。这是数据库的连接密码,只能写在代码中,所以此处代码没有问题。但是要注意的是在真实的业务环境中不能如下图所示一样使用弱口令。

在这里插入图片描述

漏洞分析4

此处如果在浏览器上记录密码,那么下次访问此页面时浏览器会自动填入。自动填入密码有一定泄密风险,但是用户可以选择不记录密码,这与代码无关(也可以通过特殊的代码让浏览器不自动填入),所以这需要用户养成良好的习惯。

在这里插入图片描述

漏洞分析5

看到 admin/doImageAction.php的145行左右,此处存在一个函数 move_uploaded_file,这个函数的作用是保存用户上传的文件。我们只要过滤了非法文件就可以避免文件上传漏洞。

在这里插入图片描述

该文件上传功能设置了扩展名白名单,然后去除了上传目录的执行权限,通过md5设置唯一文件名,所以该处文件上传不存在漏洞。

在这里插入图片描述

漏洞分析6

看到 admin/doLogin.php的10行和23行,fortify是检测到了addslashes函数对获取的用户名进行了过滤,但是怀疑存在sql注入漏洞。我们看到23行,在sql语句中可控参数 $get_username两边是有引号的,所以对 addslashes对引号过滤是可以防止sql注入。我们要知道某些情况下 addslashes函数可以通过宽字节绕过。虽然我们现在数据库现在用的是utf-8编码,无法通过宽字节绕过,但是该套系统部署在其他用 GBK的环境中就可以通过宽字节绕过 addslashes函数了,所以此处应该把 addslashes换成 mysql_real_escape_string

在这里插入图片描述

要注意:mysql_real_escape_string要与 mysql_set_charset搭配用,且 mysql_real_escape_string需要用在 mysql_set_charset后面。前面修复漏洞时已经将mysql_set_charset写在了 mysqlConnect函数中,所以修改代码应该如下图所示:

$get_username = $get_username;
$get_username = mysql_real_escape_string($get_username);

在这里插入图片描述

漏洞分析7

看到 core/core.php的128行,此处的 $searchContent也是仅仅使用addslashes过滤,其中 $offset$pageSize来自 getPageImageInfo函数,该函数把$offset转化成了整数,所以无恶意数据,$pageSize用户不可控。所以此处我们只要处理好searchContent即可。

在这里插入图片描述

修改后的代码如下图所示,还有其他sql注入漏洞和此处一样,大家可以用同样的方法修复。

$searchContent = mysql_real_escape_string($searchContent);

在这里插入图片描述

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



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

相关文章

网页解析 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