熊海CMS_1.0 代码审计
0x01 使用seay源代码审计系统进行审计
扫描到了很多个可疑漏洞,不过工具都有一定的误报,下面我们就逐个进行验证
0x02 /index.php文件包含漏洞
查看源代码,我们发现程序通过GET方法接收文件名,并且只做了一个addslashes(返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL
字符)。),然后直接放在了include函数里面了,相当于引用 files/xxxxx.php 文件,这里如果我们通过其他方法在根目录上传一个脚本就可以直接包含:
/admin/index.php中的文件包含也是类似
0x03 /admin/files/login.php SQL注入漏洞
查看login.php的源代码
直接通过POST方式接收user、password,并且没有做任何过滤。然后先查询用户名,如果用户名存在,就将将POST得到的密码进行md5,然后和数据库中对应的密码进行比较。这样的话,虽然我们可以通过万能密码admin' or '1'='1对用户名绕过,但是密码没有方法绕过,万能密码的方法就不可行了。 不过由于没有做任何过滤,我们还是可以执行SQL语句的
比如:
admin' or sleep(10) #
这样我们就可以进行布尔盲注
经过测试,发现也存在报错注入
admin' or updatexml(1,concat(0x7e,(select @@version),0x7e),1); #
0x04 /admin/files/editcolumn.php、editlink.php、editsoft.php...... SQL注入漏洞
都是类似的漏洞。POST方式接收了参数之后,没有进行然后过滤,然后直接执行了UPDATE/DELETE/INSERT语句,我们可以直接进行报错注入
payload:
' or updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '
0x05 /inc/checklogin.php 越权漏洞
inc目录下的都是配置文件,很重要,要每一个文件都仔细查看。
checklogin.php
接收cookie中user的内容,如果user字段为空,则跳到登录页面
这样的话,我们打开一个后台页面,抓包,设置cookie中的user字段为admin会怎么样呢?
发现我们直接进入了后台,并且只要保证每次cookie中user参数都有值就可以访问后台的所有内容,因此存在垂直越权漏洞。
0x06 CSRF漏洞
这里的内容管理中有一个删除文章的功能,没有做csrf token、验证码等防护。
点击后抓包得到url
http://192.168.219.132/admin/?r=wzlist&delete=15
退出管理员账号,根据之前的越权漏洞分析,这里应该会转跳到login的界面,试一下,果然如此。
然后重新登陆管理员后点击该url,真的删除了该文章
0x07 /files/contact.php 存储型XSS漏洞
前台留言板没有进行XSS过滤,后台管理界面也没有进行过滤,因此产生了存储型XSS,而且有针对性的攻击管理员,属于比较危险的一类XSS了