HTTP协议中的PUT方法是将指定资源的内容替换为请求中所包含的新内容。PUT方法可以用于上传或更新文件,也可以用于创建新的资源。当PUT方法可用时,客户端可以将文件上传到Web服务器并将其存储为已命名的文件或文件夹。但在某些情况下,PUT方法可能会导致服务器安全漏洞,例如,PUT请求可能会导致服务器存储敏感信息或恶意代码。因此,在一些安全标准中,PUT方法被视为不安全的,很多Web服务器默认情况下是禁用PUT方法的。
[GDOUCTF 2023]EZ WEB
访问页面没事东西,源码提示就在眼前,看到了/src,访问是个py文件

import flask
app = flask.Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return flask.send_file('index.html')
@app.route('/src', methods=['GET'])
def source():
return flask.send_file('app.py')
@app.route('/super-secret-route-nobody-will-guess', methods=['PUT'])
def flag():
return open('flag').read()

这里我访问chat,我太菜了
这是一个使用 Flask 框架编写的 Python 代码,它创建了一个 Web 应用程序,并定义了三个路由:
- "/" 路由:使用 GET 方法返回 "index.html" 文件。
- "/src" 路由:使用 GET 方法返回 "app.py" 文件。
- "/super-secret-route-nobody-will-guess" 路由:使用 PUT 方法打开名为 "flag" 的文件并将其中的内容返回给客户端。
可以看出,第三个路由是一个秘密路由,只有当请求方法为 PUT 并且路径为 "/super-secret-route-nobody-will-guess" 时才能访问。它会打开名为 "flag" 的文件并将其中的内容返回给客户端。这可能是一个漏洞,因为未对该路由进行身份验证或授权检查,攻击者可以通过篡改 HTTP 请求来绕过安全控制,获取敏感信息或执行恶意操作。
PUT请求?用bp抓包,改一下请求方式,然后改文件路径在发包,就返回falg了

[NSSRound#1 Basic]basic_check

Dir没扫出来有用的东西

Nikto扫描扫描出PUT提交
这和上一题也是put提交,那么用bp抓一下,上传个shell?
上传成功

找到NSSCTF{0f3453aa-6199-442e-bb08-04d3cd2a2515}

PUT方法滥用:Flask应用中的安全漏洞与利用

文章讨论了HTTPPUT方法在Web应用程序中的使用,特别是通过Flask框架。PUT方法可能导致服务器安全漏洞,如存储敏感信息或恶意代码。示例代码显示了一个未受保护的PUT路由,允许任何用户通过PUT请求读取flag文件内容。Nikto扫描检测到PUT提交,提示可能的安全问题,提到了利用此漏洞上传shell的可能性。
494

被折叠的 条评论
为什么被折叠?



