• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
探测远程主机防火墙允许开放端口
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
探测远程主机防火墙允许开放端口
软件发布 探测远程主机防火墙允许开放端口
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 网络技术 >> 网络安全 >> 探测远程主机防火墙允许开放端口

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

添加时间: 2008-3-5 12:24:19  作者: 网络安全  阅读次数:30   来源: http://www.d9soft.com

       

  上次拿到一个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 g

  0, // use default stack size

  Scan, // thread function

  (LPVOID)port, // argument to thread function

  0, // use default creation flags

  &dwThreadId); // returns the thread identifier n

  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它就会自动探测所有端口,由于那些被过滤的端口大概都差不多要等二十秒,速度比较慢,可以自己设个超时值加快速度;另外也可以修改一下让用户自定义扫描范围等等,现在不管了,用得起就行。

  程序做好了当然要拿来用啦,经过漫长的3小时多的扫描之后,得到结果:目标主机_blank">防火墙只开放80端口。当场晕死!唉,“路漫漫其修远兮,吾将上下而求索”……

 

上下文章:

 

上一篇文章: recycle.exe病毒手动解决的方法 下一篇文章: 解析:认识代理防火墙的优劣

相关文章:

  • 用端口碰撞技术实现服务器远程管理
  • 金山软件7.15毒报:脚本下载器下载远程病毒
  • Oracle-MTS经过防火墙的设定
  • 浅析防火墙与路由器的安全配置
  • XP下关于防火墙应用的经典问答

相关软件:

  • SSPort高速端口扫描器 1.0
  • 瑞星个人防火墙2008下载版(免费1年) 20.57.12
  • 木马分析专家个人防火墙 2008 0814
  • 网络端口监控(NetPortMonitor) 1.0
  • FTP远程文件同步更新程序 1.0.0.0
  • 火炬防火墙 2008.08.08

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

网络技术分类导航

  • 局域网专栏
  • 病毒快报
  • 网络安全
  • 组网教程
  • WEB服务器架设与维护
  • FTP服务器架设与维护
  • DNS服务器架设与维护
  • 邮件服务器架设与维护

本类经典文章推荐

  • Ghost有漏洞 镜像恢复需小心陷阱
  • 微软危急补丁涉及所有版本Windows
  • 完美解决双击无法打开C、D、E、F盘...
  • 技巧:交换机安全设置六大原则
  • 后门的分类及各种入侵办法说明
  • 针对Linux网络服务器的渗透测试
  • 路由器的故障分析及排除技巧
  • Linux下的用户口令及其安全性
  • 视频文件夹带木马的常见应对策略
  • 禁止让瑞星2008随机启动的绝招

网络安全阅读排行

  • 网络解惑:找回消失的本地连接
  • 南阳信息港被黑案告破!
  • SXS.EXE木马病毒的清除方法
  • 教你如何手动杀SXS.EXE这种病毒
  • U盘病毒和Autorun.inf文件分析
  • 强人的试用18款杀软手记 !!!看...
  • 网络防火墙技术应用!
  • 远程控制解决问题集合
  • 突破网吧极限及机房管理限制的方法
  • 不用防火墙,让菜鸟远离病毒

网络技术阅读总排行

  • 网络解惑:找回消失的本地连接
  • 教你如何通过路由器来控制上网
  • 网卡故障排除技巧详解
  • FlashFTP教程
  • 网上邻居十大经典应用技巧
  • 如何有效建立Win2000 VPN服务器
  • 经济实惠:组建P2P电影服务器
  • 查找局域网络中的故障技巧
  • 南阳信息港被黑案告破!
  • 小区宽带主要常见故障解决办法

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有