各种应用服务指纹探测

import socket
def main(host,port):
    socket.setdefaulttimeout(5)
    http="GET \r\n"
    smb= '\x00\x00\x00\xa4\xff\x53\x4d\x42\x72\x00\x00\x00\x00\x08\x01\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x06\x00\x00\x01\x00\x00\x81\x00\x02PC NETWORK PROGRAM 1.0\x00\x02MICROSOFT NETWORKS 1.03\x00\x02MICROSOFT NETWORKS 3.0\x00\x02LANMAN1.0\x00\x02LM1.2X002\x00\x02Samba\x00\x02NT LANMAN 1.0\x00\x02NT LM 0.12\x00'
    #mysql="\x3c\x00\x00\x01\x0a\x35\x2e\x37\x2e\x31\x2d\x54\x69\x44\x42\x2d\x31\x2e\x30\x00\x6e\x02\x00\x00\x5f\x62\x0c\x7b\x2e\x27\x5a\x6a\x00\x8f\xa2\x21\x02\x00\x13\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x27\x25\x2e\x79\x79\x3b\x2a\x19\x41\x5f\x27\x00"
    mssql = "\x12\x01\x00\x34\x00\x00\x00\x00\x00\x00\x15\x00\x06\x01\x00\x1b\x00\x01\x02\x00\x1c\x00\x0c\x03\x00\x28\x00\x04\xff\x08\x00\x01\x55\x00\x00\x00\x4d\x53\x53\x51\x4c\x53\x65\x72\x76\x65\x72\x00\x48\x0f\x00\x00"
    postgresql = "\x00\x00\x00\x54\x00\x03\x00\x00\x75\x73\x65\x72\x00\x70\x6f\x73\x74\x67\x72\x65\x73\x00\x64\x61\x74\x61\x62\x61\x73\x65\x00\x70\x6f\x73\x74\x67\x72\x65\x73\x00\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x5f\x6e\x61\x6d\x65\x00\x70\x73\x71\x6c\x00\x63\x6c\x69\x65\x6e\x74\x5f\x65\x6e\x63\x6f\x64\x69\x6e\x67\x00\x55\x54\x46\x38\x00\x00"
    rdp = "\x03\x00\x00\x13\x0E\xE0\x00\x00\x00\x00\x00\x01\x00\x08\x00\x03\x00\x00\x00"
    redis="info\r\n"
    memcached="\x80\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    netbios="\x10\x7e\x01\x10\x00\x01\x00\x00\x00\x00\x00\x00\x20\x46\x4b\x45\x49\x46\x44\x44\x43\x44\x46\x44\x47\x44\x45\x44\x44\x43\x41\x43\x41\x43\x41\x43\x41\x43\x41\x43\x41\x43\x41\x41\x41\x00\x00\x20\x00\x01"
    svn=""
    dns = "\x00\x44\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03\x77\x77\x77\x04\x73\x69\x6e\x61\x03\x63\x6f\x6d\x00\x00\x02\x00\x01"
    proxy = "\x05\x01\x00\x01"
    oracle= "\x00\x3a\x00\x00\x01\x00\x00\x00\x01\x39\x01\x2c\x00\x00\x08\x00\x7f\xff\xc6\x0e\x00\x00\x01\x00\x00\x00\x00\x3a\x00\x00\x08\x00\x41\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    mongodb="\x00\x00\x00\xa7A\x00\x00\x00\x00\x00\x00\xd4\x07\x00\x00\x00\x00\x00\x00admin.$cmd\x00\x00\x00\x00\x00\xff\xff\xff\xff\x13\x00\x00\x00\x10ismaster\x00\x01\x00\x00\x00\x00"
    elasticsearch="GET /_cat HTTP/1.1\r\n\r\n"
    #list=[smb,mysql,mssql,postgresql,rdp,redis,memcached,netbios,svn,proxy,oracle,mongodb,elasticsearch]
    mysql="\x3c\x00\x00\x01\x0a\x35\x2e\x37\x2e\x31\x2d\x54\x69\x44\x42\x2d\x31\x2e\x30\x00\x6e\x02\x00\x00\x5f\x62\x0c\x7b\x2e\x27\x5a\x6a\x00\x8f\xa2\x21\x02\x00\x13\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x27\x25\x2e\x79\x79\x3b\x2a\x19\x41\x5f\x27"
    body = "ifconfig"
    shellcode=mysql+body
    print [shellcode]
    list=[shellcode]
    udplist=[dns]
    for i in list:
      try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.connect((host, port))
            sock.send(i)
            packet=sock.recv(1024)
            print [packet]
            print packet
            if "SMB" in packet:
                print "smb"
            if "MySQL" in packet:
                print "mysql"
            if "\x04\01" in packet:
                print "mssql"
            if "R\x00\x00\x00" in  packet[0]:
                print "postgresql"
            if "\x03\x00\x00\x13" in packet:
                print "rdp"
            if ("redis" or  "-NOAUTH Authentication") in packet:
                print "redis"
            if "\x81\x0b" in packet:
                print "memcached"
            if "\x83\x00\x00\x01" in packet:
                print "netbios"
            if "( success ( 2 2" in packet:
                print "svn"
            if "\x05\x00" in packet:
                print "proxy"
            if "\x00Y\x00" in packet:
                print "oracle"
      except Exception ,e:
          print e
    # for j in udplist:
    #   try:
    #     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    #     sock.connect((host, port))
    #     sock.send(j)
    #     packet=sock.recv(1024)
    #
    #     if "wwwsinacom" in packet:
    #         print "dns"
    #   except Exception,e:
    #       print e
if __name__ == '__main__':
    url = 'http://127.0.0.1:4000/'
    host = url.split(":")[1][2:]
    port1 = url.split(":")[2]
    l = len(port1)
    port = port1[-l:l - 1]
    main(host,int(port))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值