发卡平台评估报告

概述

发卡平台是一套基于PHP+MYSQL为核心开发、免费、开源的发卡系统。支持支付宝,财付通,各类点卡等支付方式,适合个人或者企业搭建发卡平台。

发卡平台存在SQL注入、XSS注入、无密码登录、文件上传和文件解析漏洞。

漏洞描述

1.前台卡密购买sql注入,相关文件:./ajax.php及./getkm.php

2.前台卡密购买xss注入,相关文件:./ajax.php

3.失效的访问控制

4.信息泄露

5.文件上传

6.代码注入,相关文件:emailConfig.php

SQL注入

前台购买卡密sql注入(1)

概述:

./ajax.php文件action方法selKM存在用户可操控参数gid未过滤,导致sql注入

漏洞测试:

访问发卡网首页,在购买卡密过程中会对卡密gid进行数据库校验,参数可以通过burpsuite进行拦截,存在时间盲注,效果如下图1,图2

发卡平台 并发 java 发卡平台是干嘛的_php

图 1

发卡平台 并发 java 发卡平台是干嘛的_发卡平台 并发 java_02

图 2

更改gid参数,payload为 1 and (select * from (select(sleep(5)))as aa)-- -,发包之后可明显观察到程序延迟了5秒,证明此处存在sql注入,如图3

发卡平台 并发 java 发卡平台是干嘛的_php_03

图 3

漏洞成因:

Sql查询语句未对可控制的参数进行严格校验,导致恶意用户拦截更改参数导致恶意代码执行,如下图4

发卡平台 并发 java 发卡平台是干嘛的_信息安全_04

图 4

前台购买卡密sql注入(2)

概述:

在./ajaxphp下,action方法create处存在sql插入语句,未对用户可控参数rel进行控制,导致sql注入

漏洞测试:

访问发卡网首页,在购买卡密过程中会对参数进行数据库插入,参数可以通过burpsuite进行拦截,存在时间盲注,效果如下图5(继上一个漏洞之后继续拦截数据包即可)

发卡平台 并发 java 发卡平台是干嘛的_安全_05

图 5

更改rel参数,payload为 '%2b(SELECT CASE WHEN (1) THEN sleep(5) END) ,now(),‘alipay’)-- - ,效果如下图6,程序延时了5秒,证明此处存在sql注入

发卡平台 并发 java 发卡平台是干嘛的_安全_06

图 6

漏洞成因:

用户输入的参数未经过严格过滤导致sql注入,通过构造恶意语句可导致恶意sql语句被执行,如下图7

发卡平台 并发 java 发卡平台是干嘛的_信息安全_07

图 7

前台购买卡密sql注入(3)

概述:

./ajax.php文件未对用户输入参数进行严格控制,导致存在sql注入

漏洞测试:

访问./ajax.php?act=selgo,可发现程序将一些特殊数据打印在浏览器上,如下图8

发卡平台 并发 java 发卡平台是干嘛的_mysql_08

图 8

构造payload,使用火狐浏览器插件进行模仿post提交,payload为tyid=1 union select 1,version(),3,4,5,6,7可发现此处将数据库版本爆了出来,证明此处存在sql注入,如下图9

发卡平台 并发 java 发卡平台是干嘛的_mysql_09

图 9

漏洞成因:

未对用户输入进行严格控制导致用户可控制代码,恶意执行导致sql注入,如图10

发卡平台 并发 java 发卡平台是干嘛的_发卡平台 并发 java_10

图 10

前台卡密查询sql注入(4)

概述:

./getkm.php文件未对用户输入参数进行严格控制,导致存在sql注入

漏洞测试:

访问卡密查询页面,而后拦截数据包,如图11,图12

发卡平台 并发 java 发卡平台是干嘛的_mysql_11

图 11

发卡平台 并发 java 发卡平台是干嘛的_mysql_12

图 12

修改tmp参数,payload为 1’ and (select * from (select(sleep(5)))as a ) – - ,程序明显延迟了5秒,如下图13,证明此处存在sql注入

发卡平台 并发 java 发卡平台是干嘛的_信息安全_13

图 13

漏洞成因:

程序没有严格过滤用户输入的参数,导致sql恶意代码被执行,导致sql注入,如下图14

发卡平台 并发 java 发卡平台是干嘛的_发卡平台 并发 java_14

图 14

危害:

攻击者利用Sql注入可直接获取网站管理员信息,读写文件,拿到网站webshell

修复建议:

1.过滤用户输入的特殊字符,如单引号、双引号等

2.强制类型转换

3.利用mysql预编译机制

前台XSS注入

前台购买卡密XSS注入

概述:

./ajax.php页面action方法create方法未对用户输入参数rel进行任何特殊标签过滤,导致存在存储型xss注入

漏洞测试:

发卡网首页购买卡密,联系方式填写完毕之后,弹出付款框后进行拦截数据包,如图15,图16

发卡平台 并发 java 发卡平台是干嘛的_php_15

图 15

发卡平台 并发 java 发卡平台是干嘛的_php_16

图 16

更改数据包,payload为 ,效果如下图17,图18

发卡平台 并发 java 发卡平台是干嘛的_mysql_17

图 17

发卡平台 并发 java 发卡平台是干嘛的_安全_18

图 18

漏洞成因:

程序未对用户输入的内容进行任何的过滤,导致用户插入js恶意代码,造成xss注入

危害:

1.盗取用户个人信息

2.获取网站cookie

3.蠕虫攻击

修复方式:

1.输入过滤,采用白名单方式或黑名单,过滤用户输入的特殊字符,如<>等

2.输出过滤,使用htmlspecialchars()函数对用户输入参数进行特殊处理

3.使用csp策略,禁用外部脚本

失效的访问控制

未授权访问

概述:

admin目录下文件采用js验证cookie状态,通过禁用js可绕过直接登录到后台

漏洞测试:

访问./admin/index.php,禁用浏览器js可直接登录至后台,如下图19,图20

发卡平台 并发 java 发卡平台是干嘛的_php_19

图 19

发卡平台 并发 java 发卡平台是干嘛的_mysql_20

图 20

漏洞成因:

admin目录下文件皆使用js验证cookie登录状态,可以通过禁用js进行绕过,导致未授权访问

危害:

攻击者直接绕过js验证访问后台,获取网站信息等

修复方式:

使用php后台进行cookie进行验证用户登录状态

暴力破解访问:

概述:

网站后台登录为进行严格校验,导致弱口令漏洞存在,可进行暴力破解

漏洞测试:

访问后台登录页面./admin ,而后使用burpsuite进行数据包拦截,如下图21,图22

发卡平台 并发 java 发卡平台是干嘛的_php_21

图 21

发卡平台 并发 java 发卡平台是干嘛的_安全_22

图 22

使用字典密码进行弱口令爆破,成功爆出密码,如图23

发卡平台 并发 java 发卡平台是干嘛的_信息安全_23

图 23

漏洞成因:

未对密码进行严格校验,导致存在弱口令漏洞存在

修复方式:

1.使用验证码进行校验

2.增加短信验证码

信息泄露:

密码获取

概述:

禁用js绕过cookie验证登录后台后,查看源码,出现管理员密码跳转链接

漏洞测试:

绕过js登录后台之后,打开网页源码,点击管理员配置跳转链接,管理员密码明文传输,如图24,图25

发卡平台 并发 java 发卡平台是干嘛的_mysql_24

图 24

发卡平台 并发 java 发卡平台是干嘛的_mysql_25

图 25

漏洞成因:

源码将管理员配置链接暴露且密码明文出现

修改方式:

1.将密码加密传输

2.隐藏后台跳转链接

文件上传漏洞

概述:

后台上传图像使用白名单过滤,可进行抓包更改后缀名上传动态脚本文件

漏洞测试:

更改后台图片,上传图片马使用burpsuite进行抓包,更改后缀名即可,如图26

发卡平台 并发 java 发卡平台是干嘛的_信息安全_26

图 26

访问图片马位置,发现成功被解析,如图27

发卡平台 并发 java 发卡平台是干嘛的_安全_27

图 27

漏洞成因:

仅使用白名单过滤,未严格控制文件类型导致意外动态脚本文件被上传解析

漏洞危害:

攻击者可直接上传图片马,拿刀网站webshell

修复方式:

1.严格控制文件上传类型

2.文件上传目录设置不可执行

3.站库分离

代码注入漏洞

概述:

系统邮箱配置输出配置错误导致代码注入漏洞

漏洞测试:

访问./admin/set.php?mod=email ,为不更改原有数据结构,故于最后一栏输入payload

');phpinfo();var_dump(//,如下图28

发卡平台 并发 java 发卡平台是干嘛的_信息安全_28

图 28

使用beyond-compare进行文件比较,发现emailConfig.php发生变化,如图29图30,代码被注入

发卡平台 并发 java 发卡平台是干嘛的_发卡平台 并发 java_29

图 29

发卡平台 并发 java 发卡平台是干嘛的_安全_30

图 30

重新访问,出现phpinfo页面,验证成功,如图31

发卡平台 并发 java 发卡平台是干嘛的_mysql_31

图 31
漏洞成因:
错误的文件配置,将用户输入的内容写入到动态脚本文件中导致被意外执行
漏洞危害:
攻击者可以通过这里写入小马,直接获取到网站webshell
修复建议:
1.更改代码配置,将邮箱配置文件写入其他文件
2.设置此目录不可执行权限