I’ve been on this message board running on vBulletin 3.8 for quite a w dịch - I’ve been on this message board running on vBulletin 3.8 for quite a w Việt làm thế nào để nói

I’ve been on this message board run

I’ve been on this message board running on vBulletin 3.8 for quite a while now, and we have a problem there; The administrator left us for dead. He hasn’t been online for way too long, and we need some changes on the site.

I figured this was an appropriate moment to get my hax0r skills involved. I’m going to explain how I did this, but I’m not going to get into every single detail, as I don’t actually want anyone on this site to try this out. Something like a missing WHERE clause could make all user accounts unusable. All of them…

Having that said,… let’s get started! What I need to accomplish is to get myself admin rights, so I can make the changes we need. vBulletin has a pretty solid code base, which is not easily hacked. But luckily, the forum has some custom add-ons, or “mods”, made by the admin himself. I thought this was a good place to start looking for exploits. There’s one part where you can change other people’s user title (a little text which is being displayed beneath the user's moniker).

I just entered a single quote to see if the user input was being escaped properly, and… jackpot! I received this error:

image

Don’t EVER show errors like this to the user! Do you realize how useful this information is to me? I can see the table name (no table prefix), and the field names. I can see exactly what’s going on behind the scenes, and how to exploit this vulnerability.

Could this be any nicer? I don’t think so. This means I now have full “UPDATE” access to the “user” table.

The text input field which I’m using was limited to 21 characters, but luckily on the client-side only (big, big mistake). I opened up Firebug and removed the “maxlength” attribute from the text field, and the limit was gone. If you absolutely must limit the input length, don’t trust the user. Do it on the server-side as well. Input lengths wouldn’t even be an issue if proper escaping would have been applied.

image

So how can I use this exploit now? I can write to the “user” table only, that means I could for example change my usergroup ID to “6” (which is vBulletin’s default ID for administrators). That would gain me access to the admin panel, but it will only give me a very limited amount of options, which are all worthless to me. The real admin himself needs to give the user all wanted privileges, and this can’t be done in the “user” table alone. Ideally, I’d need access to his account so I can do this myself.

image

With this exploit, I could change the admin’s password, but needless to say, he’d realize that the next time he tried to log on. But what if I copy his password, (which by the way is an MD5 hashed string), to a temporary place? This way I could restore it after giving myself all necessary admin rights, as if nothing ever happened and we all still lived in a perfect world.

I only have “UPDATE” access to the “user” table, so I need a field somewhere in there that can hold at least 32 characters for the MD5 hash. I figured the “msn” field is just perfect for that (it holds up to 100 characters). Although, the “yahoo” and “skype” fields would have done it too:

image

(Having a local copy of vBulletin comes handy when investigating. And yes, I do own a license.)

So how can I SELECT his password, and copy it to my “msn” field? Remember that we have to do all tasks with just one single UPDATE query. And usually, you can’t use UPDATE queries with SELECT sub-queries if both access the same table. But there’s a trick too.

UPDATE `user` SET `msn` = (
SELECT `password` FROM (
SELECT `userid`, `password` FROM `user` WHERE `userid` = 1
) AS `x`
WHERE userid = 1
)
WHERE userid = xxxx
view rawgistfile1.sql hosted with ❤ by GitHub
If you want some good piece of advice, don’t forget the WHERE clauses (none of them)! I accidentally selected 50+K users and temporarily crashed the MySQL server.

Sweet! Now my “msn” field holds his hashed password, which I don’t even want to brute force or crack. I just need it so I can put it back later when I’m done, so he won’t notice I temporarily “borrowed” his account.

Now I need to change his password. In pseudo-code, vBulletin does the hashing like this: md5 ( md5 ( password ) salt )

For security reasons, every user has their own personal salt, mainly so that multiple users sharing the same password don’t end up with the same hash, and at the same time rendering rainbow tables useless. But in this case, it doesn’t secure anything at all. We can just grab the victim’s salt and create a new password with it. We don’t even need to know what its actual value is.

We can use native SQL to create a new password using the current salt:

UPDATE `user`
SET `password` = MD5(CONCAT(MD5('new pass'), `salt`))
WHERE `userid` = 1
view rawgistfile1.sql hosted with ❤ by GitHub
Easy! Now that I have set my own password, I can just log into his account, using his original username and the new password I just created, and give myself all admin rights that tickle my fancy. After doing so, I can restore his old password by running a simple SQL query:

UPDATE `user`
SET `password` = 'The MD5 value from my MSN field'
WHERE `userid` = 1
view rawgistfile1.sql hosted with ❤ by GitHub
This might be obvious, but you can get the hash by going to your profile and reading the value from the MSN field.

image

And that’s pretty much it! I now have full admin rights, and the real admin won’t notice unless he takes a closer look. But then it’s going be too late anyway! ;)

Since I have access to the plug-in system now, I could create and install my own ones. And thus, allowing me to upload/download files, or pretty much anything else I can think of. I have complete control, and all because of a silly, seemingly innocuous value in a tiny SQL query that no one cared to escape.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Tôi đã trên bảng tin này chạy trên vBulletin 3.8 cho khá một lúc bây giờ, và chúng tôi có một vấn đề đó; Các quản trị viên còn lại chúng tôi để chết. Ông đã không được trực tuyến cho cách quá dài, và chúng tôi cần một số thay đổi trên trang web.I figured này là một thời điểm thích hợp để có được kỹ năng hax0r của tôi tham gia. Tôi sẽ giải thích làm thế nào tôi đã làm điều này, nhưng tôi không đi để có được vào từng chi tiết duy nhất, như tôi thực sự không muốn bất cứ ai trên trang web này để thử này. Một cái gì đó giống như một thiếu nơi khoản có thể làm cho tất cả người dùng tài khoản không sử dụng được. Tất cả chúng...Có nói rằng,... chúng ta hãy bắt đầu! Những gì tôi cần phải thực hiện là để có được bản thân mình quyền quản trị, vì vậy tôi có thể làm cho những thay đổi mà chúng ta cần. vBulletin có một mã số khá vững chắc cơ sở, đó không dễ dàng bị tấn công. Nhưng may mắn, các diễn đàn có một số tiện ích tuỳ chỉnh, hoặc "mod", được thực hiện bởi các quản trị mình. Tôi nghĩ rằng đây là một nơi tốt để bắt đầu tìm kiếm cho khai thác. Đó là một phần nơi bạn có thể thay đổi tiêu đề cho người sử dụng của người khác (một chút văn bản này được được hiển thị bên dưới biệt danh của người dùng).Tôi vừa bước vào một báo giá duy nhất để xem nếu người sử dụng đầu vào được thoát đúng, và... jackpot! Tôi nhận được lỗi này:hình ảnhKhông bao giờ hiển thị lỗi như thế này cho người dùng! Bạn có nhận thấy như thế nào hữu ích thông tin này là cho tôi? Tôi có thể nhìn thấy tên bảng (không có tiền tố bảng), và tên lĩnh vực. Tôi có thể thấy chính xác những gì đang xảy ra đằng sau hậu trường, và làm thế nào để khai thác lỗ hổng này.Điều này có thể bất kỳ đẹp hơn? Tôi không nghĩ như vậy. Điều này có nghĩa là tôi bây giờ có thể "Cập Nhật" truy cập vào bảng "người dùng".Trường nhập văn bản mà tôi đang sử dụng được giới hạn ký tự 21, nhưng may mắn trên phía khách hàng-chỉ (sai lầm lớn, lớn). Tôi đã mở ra Firebug và gỡ bỏ các thuộc tính "maxlength" từ lĩnh vực văn bản, và giới hạn đã được đi. Nếu bạn hoàn toàn phải giới hạn chiều dài đầu vào, không tin tưởng người sử dụng. Làm điều đó phía máy chủ là tốt. Độ dài đầu vào thậm chí sẽ không là một vấn đề nếu thích hợp thoát nào đã được áp dụng.hình ảnhVậy làm thế nào tôi có thể sử dụng khai thác này bây giờ? Tôi có thể viết thư cho "người dùng" bảng chỉ, đó có nghĩa là tôi có thể ví dụ thay đổi của tôi ID usergroup-"6" (đó là của vBulletin mặc định ID cho quản trị viên). Mà sẽ được cho tôi truy cập vào bảng quản trị, nhưng nó sẽ chỉ cho tôi một số lượng rất hạn chế lựa chọn, đó là tất cả vô giá trị với tôi. Các quản trị thực sự mình cần phải cung cấp cho người dùng quyền muốn tất cả, và điều này không thể được thực hiện trong bảng "người dùng" một mình. Lý tưởng nhất, tôi sẽ cần truy cập vào tài khoản của mình vì vậy tôi có thể làm điều này bản thân mình.hình ảnhVới khai thác này, tôi có thể thay đổi mật khẩu của quản trị, nhưng không cần phải nói, ông sẽ nhận ra rằng khi ông đã cố gắng để đăng nhập vào. Nhưng nếu tôi sao chép mật khẩu của mình, (mà theo cách là một MD5 băm chuỗi), đến một nơi tạm thời? Bằng cách này tôi có thể khôi phục nó sau khi đưa ra bản thân mình tất cả quyền quản trị cần thiết, như nếu không có gì đã từng xảy ra và chúng tôi tất cả vẫn còn sống trong một thế giới hoàn hảo.I only have “UPDATE” access to the “user” table, so I need a field somewhere in there that can hold at least 32 characters for the MD5 hash. I figured the “msn” field is just perfect for that (it holds up to 100 characters). Although, the “yahoo” and “skype” fields would have done it too:image(Having a local copy of vBulletin comes handy when investigating. And yes, I do own a license.)So how can I SELECT his password, and copy it to my “msn” field? Remember that we have to do all tasks with just one single UPDATE query. And usually, you can’t use UPDATE queries with SELECT sub-queries if both access the same table. But there’s a trick too.UPDATE `user` SET `msn` = ( SELECT `password` FROM ( SELECT `userid`, `password` FROM `user` WHERE `userid` = 1 ) AS `x` WHERE userid = 1)WHERE userid = xxxxview rawgistfile1.sql hosted with ❤ by GitHubIf you want some good piece of advice, don’t forget the WHERE clauses (none of them)! I accidentally selected 50+K users and temporarily crashed the MySQL server.Sweet! Now my “msn” field holds his hashed password, which I don’t even want to brute force or crack. I just need it so I can put it back later when I’m done, so he won’t notice I temporarily “borrowed” his account.Now I need to change his password. In pseudo-code, vBulletin does the hashing like this: md5 ( md5 ( password ) salt )For security reasons, every user has their own personal salt, mainly so that multiple users sharing the same password don’t end up with the same hash, and at the same time rendering rainbow tables useless. But in this case, it doesn’t secure anything at all. We can just grab the victim’s salt and create a new password with it. We don’t even need to know what its actual value is.We can use native SQL to create a new password using the current salt:UPDATE `user`SET `password` = MD5(CONCAT(MD5('new pass'), `salt`))WHERE `userid` = 1view rawgistfile1.sql hosted with ❤ by GitHubEasy! Now that I have set my own password, I can just log into his account, using his original username and the new password I just created, and give myself all admin rights that tickle my fancy. After doing so, I can restore his old password by running a simple SQL query:UPDATE `user`SET `password` = 'The MD5 value from my MSN field'WHERE `userid` = 1view rawgistfile1.sql hosted with ❤ by GitHubThis might be obvious, but you can get the hash by going to your profile and reading the value from the MSN field.imageAnd that’s pretty much it! I now have full admin rights, and the real admin won’t notice unless he takes a closer look. But then it’s going be too late anyway! ;)Since I have access to the plug-in system now, I could create and install my own ones. And thus, allowing me to upload/download files, or pretty much anything else I can think of. I have complete control, and all because of a silly, seemingly innocuous value in a tiny SQL query that no one cared to escape.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Tôi đã được trên bảng tin này chạy trên vBulletin 3.8 cho khá trong một giờ, và chúng tôi có một vấn đề đó; Các quản trị viên lại cho chúng ta cho chết. Ông đã không được trực tuyến cho cách quá dài, và chúng tôi cần một số thay đổi trên trang web. Tôi figured này là một thời điểm thích hợp để có được những kỹ năng hax0r của tôi tham gia. Tôi sẽ giải thích làm thế nào tôi đã làm điều này, nhưng tôi sẽ không để có được vào từng chi tiết, như tôi không thực sự muốn bất cứ ai trên trang web này để thử ra. Một cái gì đó giống như một thiếu mệnh đề WHERE có thể làm cho tất cả tài khoản người dùng không sử dụng được. Tất cả trong số họ ... Có mà nói, hãy để ... bắt đầu! Những gì tôi cần phải thực hiện là để có được bản thân mình quyền admin, vì vậy tôi có thể làm cho những thay đổi cần thiết. vBulletin có một cơ sở mã đẹp, rắn, không dễ bị tấn công. Nhưng may mắn thay, diễn đàn có một số tùy chỉnh add-ons, hoặc "mod", được thực hiện bởi các quản trị bản thân. Tôi nghĩ đây là một nơi tốt để bắt đầu tìm kiếm khai thác. Có một nơi mà bạn có thể thay đổi tiêu đề khác sử dụng của người dân (một văn bản nhỏ được được hiển thị bên dưới biệt danh của người dùng). Tôi chỉ cần nhập vào một giá duy nhất để xem nếu đầu vào người sử dụng đã được thoát đúng cách, và ... jackpot! Tôi nhận được lỗi này: hình ảnh không bao giờ hiển thị lỗi như thế này để người sử dụng! Bạn có nhận thấy như thế nào thông tin hữu ích này với tôi? Tôi có thể thấy cái tên này (không có tiền tố bảng), và các tên trường. Tôi có thể nhìn thấy chính xác những gì đang xảy ra đằng sau hậu trường, và làm thế nào để khai thác lỗ hổng này. Điều này có thể là bất kỳ đẹp hơn? Tôi không nghĩ vậy. Điều này có nghĩa là bây giờ tôi có đầy đủ "UPDATE" tiếp cận "người sử dụng" bảng. Các trường nhập văn bản mà tôi đang sử dụng bị giới hạn 21 ký tự, nhưng may mắn trên phía máy khách chỉ (lớn, sai lầm lớn). Tôi mở Firebug và gỡ bỏ các "maxlength" thuộc tính từ các lĩnh vực văn bản, và các giới hạn đã được đi. Nếu bắt buộc phải giới hạn độ dài đầu vào, không tin tưởng vào người sử dụng. Làm điều đó trên server-side là tốt. Độ dài đầu vào thậm chí sẽ không là một vấn đề nếu thoát thích hợp sẽ được áp dụng. image Vì vậy, làm thế nào tôi có thể sử dụng khai thác bây giờ? Tôi có thể viết cho "người sử dụng" bảng duy nhất, đó có nghĩa là tôi có thể cho ví dụ thay đổi ID usergroup của tôi để "6" (đó là ID mặc định vBulletin cho quản trị viên). Điều đó sẽ được tôi quyền truy cập vào bảng điều khiển quản trị, nhưng nó sẽ chỉ cung cấp cho tôi một số lượng rất hạn chế các lựa chọn, đó là tất cả vô giá trị với tôi. Các quản trị viên thực mình cần để cung cấp cho người sử dụng tất cả các đặc quyền muốn, và điều này không thể được thực hiện trong các "người sử dụng" bảng một mình. Lý tưởng nhất, thì bạn cần truy cập vào tài khoản của mình để tôi có thể làm điều này bản thân mình. hình ảnh Với này khai thác, tôi có thể thay đổi mật khẩu của người quản trị, nhưng không cần phải nói, anh sẽ nhận ra rằng thời gian tới, ông đã cố gắng để đăng nhập vào. Nhưng nếu tôi sao chép mật khẩu của mình, (mà bằng cách này là một MD5 băm string), đến một nơi tạm thời? Bằng cách này tôi có thể khôi phục lại nó sau khi hiến mình tất cả các quyền admin cần thiết, vì nếu không có gì từng xảy ra và tất cả chúng ta vẫn sống trong một thế giới hoàn hảo. Tôi chỉ có "UPDATE" tiếp cận "người sử dụng" bảng, vì vậy tôi cần một lĩnh vực nào đó trong có mà có thể nắm giữ ít nhất 32 ký tự cho hash MD5. Tôi nhận thấy lĩnh vực "msn" chỉ là hoàn hảo cho điều đó (nó chứa lên đến 100 ký tự). Mặc dù, "yahoo" và "skype" các lĩnh vực đã có thể làm nó quá: hình ảnh (Có một bản sao địa phương của vBulletin đến tay khi điều tra và có, tôi sở hữu một giấy phép..) Vì vậy, làm thế nào tôi có thể dùng SELECT mật khẩu của mình, và sao chép nó đến trường "msn" của tôi? Hãy nhớ rằng chúng ta phải làm tất cả những nhiệm vụ với chỉ duy nhất một truy vấn UPDATE. Và thông thường, bạn không thể sử dụng các truy vấn CẬP NHẬT với SELECT truy vấn phụ nếu cả hai truy cập vào cùng một bảng. Nhưng có một mẹo quá. CẬP NHẬT `user` SET` msn` = ( CHỌN `password` TỪ ( CHỌN `userid`,` password` FROM `` user` ĐÂU userid` = 1 ) AS `x` ĐÂU userid = 1 ) ĐÂU userid = xxxx xem rawgistfile1.sql lưu trữ với ❤ bởi GitHub Nếu bạn muốn có một số mảnh tốt của lời khuyên, đừng quên các điều khoản ĐÂU (ai trong số họ)! Tôi vô tình chọn 50 + K người sử dụng và tạm thời bị rơi máy chủ MySQL. Sweet! Bây giờ trường "msn" tôi giữ mật khẩu băm của mình, mà tôi thậm chí không muốn bạo lực hoặc crack. Tôi chỉ cần nó vì vậy tôi có thể đặt nó trở lại sau khi tôi thực hiện, do đó, ông sẽ không nhận thấy tôi tạm thời "mượn" tài khoản của mình. Bây giờ tôi cần phải thay đổi mật khẩu của mình. Trong pseudo-code, vBulletin hiện băm như thế này: md5 (md5 (password) muối) Vì lý do bảo mật, mỗi người dùng có muối của riêng cá nhân của họ, chủ yếu là vì vậy mà nhiều người dùng chia sẻ cùng một mật khẩu không kết thúc với cùng bảng băm , và cùng một lúc render các bảng cầu vồng vô dụng. Nhưng trong trường hợp này, nó không đảm bảo bất cứ điều gì ở tất cả. Chúng tôi chỉ có thể lấy muối của nạn nhân và tạo ra một mật khẩu mới với nó. Chúng tôi thậm chí không cần phải biết những gì giá trị thực tế của nó. Chúng tôi có thể sử dụng SQL bản địa để tạo ra một mật khẩu mới bằng cách sử dụng muối hiện tại: CẬP NHẬT `user` SET `password` = MD5 (CONCAT (MD5 ('mới vượt qua'), `salt`)) ĐÂU `userid` = 1 view rawgistfile1.sql lưu trữ với ❤ bởi GitHub dễ dàng! Bây giờ tôi đã thiết lập mật khẩu riêng của tôi, tôi chỉ có thể đăng nhập vào tài khoản của mình, bằng cách sử dụng tên đăng nhập ban đầu của mình và mật khẩu mới tôi vừa tạo ra, và cho bản thân mình tất cả các quyền admin mà cù ưa thích của tôi. Sau khi làm như vậy, tôi có thể khôi phục lại mật khẩu cũ của mình bằng cách chạy một truy vấn SQL đơn giản: CẬP NHẬT `user` SET `password` = 'Giá trị MD5 từ lĩnh vực MSN của tôi' ĐÂU `userid` = 1 view rawgistfile1.sql lưu trữ với ❤ bởi GitHub Điều này có thể được rõ ràng, nhưng bạn có thể nhận được các hash bằng cách vào hồ sơ của bạn và đọc giá trị từ MSN trường. image Và đó là khá nhiều đó! Bây giờ tôi có quyền admin đầy đủ, và quản trị sản sẽ không nhận thấy trừ khi anh ta có một cái nhìn gần gũi hơn. Nhưng sau đó nó sẽ là quá muộn anyway! ;) Kể từ khi tôi có quyền truy cập vào các hệ thống plug-in bây giờ, tôi có thể tạo ra và cài đặt những cái riêng của tôi. Và do đó, cho phép tôi để tải lên / tải các tập tin, hoặc khá nhiều bất cứ điều gì khác tôi có thể nghĩ đến. Tôi có quyền kiểm soát hoàn toàn, và tất cả vì một ngớ ngẩn, giá trị có vẻ vô hại trong một truy vấn SQL nhỏ mà không có ai chăm sóc để trốn thoát.

































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: