探测远程主机上防火墙允许开放端口

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
作者:lake2

上次拿到一个webshell,可是接着遇到麻烦——主机装了硬件防火墙。虽然发现主机的MSSQL存在hello溢出漏洞,但是由于防火墙的阻挠始终拿不到shell(反向连接时发现仅仅能够连接,没有数据过来),另外又试了N种本地提升权限的方法但以失败告终。郁闷!后来又想到如果在webshell里用sqlhello溢出绑定一个防火墙允许开的端口,那不就ok了。当然这个端口必须是现在关闭着的。

大家都知道如果能够连接远程主机的某个端口,那么这个端口自然是防火墙允许开放的。现在的问题是,现在端口关闭着,如何判断呢?

这里我想到有大虾说过telnet远程主机端口时,如果很快返回连接失败就说明端口关闭;如果等了十多秒才返回多半是对方装有防火墙。这个方法是对的,可是一共有65535个端口,不会让我慢慢去telnet吧,所以就写个程序自动去扫。

同端口扫描程序类似,这个程序也调用winsock的connect函数,但由于端口是关闭的,所以connect会返回一个错误码10061(连接被拒。由于被目标机器拒绝,连接无法建立);但如果是对方的防火墙拦截了连接请求的话,过段时间就会返回10060错误(连接超时)。利用返回的错误类型我们就可以判断该端口是否为远程主机防火墙允许开放的了。不过这里注意,如果目标ip不存在主机的话也会超时的哦。

原理搞懂了写程序也就很简单了,就是调用winsock的connect。关于winsock编程参考《WINDOWS网络编程技术》吧;嗯,另外注意用多线程,不然的话,呵呵,一整天都扫不完。多线程要使用CreateThread这个API函数,看看MSDN吧。随便在网上找了个扫描器代码参考,写了这个程序,代码如下:


#include
#include
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")

#define MAXThreadCount 100//设置最大线程数
#define SumScanCount 65535//设置扫描端口总数
struct sockaddr_in server;
int ThreadCount=0;
int dwThrdParam = 1; //CreateThread的参数,提到前面好计算

unsigned int resolve(char *name)
{
struct hostent *he;
unsigned int ip;

if((ip=inet_addr(name))==(-1))
{
if((he = gethostbyname(name))==0)
{
printf("ERROR: Don't find the %s ./n",name);
exit(0);
}
memcpy(&ip,he->h_addr,4);
}
return ip;
}

DWORD WINAPI Scan(LPVOID lpParam )
{
int mysock,code,port=(int)lpParam ;
mysock=socket(AF_INET,SOCK_STREAM,0);
if(mysock < 0) { printf("socket error!"); }

server.sin_port = htons(port);

if(connect(mysock,(struct sockaddr *) & server,sizeof(server))!=0)
{
code=GetLastError();
if(code==10061)printf("port %d allown open/n",port);
}
else
{
printf("port %d openning/n",port);
}
closesocket(mysock);
ThreadCount--;
return 0;
}
void thread(int port)
{
DWORD dwThreadId;
HANDLE hThread;
WSADATA ws;
if (WSAStartup( MAKEWORD(2,2), &ws )!=0)
{
printf(" [-] WSAStartup() error/n");
exit(0);
}

hThread = CreateThread(
NULL, // no security attributes
0, // use default stack size
Scan, // thread function
(LPVOID)port, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier
if (hThread == NULL)
printf( "CreateThread failed." );
dwThrdParam++;
ThreadCount++;
Sleep(200); //延时,否则CPU会用满……
CloseHandle(hThread);
}

void main(int argc, char* argv[])
{
if(argc!=2)
{
printf("/n- This program find port that firewall allow open -/n");
printf("- Only for test by lake2 - /n");
printf("Usage: %s IP/n",argv[0]);
exit(0);
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = resolve( argv[1] );
printf("Starting and waiting............../n");
while( dwThrdParam <= SumScanCount )
{
if( ThreadCount < MAXThreadCount ){ thread(dwThrdParam); }
}
while( ThreadCount!=0 ){ }
WSACleanup();
printf("Done!");
}

运行程序,填上ip它就会自动探测所有端口,由于那些被过滤的端口大概都差不多要等二十秒,速度比较慢,可以自己设个超时值加快速度;另外也可以修改一下让用户自定义扫描范围等等,现在不管了,用得起就行。编译好的程序这里可以找到: http://lake2.512j.com/soft/PortScan.exe

程序做好了当然要拿来用啦,经过漫长的3小时多的扫描之后,得到结果:目标主机_blank">防火墙只开放80端口。当场晕死!唉,“路漫漫其修远兮,吾将上下而求索”……
Nmap云主机端口扫描 主机端口扫描 前言 一、nmap简介 Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪服务运行在那些连接端,并且推断哪个操作系统计算机运行(这是亦称fingerprinting)。 它是网络管理员必用的软件之一,以及用以评估网络系统保安。正如大多数工具被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小孩)爱用的工具。系统管理员可以利用nmap来探测工作环境中... 阅读详情

相关推荐

怎么检查服务器的端口是否开放

检查服务器端口是否开放可以通过多种方法实现,包括使用命令行工具、网络扫描工具或在线服务。

m0_57236802的博客 7773

服务器中如何检查端口是否开放

直接在浏览器中输入 http://your_server_ip:your_port_number,如果端口开放并且有相应的服务运行,你可能会看到服务的欢迎页面或其他信息。根据你的需求和所在环境,选择一种或多种方法进行端口测试。确保在进行端口扫描时,遵循组织或网络所有者的政策和法规,以避免不必要的安全风险。使用操作系统提供的网络工具,如 ping 或 tracert,可以验证网络连接是否正常,但不能直接测试端口开放状态。如果端口开放,将显示成功的消息。使用 Netcat 命令来测试端口的状态。

a38417的博客 1万+

渗透测试:主机发现和端口扫描的方法总结(nmap+arp-scan+ping命令+nc.traditional+伪设备连接)

信息搜集是渗透测试的第一步,而主机发现和端口扫描则是信息搜集的关键步骤。后续的渗透测试都是基于始搜集侦察的信息进行测试的。。

qq_63442530的博客 7182

检查服务器端口是否启怎么查看

使用上述方法可以帮助你检查服务器上的端口是否启。最常用和简单的方法可能是ss或netstat,对于更详细的扫描和检测,可以使用nmap。根据你的具体需求和环境选择合适的工具即可。

技术刚刚好 2万+

【转】检测在线主机开放端口的方法-shell编程

https://my.oschina.net/mingongge/blog/988651 检测在线主机开放端口的方法-shell编程   (原标题:Linux系统shell脚本编程――生产实战案例)       在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口开放状态,因此依靠手工来检查是可以实现,但比较费时费力,

丁丁爸爸的技术博客 3107

探测远程主机防火墙允许开放端口

    上次拿到一个webshell,可是接着遇到麻烦——主机装了硬件防火墙。虽然发现主机的MSSQL存在hello溢出漏洞,但是由于防火墙的阻挠始终拿不到shell(反向连接时发现仅仅能够连接,没有数据过来),另外又试了N种本地提升权限的方法但以失败告终。郁闷!后来又想到如果在webshell里用sqlhello溢出绑定一个防火墙允许端口,那不就ok了。当然这个端口必须是现在关闭着的。 

lake2的专栏 6038

[转载]探测远程主机防火墙允许开放端口

文章来源:http://blog.csdn.net/lake2/文章作者:lake2 探测远程主机防火墙允许开放端口 上次拿到一个webshell,可是接着遇到麻烦——主机装了硬件防火墙。虽然发现主机的MSSQL存在hello溢出漏洞,但是由于防火墙的阻挠始终拿不到shell(反向连接时发现仅仅能够连接,没有数据过来),另外又试了N种本地提升权限的方法但以失败告终。郁闷!后来又想到如果在...

weixin_30273763的博客 161

- **端口扫描** 是黑客常用的探测手段,通过扫描目标主机开放端口及对应服务,可判断主机运行的操作系统、服务类型及潜在漏洞

端口扫描的核心是利用TCP/IP协议的通信机制,通过分析目标主机对特定数据包的响应来推断端口状态。不同扫描类型适用于不同场景,其隐蔽性和兼容性各有差异。对于网络安全而言,理解端口扫描原理是防范攻击的基础,需结合技术手段与管理策略构建防御体系。 端口扫描是一种基本的网络侦察技术,用于发现目标主机开放端口以及运行在这些端口上的服务。以下是端口扫描的一般步骤和方法:

[Blog][Domain] programb.blog.csdn.net 1080

主机端口扫描

Nmap扫描工具 扫描器是一种自动检测远程或本地主机安全性弱点的程序。它集成了常用的各种扫描技术,能自动发送数据包去探测和攻击远端或本地的端口和服务,并自动收集和记录目标主机的反馈信息,从而发现目标主机是否存活、目标网络内所使用的设备类型与软件版本、服务器或主机上各TCP/UDP端口的分配、所开放的服务、所存在的可能被利用的安全漏洞。据此提供-份可靠的安全性分析报告...

T.machine的博客 3126

端口开放测试

端口开放测试对应访问控制项中的第二点,所以安全控制点为入侵防范。

一枚小白的分享,不喜勿喷~ 6078

内网存活主机探测:Nmap与Wireshark绕过Windows防火墙实战

网络资产发现是网络安全与运维管理的基础环节,其核心原理在于通过主动或被动方式识别网络中活跃的设备。传统ICMP Ping扫描因防火墙普遍拦截而失效,因此需要采用更贴近业务流量的探测技术。在技术价值层面,精准的存活主机清单是漏洞评估、访问控制策略制定和威胁检测的前提。应用场景广泛覆盖内网安全审计、资产盘点以及入侵检测规则验证。本文聚焦于利用Nmap的TCP SYN/ACK Ping、UDP Ping及ARP扫描等多种技术,模拟合法业务流量,巧妙穿透Windows防火墙默认规则。通过结合Wireshark进行流

clijovtbq401783153的博客 422

探测远程主机操作系统指纹的全新技术

作者:TOo2y 一、介绍近年来,网络安全评估软件逐渐被网络安全界所接收,而且在很大的范围内快速地传播起来。远程操作系统探测作为评估软件的一个部分,必须具备几个条件:- 精确性:避免错误的探测结果;- 防火墙和入侵检测系统的影响:避免影响(或被影响于)防火墙和入侵检测系统;- 文雅:低的网络流通和无危险分段;- 灵巧:易于扩展标识数据库和自动探测函数;- 速度:高速的指纹探测工具应该允许大范围

1222

防火墙导致无法访问?Linux开放7860端口正确姿势

本文介绍了基于星图GPU平台自动化部署Live Avatar阿里联合高校源的数字人模型镜像的方法。通过该平台可快速启动支持Gradio界面的Web服务,结合Linux防火墙配置开放7860端口,实现远程访问与交互式AI应用发,适用于数字人实时交互、虚拟主播等场景。

weixin_36296444的博客 418

Nmap 扫描主机端口

1.安装nmap yum install nmap 2.使用nmap nmap [扫描类型] [扫描参数] [hosts 地址与范围] -sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。 -sS TCP 同步扫描 (TCP SYN),因为不必全部打一个 TCP 连接,所以这项技术通常称为半扫描 (half-open)。这项技术最大的好处是,很少有系统能...

林中静月下仙的博客 5036

nmap 扫描主机端口(谨慎使用)

安装nmap yum install nmap #输入y安装 使用nmap 语法 nmap [扫描类型] [扫描参数] [hosts 地址与范围] 扫描类型 -sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。 -sS TCP 同步扫描 (TCP SYN),因为不必全部打...

benben0729的专栏 5万+

主机发现及端口扫描

Nmap是Network Mapper缩写,Windows和linux下都可以使用,是用来探测计算机网络上的主机和服务的一种安全扫描器,是网络管理员必用的软件之一。常见的端口攻击:文件共享服务端口远程连接服务端口、web应用服务端口、数据库服务端口、邮件服务端口、特殊服务端口等。功能:有时不想对所有端口进行探测,只想对几个特殊的端口进行扫描,还可以利用参数p 进行指定端口的扫描。功能:此选项设置包含了1-10000的端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测

weixin_53787530的博客 3048
上一篇: 巧用INF文件修改注册表
下一篇: PHP COM组件调用绕过安全模式执行任意文件漏洞
scrub
博客等级 码龄22年 8粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值