某shop存储xss

漏洞影响版本

v4.0.7


代码分析

这个cms的目录结构大致是这样:

问题出在核心文件中includes/init.php:

可以看到这套软件是多入口的,选择index.php能看到首先会包含一个核心文件位置是includes/init.php,如下图:

跟进去看看在init文件的第215行

跟踪visit_stats函数

可以看到下面的doamin和path只对它进行了转义,但是这个对于xss来说是防御不足的。往上可以看到domain和path分别是http头里面的referer传递进来的,看到逻辑是将第九位开始的字符以‘/’为分割所以可以选择在末尾加一个'/'

数据库中domain也是够写payload,回溯上去这一套cms有一个防御文件safety.php

但是他对xss的防御并不全面所以我们可以使用这个payload"><iframe src=javascript:alert`xss`>/来绕过,最后查看触发点在管理员后台的流量统计处


代码为flow_stats.php处277行从数据库中取出并拼接:

那么在写入之前那个visit_stats的进入条件就是cookie中不能有任何的ecs_id,所以我们清空cookie就好

最后整个利用过程:

1. 只要有包含init的文件都可以,选择index.php为例子

cookie清空 在referer处写入payload

可以看到数据库中写入了payload

2. 后台管理员触发


3. xss后的利用

后台也有getshell的地方 也可以直接操作sql,还可以给自己加一个管理员,或者是给自己的账号加很多的钱,所以后台的利用空间是非常大的,可以自己发挥想象力

比如sql操作是cms自带

posted @ 2020-04-14 12:50  陈院长  阅读(130)  评论(0)    收藏  举报