前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【代码审计】对某BC老盘子的代码审计

【代码审计】对某BC老盘子的代码审计

作者头像
YanXia
发布2023-10-18 14:20:52
3380
发布2023-10-18 14:20:52
举报
文章被收录于专栏:YX’blogYX’blog

本篇文章作者YanXia,本文属i春秋原创奖励计划,未经许可禁止转载 地址https://bbs.ichunqiu.com/thread-63596-1-1.html

0x00 前言

这套老盘子现在公网上虽然还有些存活IP,不过应该没什么人实际在用。遂公开此文章。预与各位分享,共同学习代码审计技术。 本文章仅供安全人员学习攻防技术,请勿用于任何非法行为!!! 本文章仅供安全人员学习攻防技术,请勿用于任何非法行为!!! 本文章仅供安全人员学习攻防技术,请勿用于任何非法行为!!!

0x01 正文

1.去除验证

在本地搭建好后,发现下图爆了个错

41784-d6zu1vfrta6.png
41784-d6zu1vfrta6.png

去进入applicationcommon.php看看,发现是thinkcod()函数调用的该验证

39522-xolbhs3opv8.png
39522-xolbhs3opv8.png

它将NAV_NUM(thinkphplibrarythinkController.php)给调用出来组合成了个他们的后门域名并将当前系统程序的信息传到该域名中做记录。

23479-mkwlr3ai8x.png
23479-mkwlr3ai8x.png

由于该站点已经不可访问,所以我们只需要在file_get_contents前加上注释即可。

2.前台sql注入

该漏洞在网络上已有公开不过我发现大家都没正确的审计到存在注入的点~~ 接下来跟着我分析。首先,该处漏洞用GET方式访问的时候路径为/index/goods/goods/pid/23

36604-s5cfvf15t2.png
36604-s5cfvf15t2.png

我们从代码层面看看。

07376-xl76y4lc8o.png
07376-xl76y4lc8o.png

我在网络上看到篇文章说三图GetProData()函数是导致sql注入的原因,但是在我调试之后发现并不是如此。我们根据去看看 下图这个写法会将pid变成字符串形式传参,而此处是不能用宽字节绕过的。所以说不会存在相关漏洞。具体形式为

代码语言:javascript
复制
SELECT `pi`.*,`pd`.* FROM `wp_productinfo` `pi` INNER JOIN `wp_productdata` `pd` ON `pd`.`pid`=`pi`.`pid` WHERE `pi`.`pid` = '23' LIMIT 1
85484-ublrofypsmn.png
85484-ublrofypsmn.png

而真正存在漏洞的其实是在下图的ChickIsOpen()

27241-z9sk4tlp1f.png
27241-z9sk4tlp1f.png

这个传参的方法会将pid以数字的形式带入到sql语句中,从而造成sql注入漏洞

代码语言:javascript
复制
SELECT * FROM `wp_opentime` WHERE ( pid=23 ) LIMIT 1
38148-rraskjcnwee.png
38148-rraskjcnwee.png

至于修复方法,这里就不便多说了。

代码语言:javascript
复制
    SELECT * FROM `wp_opentime` WHERE ( pid=23 and extractvalue(1,concat(0x7e,(select database()))) ) LIMIT 1
14172-0xfijsjwjlbc.png
14172-0xfijsjwjlbc.png

3.前台sql注入

这个洞在applicationindexcontrollerGoods.php 漏洞成因与上面的sql注入一致,我就不重复说了

06797-4102s75yhnq.png
06797-4102s75yhnq.png
07921-cxtshqlk21.png
07921-cxtshqlk21.png

4.前台XSS漏洞

下图画圈处,即为本此漏洞点。在经过echo前我们需要过一次checkSignature()

03732-y4i4psmdyca.png
03732-y4i4psmdyca.png

这里发现会判断我们传入的signature值是否与系统token值加密后一致。

47580-vl9a53236j.png
47580-vl9a53236j.png

那这里就简单了

37622-41r87o07nf8.png
37622-41r87o07nf8.png

我们不需要传入timestamp, nonce.这样就会直接将token值给sha1加密。

访问一下试试,成功弹窗 (PS:经过公网测试。基本上都没该这个地方的token)

24349-4pbue76orlk.png
24349-4pbue76orlk.png

5.管理员凭据伪造

这里我们先看看该网站cookie是什么样式的 可以发现除了token。其他看起来都是可以伪造的。

85658-mfcufby2o08.png
85658-mfcufby2o08.png

这里我们去源码里跟一下。可以发现这个开发6666了。将一段骂人的话硬编码给token。

55234-q1fxu6coyx.png
55234-q1fxu6coyx.png

在跟到BASE.php底下看看。发现他仅判断了userid是否为空以及token值是否一致。并未将cookie带入数据库去查询对应值

61127-5aszn19o56h.png
61127-5aszn19o56h.png

这里就可以造成个cookie伪造了 当然,在后台每个功能的时候"它"还会判断otype是否等于3不然就输出个骂人的脏话

71768-qro731uf76t.png
71768-qro731uf76t.png

最后来尝试访问一下,成功伪造

39795-hdfo63bw2q7.png
39795-hdfo63bw2q7.png

6.文件上传

该处在/admin/setup底下 找到editconf()函数,发现在move函数上没有做什么后缀限制。

88349-2yd4uc8dlhq.png
88349-2yd4uc8dlhq.png

跟进一下move(),重头戏在buildSaveName()函数,生成文件名和文件路径。

会以当前年月日(如20230101)/随机数的md5.php生成

25002-ee8473ts7x.png
25002-ee8473ts7x.png

不过由于这个地方在move下一行会$info->getSaveName();返回文件路径。并保存到数据库中。我们可以在前端就能看到。所以这里就不用爆破文件名去找文件了(实际上这个随机数也是可以爆破的,这里就无需多讲。后面有缘分我教大家怎么爆破。或者自行摸索一下)

03594-1m9pvbg1dhd.png
03594-1m9pvbg1dhd.png

7.文件上传

这个功能点是得纯靠代码审计了,前台已经删功能了。不过相关技术就不用多说了。跟上面如出一辙

15636-kthwxvdaf9r.png
15636-kthwxvdaf9r.png

虽然上传的时候会爆500,实际上已经传上去了

展示一下图片好了

03379-9qtcmvf64wu.png
03379-9qtcmvf64wu.png

0X02 结尾

最近发现有人搬文章不写来源啊喂。麻烦各位搬运的时候写一下归属。栓q~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 正文
    • 1.去除验证
      • 2.前台sql注入
        • 3.前台sql注入
          • 4.前台XSS漏洞
            • 5.管理员凭据伪造
              • 6.文件上传
                • 7.文件上传
                • 0X02 结尾
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档