专栏首页信安之路审计某开源商城中的漏洞大礼包

审计某开源商城中的漏洞大礼包

首先这个 CMS 并不怎么出名,拿来当审计样板却很合适。给我的感觉是适合初级水平升中级之间的过程,也算是对上一篇审计文章的后续文了。

审计的版本为: 20180206 发布的免费版 2.0 。另外图很多,建议 PC 端体验更佳!

分析环境及入口

图中的 URL 会出现两个,这是因为部分在公司审计的,部分是周末在家审计的。

官网首页上有文档,里面注明了这套 CMS 所使用环境:

ThinkPHP5.0 + MySQL

这样看来实际上我们只需要熟悉 TP5,就能大体知道该 CMS 的请求流程,而 TP5 中有个很有用的东西叫 路由,通过相关 URL 快速定位源码代码位置。

当然我们在本地部署好站点后,在前台任意点击一个URL:

http://demo.com/index.php?s=/helpcenter/index&id=1

其对应的文件路径为

application/shop/controller/Helpcenter.php

方法则是该文件中的 index() ,参数为 id

我的习惯是通读代码,所以让我从中找到了很多有意思的地方。

前台两处任意文件删除

一次删除一个

问题代码位于:

application/wap/controller/Components.php

方法:

这段代码非常直白,居然还是 public 方法,未做任何校验直接删除 post 参数提交过来的文件路径。

我当时看到这里直接是懵逼的,开发新手也不会写这样的代码吧?

删除安装锁文件

Payload:

http://demo.com/index.php?s=/wap/Components/deleteImgUpload

Post Data:

imgsrc=install.lock

权限够的话 imgsrc 参数中如果加 ../ 是可以删根目录上级文件夹中文件。

一次删除多个

问题代码位于:

application/wap/controller/Upload.php

方法:

同样的,依然是 public 方法,未做任何校验直接删除 post 参数提交过来的文件路径。

删除安装锁文件

Payload:

http://demo.com/index.php?s=/wap/Upload/removeFile

Post Data:

filename=install.lock,test1.txt,test2.txt

权限够的话 filename 参数中如果加 ../ 是可以删根目录上级文件夹中文件。

前台两处 sql 注入

第一处在 getGoodsListByKeyWord 方法

问题出现在 application/shop/controller/Goods.php 文件中,我们直接看到代码。

直接放到 sqlmap 中跑一遍试试:

可以看到,这是一处报错回显的 sql 漏洞。

我们来验证一下。

OK! 我们现在可以直接用 sqlmap 跑库了。

第二处出现在 promotionZone 方法

nice! 这里出现了一个无单引号闭合的 SQL 拼接,我们持续跟进一下。

先用 sqlmap 测试一下

666666,可以看到攻击是成功的。


其实到这里就应该结束了,我也不知道为什么我要接着写下去。 麻烦的不是如何找漏洞,而是你需要将这些知识通过语言整理出来,让阅读的人能理解,能学习。

安装好 xdebug 后,我们来跟踪调试一波,定位下问题是如何出现的,在那出现的。

当然我们输入:

http://cms.com/index.php?s=/shop/Goods/promotionZone&page=1&group_id=1 AND (SELECT * FROM (SELECT(SLEEP(5)))uNuh)

这段 Payload 后,发现已经中断生效。

接着我们开始单步跟踪。

进入到 thinkphp/library/think/db/Query.php 文件中的 where() 方法。

前台上传 getshell

问题代码位于:

application/wap/controller/Upload.php

中的 uploadFile() 方法。

然后我们来看看验证函数:

上传文件的目录在代码中也有给出:

本地构建 Payload :

Payload脚本

hacker.php

    <?php phpinfo(); ?>

Payload.php

有意思的地方

最后还知道了一个开发人员手机号,并确认其姓名。要不要给他打个电话拜个年?

本文分享自微信公众号 - 信安之路(xazlsec),作者:0x584A

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • php 后门隐藏技巧

    辛辛苦苦拿下的 shell,几天没看,管理员给删了。这篇文章是我个人小小的总结,很多方面都建立在自己理解上思考,如果你有更好的思路,各位表哥们也可以分享。

    信安之路
  • PHP 文件包含漏洞姿势总结

    文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注...

    信安之路
  • 代码审计之 UsualToolCMS

    写到一半全部删了,觉得自己还不够经验写这样的东西,以免自己的文章对各位大佬带来误导。

    信安之路
  • 历史上争议最大的编程语言是谁?

    php估计目前是存在争议最大的语言,争议声一直不绝于耳。这是一门优势巨大,缺陷也一样巨大的编程语言。一直在争议中进度,企业招聘的岗位也是越来越多,这么多人参与进...

    程序员互动联盟
  • PHP命令行模式

    1.PHP运行指定文件 php my_script.php php -f my_script.php 2.命令行直接运行php代码 php -r ‘pri...

    苦咖啡
  • 谷歌hacker批量寻找可注入网站

    本次给大家发一些可以提取有注入点的网站的关键词,所利用的 也就是大家所熟悉的谷歌hack技术,下面是部分关键词,工具的话用一些关键词提取工具就好了。

    网e渗透安全部
  • Google SQL 注入搜索列表:2018最新版

    这是一个Google注入查询列表(傻瓜式),更新于2018年;根据一些关键字和URL结构,可批量查询出存在安全隐患的站点。

    HACK学习
  • Windows 8 IIS中配置PHP运行环境的方法

    这篇文章主要介绍了如何在Windows 8中通过iis8配置php运行环境,需要的朋友可以参考下

    习惯说一说
  • Mac系统配置php环境

    此文是之前在CSDN上写的一篇博客,今天心血来潮,将其转移至简书平台,原文链接:http://blog.csdn.net/wj_november/article...

    代码咖啡
  • PHP获取HTTP body内容的方法总结

    有时候我们获取数据时需要根据Header中的格式来解析,比如上传一个json而不是一个文本。这里用到了 php输入|输出流 的概念。

    猿哥

扫码关注云+社区

领取腾讯云代金券