某开源商城代码审计

admin 2021年12月24日06:31:06评论115 views字数 907阅读3分1秒阅读模式

为了审计而审计,原文发布已在奇安信社区发布:

https://forum.butian.net/share/402


工具:

Phpstrom、Seay源代码审计系统


步骤:

自动审计:

找到关键点,这是在后台部分的备份功能。


某开源商城代码审计


该点存在183行处,这三行代码的意思:

打开(fopen)storage目录下的backup目录的(filename)文件,并将内容optput)追加到这文件里,然后关闭文件


某开源商城代码审计


某开源商城代码审计


而请求的方式是由

system/library/request.php下的构造参数组成,并将数值放到clean方法进行循环,而且在46行的进行了htmlspecialchars实体化编码。


某开源商城代码审计


继续回到backup.php页面的backup方法,在124行对$table进行了一次判断,其判断的意思是要table参数=表名才能进行下一步。


某开源商城代码审计


getTables该方法存在

admin/model/tool/backup.php


某开源商城代码审计


继续回到backup.php页面的backup方法,第160行这里的(output )写入,这里的意思是将指定表名,以及内容进行拼接操作,而参数fields是指定表的所有字段内容。


某开源商城代码审计

某开源商城代码审计


某开源商城代码审计


到了这里,应该有的师傅想到了可以用存储xss进行写shell,这里说一下坑,前面也提起过,所有的请求都是通过了system/library/request.php的clean的方法,而该方法会一直将所有数组的键值进行循环直到所有的值都用htmlspecialchars函数过滤。


寻找利用方式:

首先备份一份下来,看看内容有什么,以及什么后缀,这里的备份默认是日期时间,sql后缀的,而且这里也是我们可控的点。


某开源商城代码审计


某开源商城代码审计


导出来后,文件内容是这样的,导出指定表所有的字段参数内容,仅限于INSERT 语法,这里就好办了,既然是INSERT 语法那就改参数呗。


某开源商城代码审计


改成带有shell的sql语法:


某开源商城代码审计


然后上传该恶意文件并恢复,然后再进行导出.php后缀的文件,导出完成后就直接访问


http://127.0.0.1/system/storage/backup/2.php。

某开源商城代码审计

某开源商城代码审计


可以通过百度搜索opencart直接下载源码


本文始发于微信公众号(亿人安全):某开源商城代码审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月24日06:31:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某开源商城代码审计http://cn-sec.com/archives/462981.html

发表评论

匿名网友 填写信息