程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server和MySQL 的安全性分析(2)

SQL Server和MySQL 的安全性分析(2)

編輯:關於SqlServer


  二.外部網絡安全性分析

  1.數據庫服務的探測

  為了安全,可以讓mysql服務運行在內網,但是如果你的機器有外網的接口,MySQL也會自動被綁定在外網上面,暴露在internet中,而且系統會在TCP的3306端口監聽,非常容易被端口掃描工具發現,不能保證數據安全。如果默認,mssql則會打開TCP的1433端口監聽。雖然mssql可以人為的改變監聽端口,但是通過微軟未公開的1434端口的UDP探測可以很容易知道SQL Server使用的什麼TCP/IP端口了。往UDP1434端口

  發送一個1個字節的內容為02的數據包,被探測的系統則會返回安裝的mssql服務信息,這些信息包括:主機名稱、實例名稱、版本、管道名稱以及使用的端口等。這個端口是微軟自己使用,而且不象默認的1433端口那樣可以改變,1434是不能改變的。一個典型的返回的信息如下:

  ServerName;Sky;InstanceName;sky;IsClustered;No;Version;8.00.194;tcp;3341;np;\\sky\pipe\MSSQL$XHT310\sql\query; 可以發現mssql的tcp端口改成了3341,為攻擊者打開了方便之門!只要會一點socket編程知識,很容易就可以寫出掃描mssql服務的程序,而且,由於利用了udp端口,一般的過濾是很難防范的。 補天的awen寫了個探測程序,用的是c#語言,代碼如下: 

 using System;
  using System.Net.Sockets;
  using System.Net;
  using System.Text;
  using System.Threading;
  namespace ConsoleApplication3
  {
  class Class1
  {
  //創建一個UDPCLIENT實例
  private static UdpClient m_ClIEnt;
  //LISTEN用來獲取返回的信息
  public static string Listen(string hostip)
  {
  string HostIP = hostip;
  IPAddress thisIP = IPAddress.Parse(HostIP);
  IPEndPoint host = new IPEndPoint(thisIP,1434);
  byte [] data = m_ClIEnt.Receive(ref host);
  Encoding ASCII = Encoding.ASCII;
  String strData = ASCII.GetString(data);
  return strData;
  }
  //SEND
  public static void Send(string hostip)
  {
  string HostIP = hostip;
  byte [] buffer = {02};
  //02為要發送的數據,只有02、03、04有回應
  int ecode = m_ClIEnt.Send(buffer,1,HostIP,1434);
  //ecode用來返回是否成功發送
  if(ecode <= 0)
  {
  Console.WriteLine("發送時出錯:" + ecode);
  }
  }
  //對返回的信息的簡單的處理
  public static void OutputInfo(string strdata)
  {
  string str = strdata;
  //str.le
  char [] that = {‘;‘,‘;‘};
  string [] strofthis =str.Split(that);
  //int i= 0
  for(int i=0;i{
  Console.Write(strofthis);
  Console.Write(‘
  ‘);
  }
  }
  //輸入IP
  public static string InputHostIP()
  {
  Console.Write("enter the ip you want to scan:
  ");
  string hostip =Console.ReadLine();
  Console.Write(‘
  ‘);
  return hostip;
  }
  //EXIT
  public static void Exit()
  {
  Console.WriteLine("if you want to exit ,just input 1
  ");
  int a = Console.Read();
  if(a!= 1)
  {
  Console.WriteLine("if you want to exit ,just input 1
  ");
  Console.Read();
  }
  else
  {
  }
  }
  [STAThread]
  static void Main(string[] args)
  {
  string HostIP;
  HostIP = InputHostIP();
  Console.WriteLine("Begin to send udp to the host");
  m_Client = new UdpClIEnt();
  Send(HostIP);
  string strData=Listen(HostIP);
  OutputInfo(strData);
  Exit();
  }
  }
  }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved