Mssql和Mysql的安全性分析[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 yanweidong1030 的 blog

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(); 





3一个典型的返回的信息 

servername;awen; 
instancename;awen; 
isclustered;no; 
version;8.00.194; 
tcp;1044; (tcp的端口,可见就算改了端口也是很容易找到的) 
np;\\awen\pipe\mssql$xht310\sql\query; 




解决办法:安装防火墙,或者利用windows 2000系统的ipsec对网络连接进行ip限制,实现ip数据包 
的安全性。对ip连接进行限制,只保证自己的ip能够访问,拒绝其他ip进行的端口连接,把来自网络上的安 
全威胁进行有效的控制。重要的是,还要对端口作过滤,包括大部分的tcp和udp端口,因为仅仅做ip限制 
的话,有可能恶意攻击者先攻击被数据库服务器信任的主机,控制之后作为跳板对数据库服务器进行攻击。 


2.数据库的密码探测 

密码攻击包括两种,破解密码和网络监听。破解密码是使用工具不停的连接数据库来猜测密码, 
包括字典攻击,暴力攻击和界于两者之间的半暴力半字典攻击。通常攻击者先采用字典攻击的方法, 
没有成功的话依次采用半暴力半字典攻击,暴力攻击。在网络速度够好,电脑运算能力够强的情况下,这 
样的密码攻击危害是相当大的。网络监听则是控制一台网络设备,在上面运行监听工具捕获在网络中 
传送的密码信息。网络监听可以分为两种,一种是外部的监听,将侦听工具软件放到网络连接的设备或者 
放到可以控制网络连接设备的电脑上,这里的网络连接设备,比如网关服务器,比如路由器等等。另外一 
种是来自内部的监听,对于不安全的局域网,数据是采用广播的方式传播的,只要把网卡设置为混杂模 
式即可接收到本来不属于自己的数据包,当然可能包括密码信息等资料。 

解决方法:针对密码破解,只要把密码设置为足够强壮,并且对同个ip地址不停的连接请求进行屏蔽即可。 
但是对于监听来说,网络传输的时候如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等 
等,不管多么复杂的密码都是于事无补的,这是一个很大的安全威胁。所以,在条件容许情况下,最好使用ssl 
来加密协议,当然,你需要一个证书来支持。并且,对于网络监听应该及时发现,如果网络中的丢包率突然提 
高,那么就有理由怀疑网络遭到监听。 

3.脚本安全 

脚本安全本身就是个非常复杂的问题,足以写一篇专业的长篇分析文章,而且我对脚本不是很内行,mix,envymask,pskey,angel他们比较疯狂,哈哈。脚本 
安全主要是对提交的数据缺乏严格的检查导致的,比较危险的符号有“;”,“ ”,“#”,“--”,“$”, 
“\”等。这个问题最初被认为是asp+sql server的问题,但是很快就发现实质上它的影响非常大,后来有人继续 
深入发现在php+mysql该问题依然会存在,san对php作过深入分析,有兴趣的去安全焦点找他的文章。对于脚本 
好象没有特有效的解决方法,只有依靠程序员的个人素质了…… 


总结,不管是mysql,还是mssql,在外部网络中,都受到相当大的威胁。相比而言,mssql受到的威胁 
甚至要更大些,最近2年来,mssql暴露出了多个远程溢出漏洞。如果配置的比较好的话,我认为,mysql要 

本文关键:Mssql和Mysql的安全性分析
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top