我有一台 WS2008 x64 服务器,其 80 端口上运行着 NodeJS 应用程序。服务器不断收到来自不同 IP 地址的查询,这些 IP 地址试图将我的应用程序用作代理。NodeJS(使用 Express 模块)回复 404 错误,但在会话初始化期间失败(使用 Everyauth 模块)。
因此,我把问题分为两部分:
我需要找到如何模拟攻击者请求的方法;
找出这些请求被错误处理的原因(这个问题我会在另一个论坛上询问)
以下是攻击者的典型请求:
GET http://www.baidu.com/ HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: http://www.baidu.com/
Host: www.baidu.com
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
我尝试使用 cURL 重新创建它(在主机中将 www.baidu.com 替换为我的服务器的 IP 地址)
curl -H "Host: www.baidu.com" -H "Referer: http://www.baidu.com" -H "Accept-Encoding: gzip, deflate" -H "Proxy-Connection: keep-alive" -H "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" -H "Content-Type: application/x-www-form-urlencoded" -v -X GET http://www.baidu.com/
但它被处理为
GET / HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: http://www.baidu.com
Host: www.baidu.com
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
所以我的问题是 - 我该如何表达http://www.baidu.com代替/(斜线)在 GET 请求中?
答案1
所以我的问题是 - 我该如何表达http://www.baidu.com而不是 GET 请求中的 / (斜杠)?
您想要的请求不是坏请求,而只是代理请求。要创建它,只需将目标主机指定为代理。除此之外,curl 可能不是生成真正坏请求的合适工具。