Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Скрипт защиты perl кода от хостеров (https://forum.antichat.xyz/showthread.php?t=20525)

hidden 15.06.2006 03:21

Скрипт защиты perl кода от хостеров
 
В правилах хостинга бывает написано чтоб пользователи не размищяли шэлы, не проверенные - не защищённые скрипты, proxy скрипты, а также файлы, которые могут повредить системе.

Это значит если я залью шэл, а они его найдут и в лучшем случае они его удалят, а в худшем могут не только распрощаться со своим акаунтом, но неизвестно что ещё.

Но если админы не понимают, как работает программа, а также она не похожа ни на один из известных шэлов, зничит им и предъявить нечего. Для этого люди разработали скрипты - языки программирования с открытым кодом, это очень облегчило работу админов.

Но ведь интересно, что же на этом сервере. И тут я решил усложнить их работу вплоть до невозможности. К примеру как вы думаете что делает ниже приведённый скрипт.
PHP код:

#!/usr/bin/perl
use MIME::Base64;$data='
eqt4m4FpjbKcmWqblItprJp/j6mTc6OrmKOjrZ1zcpuEZm6rm3+PpZV1ZGSajnmkiJlzYo2MnWaD
a3ujiomfqY19bJubmXppdqKDa0GbbIKdlIabo5B+pLJ6qp1qd6KMa5mRgWg8
'
;eval MIME::Base64::decode('
CigkcGFzcyk9JEVOVnsiSFRUUF9DT09LSUUifT1+L3Bhc3NcPShbXjtdKikvaTskcGw9bGVuZ3Ro
KCRwYXNzKTskZGF0YT1NSU1FOjpCYXNlNjQ6OmRlY29kZSgkZGF0YSk7CiRkbD1sZW5ndGgoJGRh
dGEpO2lmKCgkcGw+MCkmJigkcGw8JGRsLzIpKXtteSR4ZHRhO2ZvciRuKDAuLiRkbC0xKXsKJHhk
dGEuPXBhY2soIkMiLCh1bnBhY2soIkMiLHN1YnN0cigkZGF0YSwkbiwxKSktdW5wYWNrKCJDIixz
dWJzdHIoJHBhc3MsJG4lJHBsLDEpKSklMjU1KX0KaWYoJHhkdGEhfi9bXDAuLlwuOi4uQFsuLmB7
Li5ceGZmXSsvKXtldmFsIE1JTUU6OkJhc2U2NDo6ZGVjb2RlKCR4ZHRhKTtleGl0O30KfXByaW50
ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cblxuV3JvbmcgcGFzc3dvcmQiO2V4aXQ7
'
); 

ну типа ивалируются закомпресированнозабэйсин ные данные, а на самом деле это вот такая програмка

PHP код:

#! /usr/bin/perl
print "Content-type: text/plain\n\n";
system('dir');
exit; 

результат, мы получаем содержимое текущего каталога. На первый взгляд можно сказать остаётся только расшифровать и раздать эти строки как и делает эта программа, допустим они это сделали

PHP код:

#!/usr/bin/perl
use MIME::Base64;use Compress::Zlib;$data='
qc4n4KmDL2lH23sB5wGBQm5hhKZA3X+mYV6GBwdZfqOpAUFq6WSGoUA15UFCiFrUqy1kzz/WV2hD
tMViPcT1X8fJqWKDbeS88MfCqeHwuTp87tCH50ladC3sdLzwtT9BiZTDneoyTgJYPg==
'
; ($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
if(
$xdta!~/[\0..\.:..@[..`{..\xff]+/){eval MIME::Base64::decode($xdta);exit;}
}print "Content-Type: text/plain\n\nWrong password";exit; 

Вот теперь становиться понятно что для полной расшифровки нам потребуется пароль, но дажэ если он это понял, он ведь ничего не может предявить, тат как я просто очень хорошо защитил свою программу, как и было написано в договоре. Им остаётся только надеяться что это безопасная программа так как они не понимают как она работает.

Как же этого добиться? Я написал две программы, для зашифровки этим способом и вот они

PHP код:

#!/usr/bin/perl 
use MIME::Base64;my$file=shift;my$pass=shift;
open(IN,"<$file")||die'ErrorOpenning';read(IN,my$data,-s$file);close(IN);
$data=MIME::Base64::encode($data);my$pl=length($pass);my$dl=length($data);my$xdta;my$n;
for
$n(0..$dl-1){$xdta.=pack("C",(unpack("C",substr($data,$n,1))+unpack("C",substr($pass,$n%$pl,1)))%255)}
$data=MIME::Base64::encode($xdta);$prog=MIME::Base64::encode('
($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
if($xdta!~/[\0..\.:..@[..`{..\xff]+/){eval MIME::Base64::decode($xdta);exit;}
}print "'
."Content-Type: text/plain\\n\\nWrong password\";exit;");
$data="#!/usr/bin/perl\nuse MIME::Base64;\$data='\n$data';eval MIME::Base64::decode('\n$prog');";
open(OUT,">_$file")||die'ErrorSaving';print(OUT$data);close(OUT); 

PHP код:

#!/usr/bin/perl 
use MIME::Base64;use Compress::Zlib;my$file=shift;my$pass=shift;
open(IN,"<$file")||die'ErrorOpenning';read(IN,my$data,-s$file);close(IN);
$data=compress(MIME::Base64::encode($data));my$pl=length($pass);my$dl=length($data);my$xdta;my$n;
for
$n(0..$dl-1){$xdta.=pack("C",(unpack("C",substr($data,$n,1))+unpack("C",substr($pass,$n%$pl,1)))%255)}
$data=MIME::Base64::encode($xdta);$prog=MIME::Base64::encode(compress('
($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
$xdta=uncompress($xdta);if($xdta!~/[\0..\.:..@[..`{..\xff]+/){eval MIME::Base64::decode($xdta);exit;}
}print "'
."Content-Type: text/plain\\n\\nWrong password\";exit;"));
$data="#!/usr/bin/perl\nuse MIME::Base64;use Compress::Zlib;\$data='\n$data';eval uncompress(MIME::Base64::decode('\n$prog'));";
open(OUT,">_$file")||die'ErrorSaving';print(OUT$data);close(OUT); 

Первая не использует gzip сжатие так как это медтеннее и не везде поддержуется, а результатом второй становятся очень маленькие файлы. Первым параметром даётся имя шифруемого файла, а вторым пароль.

Как же запустить результат работы этих программ?
Нужно каким небудь скриптом добавить в Куки в переменную pass тот пароль, который довали при зашифровке, например таким

PHP код:

#!/usr/bin/perl 
print "Set-Cookie: pass=1234567890\nContent-Type: text/plain\n\n"

Ну, или придумать свою собственную авторизацию.

Учитуя, что форум вставляет пробелы, а их найти в этом страшном тексте очень сложно, я забэйсил оби, держите.

Код:

IyEvdXNyL2Jpbi9wZXJsIAp1c2UgTUlNRTo6QmFzZTY0O215JGZpbGU9c2hpZnQ7bXkkcGFzcz1z
aGlmdDsKb3BlbihJTiwiPCRmaWxlIil8fGRpZSdFcnJvck9wZW5uaW5nJztyZWFkKElOLG15JGRh
dGEsLXMkZmlsZSk7Y2xvc2UoSU4pOwokZGF0YT1NSU1FOjpCYXNlNjQ6OmVuY29kZSgkZGF0YSk7
bXkkcGw9bGVuZ3RoKCRwYXNzKTtteSRkbD1sZW5ndGgoJGRhdGEpO215JHhkdGE7bXkkbjsKZm9y
JG4oMC4uJGRsLTEpeyR4ZHRhLj1wYWNrKCJDIiwodW5wYWNrKCJDIixzdWJzdHIoJGRhdGEsJG4s
MSkpK3VucGFjaygiQyIsc3Vic3RyKCRwYXNzLCRuJSRwbCwxKSkpJTI1NSl9CiRkYXRhPU1JTUU6
OkJhc2U2NDo6ZW5jb2RlKCR4ZHRhKTskcHJvZz1NSU1FOjpCYXNlNjQ6OmVuY29kZSgnCigkcGFz
cyk9JEVOVnsiSFRUUF9DT09LSUUifT1+L3Bhc3NcPShbXjtdKikvaTskcGw9bGVuZ3RoKCRwYXNz
KTskZGF0YT1NSU1FOjpCYXNlNjQ6OmRlY29kZSgkZGF0YSk7CiRkbD1sZW5ndGgoJGRhdGEpO2lm
KCgkcGw+MCkmJigkcGw8JGRsLzIpKXtteSR4ZHRhO2ZvciRuKDAuLiRkbC0xKXsKJHhkdGEuPXBh
Y2soIkMiLCh1bnBhY2soIkMiLHN1YnN0cigkZGF0YSwkbiwxKSktdW5wYWNrKCJDIixzdWJzdHIo
JHBhc3MsJG4lJHBsLDEpKSklMjU1KX0KaWYoJHhkdGEhfi9bXDAuLlwuOi4uQFsuLmB7Li5ceGZm
XSsvKXtldmFsIE1JTUU6OkJhc2U2NDo6ZGVjb2RlKCR4ZHRhKTtleGl0O30KfXByaW50ICInLiJD
b250ZW50LVR5cGU6IHRleHQvcGxhaW5cXG5cXG5Xcm9uZyBwYXNzd29yZFwiO2V4aXQ7Iik7CiRk
YXRhPSIjIS91c3IvYmluL3BlcmxcbnVzZSBNSU1FOjpCYXNlNjQ7XCRkYXRhPSdcbiRkYXRhJztl
dmFsIE1JTUU6OkJhc2U2NDo6ZGVjb2RlKCdcbiRwcm9nJyk7IjsKb3BlbihPVVQsIj5fJGZpbGUi
KXx8ZGllJ0Vycm9yU2F2aW5nJztwcmludChPVVQkZGF0YSk7Y2xvc2UoT1VUKTs=

Код:

IyEvdXNyL2Jpbi9wZXJsIAp1c2UgTUlNRTo6QmFzZTY0O3VzZSBDb21wcmVzczo6WmxpYjtteSRm
aWxlPXNoaWZ0O215JHBhc3M9c2hpZnQ7Cm9wZW4oSU4sIjwkZmlsZSIpfHxkaWUnRXJyb3JPcGVu
bmluZyc7cmVhZChJTixteSRkYXRhLC1zJGZpbGUpO2Nsb3NlKElOKTsKJGRhdGE9Y29tcHJlc3Mo
TUlNRTo6QmFzZTY0OjplbmNvZGUoJGRhdGEpKTtteSRwbD1sZW5ndGgoJHBhc3MpO215JGRsPWxl
bmd0aCgkZGF0YSk7bXkkeGR0YTtteSRuOwpmb3IkbigwLi4kZGwtMSl7JHhkdGEuPXBhY2soIkMi
LCh1bnBhY2soIkMiLHN1YnN0cigkZGF0YSwkbiwxKSkrdW5wYWNrKCJDIixzdWJzdHIoJHBhc3Ms
JG4lJHBsLDEpKSklMjU1KX0KJGRhdGE9TUlNRTo6QmFzZTY0OjplbmNvZGUoJHhkdGEpOyRwcm9n
PU1JTUU6OkJhc2U2NDo6ZW5jb2RlKGNvbXByZXNzKCcKKCRwYXNzKT0kRU5WeyJIVFRQX0NPT0tJ
RSJ9PX4vcGFzc1w9KFteO10qKS9pOyRwbD1sZW5ndGgoJHBhc3MpOyRkYXRhPU1JTUU6OkJhc2U2
NDo6ZGVjb2RlKCRkYXRhKTsKJGRsPWxlbmd0aCgkZGF0YSk7aWYoKCRwbD4wKSYmKCRwbDwkZGwv
Mikpe215JHhkdGE7Zm9yJG4oMC4uJGRsLTEpewokeGR0YS49cGFjaygiQyIsKHVucGFjaygiQyIs
c3Vic3RyKCRkYXRhLCRuLDEpKS11bnBhY2soIkMiLHN1YnN0cigkcGFzcywkbiUkcGwsMSkpKSUy
NTUpfQokeGR0YT11bmNvbXByZXNzKCR4ZHRhKTtpZigkeGR0YSF+L1tcMC4uXC46Li5AWy4uYHsu
Llx4ZmZdKy8pe2V2YWwgTUlNRTo6QmFzZTY0OjpkZWNvZGUoJHhkdGEpO2V4aXQ7fQp9cHJpbnQg
IicuIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxcblxcbldyb25nIHBhc3N3b3JkXCI7ZXhpdDsi
KSk7CiRkYXRhPSIjIS91c3IvYmluL3BlcmxcbnVzZSBNSU1FOjpCYXNlNjQ7dXNlIENvbXByZXNz
OjpabGliO1wkZGF0YT0nXG4kZGF0YSc7ZXZhbCB1bmNvbXByZXNzKE1JTUU6OkJhc2U2NDo6ZGVj
b2RlKCdcbiRwcm9nJykpOyI7Cm9wZW4oT1VULCI+XyRmaWxlIil8fGRpZSdFcnJvclNhdmluZyc7
cHJpbnQoT1VUJGRhdGEpO2Nsb3NlKE9VVCk7

Так что теперь просто удалите все пробелы и декодируйте бэйс. Да кстати эта программа не является только лишь инструментом хакеров, ей можно пользоваться просто для защиты своих собственных программ.

Удачи в использовании.

Я писал сталью и приведённые выше программы самостоятельно, не пользуясь сторонней помощью, и все права на них принадлежат только мне, но при этом я не несу никакой ответственности за их использование.

Оценивайте, критикуйте, задавайте вопросы, находите багги, буду рад ответить.
hidden специально для AntiChat

blackybr 15.06.2006 07:29

Молодец ) только один вопросик.. чем плоха обычная компиляция перль скриптов?
В стандартную поставку Перл входят модули B::xxxxx с помощю которых легко делаються бинарики (и не только) вот таким методом(для никсов):

shell> perlcc -b myprogram.pl - делает исполняемый myprogram;

или

shell> perl -MO=Bytecode myprogram.pl - делает тоже самое.

Проблемка лишь в том, что как написано в доках на модуль: "Current status: experimental".
У меня почти все работало(даже подключались мои модули) , вот только хотя бы такая вещь как DBI просто не скомпилировалась(!!!). Ради новой версии этого модуля я скачал perl-5.8.0, и поставил под мою старушку Фрю(она у меня как полигон для испытаний тяжелой артиллерии), но по каким-то причинам именно этот модуль отказался работать. Теперь буду ставить FreeBSD 4.6(была 4.3), посмотрим что из этого получиться.

ЗЫ
Цитата:

Цитата:
не размищять шэлы, не проверенные - не защищённые скрипты, а также файлы, которые могут повредить системе.
Если честно yе читал никогда правила хостеров )))

hidden 15.06.2006 07:57

Знаешь, я никогда не слышел про это, сейчас попробовал
Цитата:

perl -MO=Bytecode myprogram.pl >
Цитата:

myprogram.dat

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

Может этот метод и не плох, но в моём ещё и сжатие есть, а ещё бинарники на cgi серверах тоже запрещают заливать.

blackybr 15.06.2006 08:07

Цитата:

полугился бинарник, но я не знаю чем его запускать под винду.
hidden сигвином запускай ) либо если нужен экзэшник то юзай прогу perl2exe..
лови версию 8.7 + лекарство от жадности ) (она 150 баксов стоит, как узнал - упал )))

_http://thw.ladyk-webdesign.de/perl2exe.rar

hidden 15.06.2006 08:28

Не программа а сплошной прикол, тот пример, что я приводил, с командой dir вышел на 386кб, на делфи с формой меньше занимает, 150 баксов:p.
Я вобще на фасме пишу чтоб меньше занимало и быстрее работоло, а это даже с дельфями не сравница.
А ещё я этим всем левым компилерам не доверяю, кто знает что они туда закомпилият, на сотни килобайт, может инфу о моём компе, а в перле и в фасме, я каждый байт понимаю, аж спокойнее.

blackybr 15.06.2006 08:36

2hidden _http://www.indigostar.com/ordperl.htm пали цены если я прикалываюсь ))

вообще в принципе работает нормально.. скрипты откомпиленые им отлично работают.. но в принципе твое дело )

nerezus 15.06.2006 11:00

Цитата:

В правилах любого хостинга обычно написано
ыыы, гон )
хотя, если админы хостенка - школьнеги....
тогда все возмоно, господа =)

hidden 15.06.2006 18:31

Цитата:

Сообщение от nerezus
ыыы, гон )
хотя, если админы хостенка - школьнеги....
тогда все возмоно, господа =)

А чё гон, про "не проверенные - не защищённые скрипты" так и написано, а также приводится список типов файлов, которые запрещены, даже для закачки.

Azazel 15.06.2006 19:02

Не, тогда типа получается, что я ставлю форум, да любой, но на него есть приватная либо паблик бага. Он проверенный, защищённый? И вобще какого хрена я должен что-либо проверять перед тем как залить. Я деньги плачу хостёру => следовательно это просто типа мой диск. Купленый. Собственный. Если админы не в состоянии настроить сервер - это их проблемы. Nerezus правильно говорит. Нормальнм хостёрам даже в голову такое не придёт
В натуре школьнеги.

hidden 15.06.2006 19:06

Вот пример http://www.activewebhosting.com/faq/...s-allowed.html


Время: 09:49