php study 直接显示代码_入门KKCMS代码审计

一、安装

安装过程不再赘述,安装后打开站点如下图所示
按CMS的介绍可以用来发卡或者来采集影视进行播放
由于是新手导向,所以可能会比较详细(入门)

4269304753334b91e315f13e03d0eb51.png

其中部分文件

472c744c0df0ffa60f31985ce0448a53.png

二、验证码重用

对比session和传入的verifycode是否相等

91f64424066f9c136f8ee37cab4c51d8.png

每次失败访问后,都会进行刷新跳转,然后重新执行一次JS代码,但是由于Burp默认不解析js,所以这里存在验证码复用的漏洞

c51566f7dfb6452af3cc6a5394f8c232.png

搜索此参数,发现只在verifycode.php中才存在 $_SESSION['verifycode']
生成0——9的随机4位验证码。

f9dcb9fb17fd77a040034097219d970f.png


此外,值得一提的是,许多站点存在验证码重用漏洞所用的代码和使用方法都和本文的案例一样。


三、前台不能拿shell的上传漏洞

由于此cms默认存在的编辑器为kindetior,并且easy代码审计显示存在一个文件上传

5644693c23919551b157b6e54cf682af.png

查阅代码,发现存在可以直接上传html页面,txt等页面

b97045b78ed07389483188b796d5001c.png

更详细的可以查看 https://www.cnblogs.com/backlion/p/10421405.html,本文不再赘述。


四、新手SQL注入采坑:

在admin/login.php 后台登录的地方看到a_name 和 a_password 没有经过处理就带入SQL语句中
以为存在后台万能密码

1ad55d71a1bdf209b6a5605c48bbf657.png

尝试万能密码Payload无果 头疼ing!!
尝试sqlmap 进行测试无果 头疼ing!!!
最后看了一下easy代码审计系统里自带的MySQL监控发现对引号进行了转义

65db54e443e023c266388849654b86f2.png

可是查看上面的代码又没有发现什么处理传参的地方,最后才在上方注意带包含了一个inc.php

59b9eb99dd0f493ac278c34dd083214c.png

inc.php的内容

eae0f645f5ba1530dce72c1700ca9977.png

我们分别进入这四个文件进行审计,最后在library.php中发现

d5094c20d7a0c7c6b0a3749dda9c8f5b.png

意思大概就是没有开启魔术引号的时候会将上述传参加上addslashes,因此在这里的们的双引号自然就会被加上反斜杠了(addslashes并不是万能的防护措施,具体可以去查阅百度)


五、前端SQL注入

输入一个引号发现回显不一样,审计此文件 /vlist.php

443cc2f84cd60242f23f811ac2659525.png

可以的清楚的看到没有任何防护措施,而由于传参方法为数字型,因此也没有使用双引号进行包裹,直接进入sql语句进行拼接

a427b88c3c3a8d0ab9e29948b6f14b29.png

看到没有任何防护的措施直接上Sqlmap
另外此处其实是有上了如采坑点所说的addslashes的,但是由于没有使用双引号将$c_id包裹起来,所以我们无需使用双引号进行闭合,addslashes也就没有起到作用了。
(这里手工注入的时候,不好进行判断,因为他默认c_id会等于0,这会给我们的输入造成一定的的干扰)

$result = mysql_query('select * from xtcms_vod_class where c_pid=0 order by c_id asc');

六、后台SQL注入

进入后台,随便点点,寻找与数据库交互的地方(尤其是传参数为数字型的参数,因为我们在前面已经发现字符型的参数使用双引号包裹,而存在的addslashes会阻止一切字符型SQL注入),发现在会员管理处存在id=1

ab1d3664789a8ec7ba3d0e905606c5df.png

id=1 and 1=2

7ca51d6adea95908c06376d4a72a00ac.png

id=1 and 1=1 一个非常明显的sql注入漏洞

93a7a666d8dba492d9d98a857d219dc6.png

进入文件中进行查看,直接进行拼接

ee1ca3351c9c02c2f4348aaf4cb317bc.png

使用sqlmap进行注入,纳尼!这么明显的注入居然不存在???

da4dbacd5b5b9b2cf944c5badb5a6965.png

不过我们可以通过自己判断来确定存在一个盲注,确定当前数据库的第一个字母为k
盲注代码不再赘述,这里仅做证明

669b95861083ceb64c4d0fb2d4a6316e.png

全后台 delete注入

http://192.168.49.1/cms/kkcms/admin/cms_usergroup.php?del=2%20and%20sleep(5)

f627016c76b1965f7535e440f3e44ebc.png

而后台的代码很简单,直接引入数字型的del参数,带入数据库,整个后台的删除功能都是这样写的
存在于整个后台文件的共12个文件存在delete注入

4a6e0e87b46514b10ebca85a1c061dae.png

七、多处XSS漏洞

1、随便点击一个页面,寻找存在的get请求的参数,这就是我们寻找XSS漏洞的突破点

其中已发现的存在以下同样用法的XSS
templatewapianmovie.php
templatewapiantv.php
templatewapianzongyi.php
templatewapiandongman.php

2、点击某处URL发现URL存在m、cat 、page 等参数

de7f4c0dcf44cbfb055b8e0718e5b4e3.png

3、我们先查看movie.php 里的内容,发现包含了三个文件

c4565571e926304da066319386f88d7b.png

4、跟进 include('template/'.$xtcms_bdyun.'/movie.php'); 中的$xtcms_bdyun是什么
全局搜索$xtcms_bdyun 发现为数据库中system表的某个字段

11b2a1b9c6829adfc794fa6c5952f1b7.png

d764ae8f48047ebedbf708fe0b2b6922.png

5、定位代码页面在template/wapian/movie.php,存在变量m,没有发现echo输出

8718472a1bea06674b0f7adf9e281be9.png

6、只能根据页面关键字进行二次定位

bcee9e72dae291ce82419493e5c4a380.png

7、根据页面文字信息进行定位,终于发现了相关的echo信息

f60e7a1e84e8ba0837fd293772a164c3.png

8、根进getpageHtml函数 文件在system/function.php,其实代码写的有点乱,看不大懂,但是我们发现它并没有对传参进行完整的过滤(上文SQL踩坑处的addslashes不足以过滤xss),因此也就造成了XSS漏洞

35438e36acd586645efc943bd4eb0d21.png

d1667ea7b6546684c8fa8ceb003b3a5d.png

成功弹框

e5b635ff4d05d46472b848569d4f3aa7.png

此外,另外存在几处XSS,其原理也和上述XSS类似,输出点都在page点例如:cat参数 存在XSS

f594b27f4e0de322a1dd013fb52f53fd.png

area参数存在xss

3c864e812995ee9c6d00724dd84273ef.png

八、留言板处前端+后端XSS双杀

在我决定弹反射型XSS弹到怀疑人生的时候,我陷入了沉思,我觉得应该要弹一个存储型XSS才够,因此我苦寻良久(easy代码审计工具中没有将可能存在存储型XSS漏洞的这个点显示出来),最后终于在book.php找到了(在首页上乱点没点到)

打开页面是一个留言框

7ba6aa91cf96182a784ec8b757c6387c.png

对代码进行审计发现需要我们传入的内容需要存在汉字(x7f-xff)
如果不存在汉字,则弹出内容不合法
(此处的验证码无法显示,我们作弊一下跳过验证码验证,将验证码字段的!=改为==)

f839f8cc206a1d220d779dfad1261fc6.png

通过正则的校验后,直接进入数据库,并且包含了template下的book.php文件

77931d64bcba79ba41b88441381b9409.png

跟进此文件,发现从数据库中取出,然后直接echo,产生xss

2bd0a0f7f2eb5199bf739b5973d34e8d.png

payload: 我<img src=1 οnerrοr=alert(/xss/)>

e5391f39f550df27a342a0c09da0f580.png

后台的留言板块文件为cms_book.php

4dbbaa417f4acd3f425eb768c3f8f713.png


同样从数据库中直接取出数据,因此造成后台存储型XSS

53d5a7872928b5a04d75b276a78c0267.png

ada289d908d4aefb51e3e0a98cac295f.png

九、第二个存储型XSS

在youlian.php下存在可以提交友情链接申请的功能

9a2d4ec5374eda61edd9278401f6eb98.png


同样是经过一个addslsashes的过滤然后传入数据库中,这同样无法阻止XSS

33338984a140f7fd78ec3c921c8ad6e7.png


传入后端 友链管理处,触发存储型XS

0376de14849a4396123451e6c6cd2c4c.png

十、数据库信息泄露

本来是要测试是否存在重装漏洞的,却发现存在一个data.sql
打开网页发现存储的是默认创建的表结构和数据库信息,这是属于一个相对严重的信息泄露漏洞

92717029398c20f586a29c7fb502bbe8.png

十一、总结:

  • 1:新手在入门审计CMS的时候,要有思路的去寻找漏洞点,不要看到一个点觉得存在,然后就跳跃性-的转移文件审计代码,这样会导致效率很低。
  • 2:在审计CMS的时候,多注意一下是否默认存在开源软件或编辑器。
  • 3:seay代码审计工具里的MYSQL查询语句监控真的非常好用!
  • 4:注意一些非HTML或者PHP后缀的文件,可能存在信息泄露漏洞。
  • 5:审计CMS时,可以先从重装文件入手,因为这是整个CMS的开端。
  • 6:一个十分寻常的XSS背后可能经过了多层跟进,代码审计的魅力就在于此。
  • 7:本文比较简单,还望各位大佬多加海涵,也希望能够帮助一些刚入门代码审计的表哥们!

转载于先知社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值