Background
我的所有审计的文章都会是思路->实践测试->思考,这也是我觉得这应该是一个审计文章带给你的东西,前几篇我会简单说下安装的过程,后来安装可能会省略
准备工作
/uploads/install/index.php
可能会出现空白 phpstudy设置显示目录即可,mamp下我配了很多东西也没成功 于是干脆放弃搭建,把注意力更集中在漏洞点上
开始挖掘
在安装的时候就在想,如果安装文件能够随意访问,并且网站没什么限制的话,很容易出现重装漏洞
我理解的重装漏洞,安装时候没有设置条件或者条件弱存在可绕过的可能
看一下代码
你可以看到有检查install.lock文件
没法利用?但如果我们挖到个能删除文件的洞 搭配有没有可能完成重装?
全局搜索敏感函数unlink()
看函数也应该优先看
/uploads/admin/article.php下面
$_POST很明显是可控的,这个时候我们当然可以直接黑盒测试,但是因为我在进行代码审计,我跟一下配置文件看看对全局变量是否有做什么处理
common.inc.php
首先看到gbk,宽字节注入很容易出现的问题了
然后下面他对几个全局变量进行处理,如果你仔细看一遍会发现 其实是没有过滤$_SERVER的
并且任意删除文件实锤了,但是貌似是后台洞要登陆
然后我们仔细看看像adddslashes这几个函数
其实一般这种都是他们自己进行一些改进的,本质上还是addslashes函数
把数组每个都过一遍addslashes 其他正常过一遍addslashes
addslashes+宽字节 很明显的注入点警告,那就直接定位和数据库交互的地方
这里面有两个办法,第一个是业务逻辑在哪里可能会出现sql注入,第二个就是直接搜索数据库调用函数
/ad_js.php下面
可以看到用双引号拼接,trim()去除了空格而已,+--也直接可以用
这里面很多文章说的是用双引号,单引号用不了 没问题 但其实这里面本质还是数字型注入,并不需要闭合
刚才说到没有对$_SERVER进行过滤 搜索ip相关的 xff头里面可控
guset_book.php里面有关于ip的SQL语句
评论区存在ip 在那里注入就行 因为也是正常的注入 不多说了
刚才我们说到利用那个点要后台,我们移步admin/login.php
对登陆的账号密码只进行了trim
查表的时候发现username用了单引号,因为用的gb宽字节
所以可以宽字节注入
再看看功能点这个小型cms,其实有很多好玩的,比如评论区是否存在xss这种问题
评论的内容采用filter_data()函数过滤 没有进行标签 可以触发 onerror这种问题
谈谈其他文章里面无用的点
其实并不能说是无用,是因为随着时间的推迟,这个cms太老了,真的没啥用了
比如这个版本低于5.3 magic_quotes_gpc=off可以%00截断
总结
还有很多洞,但是没啥想法了,cms还是较为简单的,比较容易出现的点也就这些了