You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Squid代理执行Nmap扫描失败的技术问题求助

解决通过Squid代理扫描目标80端口(含Shellshock漏洞)的问题

首先得明确你的环境限制:你只能通过虚拟机的3128端口Squid代理,访问它自身的80端口,其他端口的扫描请求要么被Squid拦截,要么因为扫描方式不兼容代理而失败——这就是你用Nmap扫3128/3000端口显示filtered、Nikto扫描出错的核心原因。

下面是针对性的解决步骤:

1. 用Nmap适配HTTP代理的扫描方式

Nmap的常规端口扫描(比如SYN、Connect扫描)是直接发送网络层数据包,没法通过HTTP代理工作。你需要用Nmap的代理参数+应用层漏洞扫描脚本,直接针对80端口的Shellshock漏洞检测:

执行这条命令:

nmap -p 80 --proxy http://192.168.0.105:3128 192.168.0.105 --script http-shellshock --script-args uri=/cgi-bin/your-cgi-path.cgi
  • 如果你不知道具体的CGI路径,可以去掉--script-args部分,脚本会自动尝试常见路径;
  • -p 80锁定目标端口,避免代理拒绝其他端口的请求;
  • --proxy参数明确指定Squid代理的地址和端口。

2. 修正Nikto的代理配置

Nikto扫描失败通常是因为代理参数没配置正确,你可以直接在命令行指定代理:

nikto -h 192.168.0.105 -p 80 -useproxy http://192.168.0.105:3128

或者修改Nikto的配置文件(nikto.conf),添加以下内容后再运行扫描:

PROXYHOST=192.168.0.105
PROXYPORT=3128

3. 先验证代理的连通性

在扫描前,先用curl确认代理能正常转发到目标80端口:

curl -x http://192.168.0.105:3128 http://192.168.0.105

如果能返回目标页面内容,说明代理工作正常;如果不行,先排查Squid的配置——比如是否允许你的主机IP(192.168.0.108)访问代理,是否只允许转发到localhost的80端口。

补充说明:为什么之前的扫描会失败?

  • Nmap扫3128端口显示filtered:Squid可能配置了防火墙规则,只允许接收代理请求,不允许直接扫描代理端口本身;
  • 扫虚假端口3000显示filtered:Squid会拒绝转发到未授权/不存在的端口,这是代理的正常防护逻辑;
  • 常规端口扫描不兼容HTTP代理:因为代理是应用层服务,只处理HTTP请求,而Nmap默认的扫描方式是网络层的,没法通过代理传递。

内容的提问来源于stack exchange,提问作者melvinjose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:34:29