天目MVC审计二

本文章由二农戏猪编辑

审计控制器

从上一篇审计完了入口文件和搞清楚路由规则之后,我们开始正式审计控制器。

Home目录

app/home/index.php开始审计,前面没什么可说的,但是注意这里,虽然它是判断不是PC登陆时候执行,但是我们可以看到它调用的查询方法,感觉很熟悉,比较像think里面定义的查询方法,我们回想起上一篇审计的时候,审计到的过滤机制,我们全局搜索一下where(,一个一个去查看,看看是否有where条件为两个参数,或者int类型。

image-20210216170353153

image-20210216170648309

后台SQL注入

功夫不负有心人,我们在此处,发现$sid未被单引号包裹,并且未被强制转换未int类型。目录为admin\controller\special.php,我们尝试复现。好的一处SQL注入漏洞。

image-20210216172021865

image-20210216173022873

前台SQL注入

正当我以为没有前台SQL注入的时候,突然间,有发现了一个位置。突然间想起一句话:缘,妙不可言。

找一下。看看$sid怎么传进来的,是否可控

image-20210216215919794

全局搜一下这个get_category_list(),发现在home/controller/special.php中,category()这个方法中,通过GET传入的sid这个值,虽然这个方法中对$sid加有单引号保护,但是在调用get_category_list()时候就是在裸奔,好的,复现一下

image-20210216220422747

image-20210216220626719

完全ok。前台到这里就审计完成了

前台XSS

home\controller\articles.php,articles方法这个位置htmlspecialchars_decode,这个函数将实体化的符号进行解码,突然就引起了我的注意,因为我们在前面审计到,它会将传入的值进行html实体化编码,然后存入数据库。这个位置它将数据又进行解码,菜鸡的直觉告诉我,一定是有问题的,我们找一下$data这个变量是哪里来的

image-20210217211349970

在这个32行我们看到是从这个数据库中查询得来的。

image-20210217211758408

image-20210217214001469

我们找一下是如何写入的,这里因为内容太多,用下debug看一下查询语句:"SELECT * FROMtemmoku_articleASAINNER JOINtemmoku_contentASBON A.aid =B.aid WHERE A.aid=3 ORDER BY A.aid DESC LIMIT 1"在回溯的时候我犯了一个很难受的错误,我去搜索jab.'content,没有搜索到,怀疑人生ing,但是,我后来想起来,搜索jab."content才定位到位置,难受。

在这里,admin\public_class\article.php中,发现写入jab.content数据库。继续回溯

image-20210217220323286

发现user\controller\articles.php出现调用,往上看,add方法。

image-20210217220635477

注册账号并且开启发文章权限。

image-20210217220747537

存储型XSS复现成功

image-20210217220951476