При клике на ссылку с редиректом вы окажитесь не на том сайте, куда ведёт эта ссылка, а на каком-то другом. Самый популярный пример таких ссылок — это ссылки, полученные на разных сервисах по сокращению ссылок.
Как определить все редиректы страницы
Для Linux имеется специальная программа под названием Hoper — она делает именно то, что нас интересует: показывает все сделанные редиректы. В Kali Linux программа устанавливается следующим образом:
Вполне возможно, что в другие дистрибутивы Linux также удастся выполнить установку этим же способом.
В BlackArch команда устанавливается так:
но в данный момент она не работает в BlackArch (хотя раньше работала):
Использование программы простейшее:
У программы hoper имеется ряд проблем — главная из них: она показывает не все переходы, которые делает ссылка.
Другие недостатки:
Программа для определения всех редиректов
Задача кажется довольно простой — нужно перейти по ссылке, посмотреть куда она ведёт, перейти туда, посмотреть куда ведёт следующая ссылка и так по кругу.
Но имеются следующие трудности:
Пример редиректа с помощью JavaScript:
Пример редиректа с помощью JavaScript и с дополнительной обфускацией:
Первые три проблемы я решил в своём скрипте, четвёртая решена только частично. Пятая также решена частично — можно добавить больше паттернов для поиска редиректов, но окончательно побороть обфускацию невозможно. Кстати, если вы хотите дополнить примеры редиректов для добавления их в этот скрипт, то пишите в комментариях.
Чтобы использовать скрипт создайте файл dest-finder.sh:
И скопируйте в него:
Использование:
Ссылки рекомендуется помещать в кавычки, поскольку они могут содержать символы, имеющие специальное значение для оболочки Bash.
Например:
Теперь нам показаны все четыре редиректа:
взято с hackware.ru
Как определить все редиректы страницы
Для Linux имеется специальная программа под названием Hoper — она делает именно то, что нас интересует: показывает все сделанные редиректы. В Kali Linux программа устанавливается следующим образом:
Bash:
sudo apt install libcurl4-openssl-dev
sudo gem install gemspec hoper
В BlackArch команда устанавливается так:
Bash:
sudo pacman -S hoper
Использование программы простейшее:
Bash:
hoper URL
Другие недостатки:
- требует Ruby
- не работает в BlackArch
- не показывает кукиз
Программа для определения всех редиректов
Задача кажется довольно простой — нужно перейти по ссылке, посмотреть куда она ведёт, перейти туда, посмотреть куда ведёт следующая ссылка и так по кругу.
Но имеются следующие трудности:
- относительная переадресация: ссылка может быть абсолютной, а может быть относительной, например «/blog» или «/». По относительной ссылкам нельзя просто перейти — нужно правильно составить абсолютную ссылку (видимо, Hoper не умеет этого)
- разные коды ответов: имеется несколько HTTP кодов ответов с редиректами, они имеют вид 3xx. Это нужно учитывать при написании парсера. При этом нельзя ориентироваться на код ответа 200 для прекращения обхода ссылок, поскольку код ответа 404 или 403 и другие также означают, что нужно остановиться
- переадресация с кукиз: некоторые сайты устанавливают кукиз и действуют исходя из них
- некоторые сервисы активно противодействуют ботам
- редиректы могут выполняться не только с помощью HTTP заголовков, но и методами JavaScript и HTML.
Код:
<meta http-equiv='refresh' content='1;url=https://pay2u.space/d/5d9a67e7a054c'>
Код:
<script>window.location.href = "http://fara.host/?o08z";</script>
Код:
<body><script>function ready(callback){ if(document.readyState!='loading') callback(); else if (document.addEventListener) document.addEventListener('DOMContentLoaded', callback); else document.attachEvent('onreadystatechange', function(){if (document.readyState=='complete') callback();});}ready(function(){ var options = { excludes: {canvas: true, fonts:true} }; Fingerprint2.get(options, function(components) { var fingerprint = Fingerprint2.x64hash128(components.map(function (pair) { return pair.value }).join(), 64); location.href = window.location.protocol + "//" + window.location.host + '/check-unique/index?unique_code='+fingerprint+'&link_type=partner&code=5d9a67e7a054c&u=&url=http://goldenreceiptwin.top/&upgrade=9c69cd6a8a0c0'})});</script></body>
Чтобы использовать скрипт создайте файл dest-finder.sh:
Код:
gedit dest-finder.sh
Bash:
#!/bin/bash
LINK=$1
COUNTER=1
rm /tmp/cookies.txt 2>/dev/null
echo "Получена для анализа ссылка: $LINK"
echo
while (( 1 )); do
HEADER=`curl -s -I -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36' --cookie-jar /tmp/cookies.txt -b /tmp/cookies.txt "$LINK"`
LOCATION=`echo "$HEADER" | grep -E -i '^Location: ' | sed 's/Location: //' | sed 's/location: //' | sed 's/[[:space:]]\+//g'`
CODE=`echo "$HEADER" | head -n 1`
if [[ -z "$LOCATION" ]]; then
BODY=`curl -s -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36' --cookie-jar /tmp/cookies.txt -b /tmp/cookies.txt "$LINK"`
LOCATION=`echo "$BODY" | grep -E "(location.href)|(meta http\-equiv='refresh')" | grep -E -o "http(:|s)[^']+" | head -n 1 | sed 's/";<\/script>//'`
if [[ -z "$LOCATION" ]]; then
echo "Конечный пункт назначения: $LINK"
echo
echo "Во время переадресаций были установлены следующие кукиз: "
cat /tmp/cookies.txt | awk '$1 != "#"'
exit
fi
fi
echo "Переадресация номер: $COUNTER"
echo "Получен код ответа: $CODE"
echo "Выполнена переадресация на $LOCATION"
echo ""
if [[ -z "`echo \"$LOCATION\" | grep -E '(^http)'`" ]]; then
if [[ "$LOCATION" == "/" ]]; then
LOCATION=''
fi
LINK="`echo "$LINK" | grep -E -o '[^?]*' | head -n 1`""$LOCATION"
else
LINK="$LOCATION"
fi
COUNTER=$(($COUNTER+1))
done
Bash:
bash dest-finder.sh URL
Например:
Код:
bash dest-finder.sh 'http://hackware.ru/?goto=1'
взято с hackware.ru