getshell
漏洞代码位于 XiaoCms\admin\controller\uploadfile.php
看一下上传方法
可以看到定义了上传后缀等一系列操作,其中画线处调用了set_limit_type和upload方法,跟进看一下,在XiaoCms\core\library\upload.class.php中
可以看到upload又调用了parse_init方法,该方法同样位于upload.class.php中
在该方法中又调用一个关键的get_file_ext,同样在此页面
至此我们代码基本分析完毕,可以看到层层调用中存在逻辑错误,虽然对文件后缀做出了限制,但是是攻击者可控的,因此我们只需将type设置为php即可,POC如下:
上传一句话后可成功获取地址
任意目录删除
这里有个数据备份,一般这种地方很容易就出现漏洞
选中备份后点批量删除,可以抓包看一下
可以看到是在database.php中,调用了import方法,我们追踪去看一下
文件位于XiaoCms\admin\controller\database.php
其中画线处为关键,可以看到并未对我们的输入做出限制,也就是说可以使用../等,因此此处存在任意目录删除,先在根目录新建目录1.
CSRF
经过测试存在存储型XSS与CSRF漏洞,这两个漏洞可以相互配合,比如新建新闻处存在XSS,因此构造CSRF表单提交即可