Size: a a a

JavaScript.Ninja

2020 September 23

e

ezhidze in JavaScript.Ninja
Gitlab - достаточно популярный продукт для разработки, благодаря self-hosted решению его часто можно встретить на поддоменах компаний. Помимо того, что в нем также присутствует регистрация без подтверждения email’а (смотрим в предыдущие посты), это еще и отличная возможность собрать информацию о сотрудниках.

Без аутентификации доступен следующий API метод - gitlab.company.local/api/v4/users/{id}

На самом gitlab - эта ручка также доступна, например https://gitlab.com/api/v4/users/7154957:

{"id":7154957,"name":"Bo0oM","username":"webpwn","state":"active","avatar_url":"https://secure.gravatar.com/avatar/4e99709ca6b52f78d02cb92a5bc65d85?s=80\u0026d=identicon","web_url":"https://gitlab.com/webpwn","created_at":"2020-09-21T17:25:55.046Z","bio":"","bio_html":"","location":"","public_email":"","skype":"","linkedin":"","twitter":"@i_bo0om.ru","website_url":"https://t.me/webpwn","organization":"","job_title":"","work_information":null}

Перебирая идентификаторы, можно за короткое время собрать список логинов (и другую информацию о сотрудниках компании.

По логину также можно узнать открытые ключи - https://gitlab.com/webpwn.keys

Отдельного упоминания заслуживает avatar_url:

”avatar_url":"https://secure.gravatar.com/avatar/4e99709ca6b52f78d02cb92a5bc65d85?s=80\u0026d=identicon”

Сервис gavatar содержит email в пути к изображению - 4e99709ca6b52f78d02cb92a5bc65d85. Это ни что иное, как md5 от email’а в нижнем регистре.

echo -n "webpwn@bo0om.ru" | md5


4e99709ca6b52f78d02cb92a5bc65d85


А так как у нас скорее всего корпоративный домен, узнать логины по остальным данным и собрать базу программистов компании будет достаточно просто.
источник

IK

Illya Klymov in JavaScript.Ninja
ezhidze
@xanf_ua привет, я понимаю, что ты фронтендер, но как ты думаешь, это баг или фича?
Уже писал, автор эталонно не шарит
источник

IK

Illya Klymov in JavaScript.Ninja
Перебрать пользователей можно только в инстансах, у которых разрешены публичные проекты
источник

PG

Pavel Gubin in JavaScript.Ninja
Illya Klymov
Перебрать пользователей можно только в инстансах, у которых разрешены публичные проекты
+
источник

VB

Vladislav Boldakov in JavaScript.Ninja
Всем привет, открыл для себя такую вещь как Redux Toolkit. Появилось необходимость соединить ее с redux-saga, но ничего не нашел кроме
saga-slice - https://github.com/saga-slice/saga-slice. Но смущает мало скачиваний npm, после этого мне показалось, что писать саги внутри slice-функции излишне. Кто-нибудь сталкивался с использованием вместе Redux Toolkit и redux-saga? Объединяли их или держали саги отдельно?
источник

VK

Vladimir Klimov in JavaScript.Ninja
Vladislav Boldakov
Всем привет, открыл для себя такую вещь как Redux Toolkit. Появилось необходимость соединить ее с redux-saga, но ничего не нашел кроме
saga-slice - https://github.com/saga-slice/saga-slice. Но смущает мало скачиваний npm, после этого мне показалось, что писать саги внутри slice-функции излишне. Кто-нибудь сталкивался с использованием вместе Redux Toolkit и redux-saga? Объединяли их или держали саги отдельно?
Я саги отдельно писал просто
источник

IK

Illya Klymov in JavaScript.Ninja
Не вижу смысла соединять редьюсеры и саги
источник

IK

Illya Klymov in JavaScript.Ninja
Это ж примитивы разных слоев
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
Кто-то знает какие-то фрейиворки/либы для ноды, которые позволят абстрагироваться от коммуникации чежду клиентом и сервером и делать все посредством вызова функций. Думаю, должно быть что-то похожее на RPC, но без какого-то своего хитрого языка для определения функций. Допустим, чтобы определять функции как shared на TS и имплементить их соответственно на клиенте или сервере
источник

VK

Vlad Krokhin in JavaScript.Ninja
Vitaliy Stoliarov
Кто-то знает какие-то фрейиворки/либы для ноды, которые позволят абстрагироваться от коммуникации чежду клиентом и сервером и делать все посредством вызова функций. Думаю, должно быть что-то похожее на RPC, но без какого-то своего хитрого языка для определения функций. Допустим, чтобы определять функции как shared на TS и имплементить их соответственно на клиенте или сервере
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
хм.. не видел в нем какой-то поход, который был бы основан на shared объявлениях прототипов
источник

PA

Pavlo Anichin in JavaScript.Ninja
Привет всем, у меня тут на одном собесе спросили, как создать функцию, которая ни на чём не замыкается? Это реально?) Подскажите, пожалуйста как это?
источник

l⚔

lowpolybrain ⚔️ in JavaScript.Ninja
на которую ничего не замыкается?
источник

l⚔

lowpolybrain ⚔️ in JavaScript.Ninja
первое что приходит в голову - через конструктор Function
источник

MV

Maxim Vynogradov in JavaScript.Ninja
Pavlo Anichin
Привет всем, у меня тут на одном собесе спросили, как создать функцию, которая ни на чём не замыкается? Это реально?) Подскажите, пожалуйста как это?
eval ?😂
источник

l⚔

lowpolybrain ⚔️ in JavaScript.Ninja
ага, или через eval :D
источник

l⚔

lowpolybrain ⚔️ in JavaScript.Ninja
хотя, она, эта функция, ведь может замкнуть чтонить из window. Или внутри себя создать функцию, которая замкнёт что-нибудь из window...
источник

ИГ

Игорь Гончаренко... in JavaScript.Ninja
Всем привет. Подскажите пожалуйста в данном чате можно задавать вопросы касательно не работающего скрипта ?)
источник

PA

Pavlo Anichin in JavaScript.Ninja
lowpolybrain ⚔️
хотя, она, эта функция, ведь может замкнуть чтонить из window. Или внутри себя создать функцию, которая замкнёт что-нибудь из window...
Я был в замешательстве от вопроса, но спасибо за ответы) Наверное eval
источник

l⚔

lowpolybrain ⚔️ in JavaScript.Ninja
Может это просто был один из таких вопросов. Ну, знаете, когда интервьювер что-нибудь сказал и смотрит на твою реакцию
источник