某JA模块注入漏洞分析

前言

JA模块注入漏洞分析

漏洞分析

1.POC

先注册一个账号,然后在用户的地址管理处,添加新的地址信息,并且payload为{$=phpinfo()}

image-20200110021037161

接着访问../wdja/passport/address/manage.php

image-20200110021257624

2.漏洞分析

这是一个模块注入,导致的代码执行漏洞,从payload来看这里没有做出过滤等操作。

首先看到index.php,并且结合写入地址信息时,访问的url中的action=add,在index.php中调用了wdja_cms_module_action()

image-20200110021950156

跟进看一下,这里可看到action=add的时候,将会调用wdja_cms_module_adddisp()

image-20200110022122198

跟进wdja_cms_module_adddisp()看一下,可见这是在往数据库中添加数据

image-20200110022910798

我们在sql语句后debug一下,看看这个语句操作的是哪个数据表。

image-20200110023054254

然后回显是如下数据表。也就是说用户的地址信息等将会被存入这个表中。

image-20200110023149973

然后我们看向manage.php,然后我们跟进,$mybody是我们回显phpinfo()的位置

image-20200110023642939

跟进wdja_cms_admin_manage()

image-20200110024319860

image-20200110024402703

然后跟进wdja_cms_admin_manage_list(),这里也用die()来看一下执行的sql语句是什么。

image-20200110024521969

image-20200110025733103

同一个数据表。

继续看到最下面,跟进ii_creplace()

image-20200110025902644

image-20200110030001499

ii_creplace()中对传入参数的要求就只有要满足{\$=(.[^\}]*)}

跟进ii_eval(),发现漏洞触发点。

Author: 我是小吴啦
Link: http://yoursite.com/2020/01/09/%E6%9F%90JA%E6%A8%A1%E5%9D%97%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.