[20171219]指令碼執行的安全性.txt
[20171219]指令碼執行的安全性.txt
--//昨天檢查發現應用中存在一個奇怪的表名,存在怪字元,我估計維護者不熟悉vi操作,導致這種情況出現.
--//最近一直在關注安全方面的資訊,這方面一直是自己的弱項,要防別人攻擊,必須知道別人如何攻擊的.
--//看了一些駭客指令碼,突然想起利用特殊的表名也許能實現某種"攻擊".透過例子說明:
1.環境:
SYS@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> alter tablespace tea rename to "USERS^Mhost ls -l^M";
SCOTT@book> alter tablespace tea rename to "USERS
host ls -l";
2
Tablespace altered.
--//注:裡面的^M透過ctrl+v ctlr+q輸入在linux下.
SCOTT@book> select * from dba_tablespaces;
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING FOR EXTENT_MAN ALLOCATIO PLU SEGMEN DEF_TAB_ RETENTION BIG PREDICA ENC COMPRESS_FOR
--------------- ---------- -------------- ----------- ----------- ----------- ---------- ------------ ---------- --------- --------- --------- --- ---------- --------- --- ------ -------- ----------- --- ------- --- ------------
SYSTEM 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO LOCAL SYSTEM NO MANUAL DISABLED NOT APPLY NO HOST NO
SYSAUX 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO LOCAL SYSTEM NO AUTO DISABLED NOT APPLY NO HOST NO
UNDOTBS1 8192 65536 1 2147483645 2147483645 65536 ONLINE UNDO LOGGING NO LOCAL SYSTEM NO MANUAL DISABLED NOGUARANTEE NO HOST NO
TEMP 8192 1048576 1048576 1 2147483645 0 1048576 ONLINE TEMPORARY NOLOGGING NO LOCAL UNIFORM NO MANUAL DISABLED NOT APPLY NO HOST NO
USERS 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO LOCAL SYSTEM NO AUTO DISABLED NOT APPLY NO HOST NO
EXAMPLE 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT NOLOGGING NO LOCAL SYSTEM YES AUTO DISABLED NOT APPLY NO HOST NO
USERS 8192 65536 1 2147483645 2147483645 65536 ONLINE PERMANENT LOGGING NO LOCAL SYSTEM NO MANUAL DISABLED NOT APPLY NO HOST NO
host ls -l
7 rows selected.
--//像以前hot backup指令碼,透過sql指令碼拼接的sql語句.
alter tablespace <tbs_name> begin backup ;
--//如上就變成了.這樣呼叫指令碼可能導致後面語句的執行,我這裡執行ls -l.
alter tablespace USERS
host ls -l
--//假如我建立的物件是:
create table "emp;^M host ls -l^M" (a number);
--//如果透過某種方式生成的指令碼可能就會執行ls -l命令.
--//這樣你要看toad生成或者執行的指令碼,都是使用引號包裹物件是有道理的.
create table "emp^M ! ls -l^M" (a number);
insert into "emp^M ! ls -l^M" values (1000);
select * from "emp^M ! ls -l^M" ;
SCOTT@book>select * from "emp^M ! ls -l^M" ;
A
----------
1000
--//如果手工打入如下使用雙引號把內容包括起來,也是可以正確執行的:
SCOTT@book> select * from "emp
2 ! ls -l
3 "
4 /
A
----------
1000
--//測試插曲,如果你不小心把命令打錯,可能是很危險的行為,如下,我這裡create變成crate:
SCOTT@book> crate table "emp^M ! ls -l^M" (a number);
SCOTT@book> crate table "emp
! ls -l
" (a number);
SP2-0734: unknown command beginning "crate tabl..." - rest of line ignored.
SCOTT@book> total 152
lrwxrwxrwx 1 oracle oinstall 9 Aug 15 2016 0729 -> /u01/0729
-rw-r--r-- 1 root root 104857600 Nov 17 11:36 100m
-rw-r--r-- 1 oracle oinstall 54 Nov 16 11:42 aaa.txt
-rwxr-xr-x 1 oracle oinstall 532 Nov 16 11:14 aa.sh
-rw-r--r-- 1 oracle oinstall 6 Nov 13 16:18 aa.txt
-rw-r--r-- 1 oracle oinstall 8763 Dec 18 09:54 a.lst
SCOTT@book> SP2-0734: unknown command beginning "" (a numbe..." - rest of line ignored.
--//這樣ls -l命令就執行了.連測試也要小心!!
--//12c支援更長的表名達到128字元(11g支援的表名才30字元),這樣可以打入更長的命令,比如grant dba to a IDENTIFIED BY a1;
--//這樣建立使用者a具有dba許可權.
--//不要在生產系統做這樣的測試!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2148917/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190510]快速建立執行指令碼.txt指令碼
- [20231021]生成bbed的執行指令碼.txt指令碼
- 執行shell指令碼指令碼
- 指令碼執行方式指令碼
- 執行Shell指令碼的方式指令碼
- 指令碼語言的安全性指令碼
- 執行Shell指令碼的方式(轉)指令碼
- mybatis執行sql指令碼MyBatisSQL指令碼
- crontab執行shell指令碼指令碼
- PowerShell 指令碼執行策略指令碼
- SQL SERVER執行指令碼SQLServer指令碼
- 指令碼後臺執行指令碼
- 執行python指令碼後臺執行Python指令碼
- [20160214]rman執行指令碼註解問題.txt指令碼
- RouterOS 限速指令碼和限執行緒指令碼ROS指令碼執行緒
- appium ios java 指令碼如何用指令執行,例如 adb 那種方式執行指令碼APPiOSJava指令碼
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- [20220414]toad呼叫執行指令碼問題.txt指令碼
- MySQL 5.5 執行指令碼中的SQLMySql指令碼
- 不能執行兩個指令碼的方法指令碼
- C# 執行Javascript指令碼C#JavaScript指令碼
- Selenium執行JavaScript指令碼JavaScript指令碼
- 編寫執行R指令碼指令碼
- 你會執行指令碼嗎指令碼
- 監控sqlldr執行指令碼SQL指令碼
- ANT批量執行Jmeter指令碼JMeter指令碼
- sh指令碼執行報錯指令碼
- Linux管理指令碼之自動執行指令碼Linux指令碼
- 執行緒安全性執行緒
- jenkins 禁用指令碼安全性Jenkins指令碼
- Java執行groovy指令碼的兩種方式Java指令碼
- ssh執行遠端指令碼遇到的坑指令碼
- 只在工作日執行的指令碼指令碼
- [Groovy]Groovy指令碼的5種執行方式指令碼
- shell指令碼的執行環境變數指令碼變數
- xcall叢集執行命令指令碼指令碼
- Laravel 中執行 Python 指令碼LaravelPython指令碼
- python指令碼後臺執行Python指令碼