利用openrestry动态修复部分漏洞

admin 2024年7月1日08:20:26评论3 views字数 1356阅读4分31秒阅读模式

背景

安全风险频出,在甲方如何在不影响业务的情况下修复安全漏洞是一个经常苦扰的问题,因为业务优先,业务在跑,安全没太大的权利责令业务停机修复漏洞,当然及其严重的漏洞除外。本文将尝试通过openrestry来动态解决点击劫持漏洞。

点击劫持漏洞介绍

点击劫持漏洞简单讲就是自己构造一个网页,然后用iframe嵌了其他网页,伪造的网页引诱用户点击,当用户点击时实际上是点击到了前面的iframe的网页。找了张网上的图来说明下:

利用openrestry动态修复部分漏洞

可以拿以下html来测试:

<!DOCTYPE html><html><head>   <meta charset="UTF-8">     <title>点击劫持</title><style>  iframe {    /*窗口的大小*/    width: 2500px;    height: 1600px;    /*定位绝对位置*/    position: absolute;    top: -195px;    left: -740px;    z-index: 2;    /* 从视图上隐藏 */    -moz-opacity: 0.5;    opacity: 0.5;    filter: alpha(opacity=0);    }    /*按钮的位置*/    button{      position: absolute;      top: 120px;      left: 730px;      z-index: 1;      width: 100px;  }</style></head>     <body>          <button>test</button>          <iframe src="https://www.baidu.com"></iframe>     </body></html>

利用openrestry动态修复部分漏洞

             
修复方案的话也比较简单,通过设置响应header,添加
X-Frame-Options解决。

openrestry安装

安装也很简单,根据官方文档来就行,就不多赘述了:             
https://openresty.org/en/installation.html

新增lua规则

现在大家多使用openrestry而不纯使用nginx的目的是因为openrestry支持lua脚本,可以自定义很多东西。在针对漏洞修复的情况,也可以依托于openrestry的lua脚本做到“热更新”。本文中针对点击劫持漏洞,当然也可以通过lua脚本完成,通过lua脚本可以设置给所有经过openrestry的网站都自动添加X-Frame-Options头,而不用让业务各个都改代码。              
lua脚本文件内容如下:

ngx.header["X-Frame-Options"] = "DENY"

openrestry配置如下:

lua_code_cache off; # 保证lua脚本修改后无需重启openrestry也可以实时生效              header_filter_by_lua_file /usr/local/openresty/lua/set_headers.lua; # 设置在响应头过滤阶段执行脚本

这时候再尝试iframe目标网站,发现已经拒绝嵌入了:             

利用openrestry动态修复部分漏洞

curl也可以看到新增的header头:             
利用openrestry动态修复部分漏洞    

总结

本文通过openrestry来动态修复了点击劫持漏洞,一些前端漏洞都可以通过此类方法解决,从而解决“业务不配合”的问题,做到“热更新”修复漏洞。    

原文始发于微信公众号(中国白客联盟):利用openrestry动态修复部分漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月1日08:20:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用openrestry动态修复部分漏洞https://cn-sec.com/archives/2902504.html

发表评论

匿名网友 填写信息