1565349038.jpg55 Кб, 634x526
1. Генерирую список ключей с помощью random seed (из 43739 В конец треда | Веб
1. Генерирую список ключей с помощью random seed (из питона, например)
2. Храню в двух копиях на сервере и клиенте
3. http://example.com/exec/?path=[путь до скрипта или команды]&key=[первый ключ из списка]
4. Получаю ответ от сервера
5. Убираю использованный ключ в списках на клиенте и сервере
Где я проебался?
2 43740
Ю Почему просто не использовать асимметричную криптографию, подписывая каждый запрос с проверкой на сервере?
3 43741
>>740


Без ю, лол.
sage 4 43742
>>739 (OP)

> http


Человек посередине перехватывает твой пакет, меняет path на rm -rf /* и отправляет дальше
5 43743
>>742
Точно. Вот как раз нормальная подпись от такого бы и помогла.
# OP 6 43744
>>740
Можно, наверное. Но это ж нужно тянуть GPG... Или нет? А так простота реализации: random.seed() в Python, math.randomseed() в Lua. Нагенерировать списочек из base58 длинной где-то 32 символа не проблема. А Lua-то запустить даже на тостере можно.
>>742
О, это ты прав, напрямую писать исполняемый код опасно. Тогда имя скрипта буду передавать, проверять, существует ли такой файл и запускать. Спасибо
1251980611735.jpg115 Кб, 1060x1558
7 43745
>>744

>Тогда имя скрипта буду передавать, проверять, существует ли такой файл и запускать


param=existing.script;rm -rf /
8 43746
>>744
Ну добавь хотя бы хеш команды с солью (секретом), чтобы нельзя было подделывать запросы, как показывает >>745
9 43749
>>746
Лучше вообще никогда не передавать команды системы или параметры к командам напрямую в систему, я как старый багхантер атвичаю.
1563886617.jpg75 Кб, 1143x954
# OP 10 43750
>>745
>>746
>>749
Спасибо, анончики. Может тогда написать скрипты и отправлять индекс скрипта из списка?
11 43767
>>744

> random.seed()


Эта фигня генерирует псевдослучайные числа. Это не есть хорошо для криптографии. Там, где можно найти закономерность, можно сделать уязвимость.
12 43768
>>739 (OP)
Почему бы не обернуть твои запросы в SSL, TLS или SSH?
# OP 13 43792
>>767
Да, вот думал над этим
>>768
Опять-таки, чтобы реализацию можно было написать на чём угодно и без массивных библиотек
14 43794
>>792
Добавь простую подпись запроса каким-нибудь md5 (или любым другим) хешем.
То есть допустим у тебя есть запрос: /exec/?path=script.py&arg1=foo&arg2=bar
Сортируешь входящие параметры по алфавиту, чтобы получилось:
params = "arg1=foo&arg2=bar&path=script.py"
Плюс ты имеешь какую-нибудь случайную соль, например:
salt = "98Y3cs6UwRS1TbT"
Эта соль известна клиенту (чтобы подписывать запросы) и серверу (чтобы проверять), но не известна третьим лицам.
Берешь хеш-функцию (md5 или какую хочешь) и получаешь хеш от соли и параметров:
hash = md5(salt + "." + params)
И получается у тебя допустим fddb0e9af298189f925f62bc634fbcce. Передаешь его в запросе: /exec/?path=script.py&arg1=foo&arg2=bar&md5=fddb0e9af298189f925f62bc634fbcce
На сервере сверяешь так же хеш с солью для всех параметров, кроме md5. Если не совпало, значит запрос подделан, значит отбрасывается.

Плюсы:
- простота реализации, пишется за 5 минут, можно запускать хоть на чайнике
Минусы:
- У тебя по прежнему http, все тело запроса видно перехватчику.
- md5 небезопасен, но мне кажется для твоей задачи пойдет. Ну или возьми sha2.
15 43796
>>750

> Спасибо, анончики. Может тогда написать скрипты и отправлять индекс скрипта из списка?


Подождем еще 2 года пока ты не изобретешь API.
Обновить тред