|
Автор |
Съобщение |
Активен
Регистриран на: 02/08/2011 9:24 pm
Support:
Bonus: 231
Мнения: 3081
|
15/01/2018 3:37 pm
Скенер за заплахи
|
|
|
Здравейте колеги! Реших да си създам скенер за възможни заплахи качени в сайта. В момента следя по разширението на файла и ако файла е PHP, то да се проверява за следните tokens: Цитат: | T_BAD_CHARACTER, T_START_HEREDOC, T_END_HEREDOC, T_CURLY_OPEN, T_DECLARE, T_EVAL, T_DOLLAR_OPEN_CURLY_BRACES, T_ELLIPSIS, T_GOTO, T_HALT_COMPILER, T_INLINE_HTML, T_STRING_VARNAME, T_YIELD
|
Какво мислите по темата? |
|
Върнете се в началото |
|
|
Активен
Регистриран на: 11/06/2012 8:07 pm
Support:
Bonus: 315
Мнения: 1482
|
15/01/2018 5:34 pm
Re: Скенер за заплахи
|
|
|
Какъв е проблемът с тези? Цитат: | T_START_HEREDOC, T_END_HEREDOC, T_CURLY_OPEN, T_DOLLAR_OPEN_CURLY_BRACES, T_ELLIPSIS, T_STRING_VARNAME, T_YIELD
|
Прегледах ги в документацията, не виждам каква заплаха може да предизвикат? Изглеждат си съвсем ок. |
|
Върнете се в началото |
|
|
Активен
Регистриран на: 02/08/2011 9:24 pm
Support:
Bonus: 231
Мнения: 3081
|
15/01/2018 7:16 pm
|
|
|
Принципно нищо, но съм ги поставил за да ме алармират дали се съдържат в даден код. Идеята ми е да си създам скенер да проверява дали нянам качен shell в системата. Принципно това ще е една да кажем минимална защита, която да се активира в Админ панела, но като цяло съм мераклия да я поразвия малко, като идея.
|
|
Върнете се в началото |
|
|
Активен
Регистриран на: 11/06/2012 8:07 pm
Support:
Bonus: 315
Мнения: 1482
|
15/01/2018 10:14 pm
|
|
|
Ако се пазиш от шел, вместо синтактични елементи търси команди - примерно rm/mount/cp/mv/.... Това лесно ще се заобикoли с разделяне на стринга на парчета, така че може би за това ще трябва да следиш - подозрителна конкатенация на повече стрингове в един.
|
|
Върнете се в началото |
|
|
Support
Регистриран на: 17/04/2010 8:37 am
Support:
Bonus: 698
Мнения: 2663
|
16/01/2018 6:07 pm
|
|
|
Btw: |
| <?${[]}.=[];${![]}.=${[]}{!![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${ ![]};++${![]};${![]}.=${[]}{![]+![]+![]};++${![]};++${![]};++${![]};++${![]};${![ ]}.=${![]}{![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};${ ![]}.=${![]}{![]+![]}.${![]}{![]+![]};++${![]};++${![]};++${![]};${![]}.=${[]}^${ []}{![]+![]+![]};${![]}.=${![]}{!![]};++${![]};++${![]};++${![]};++${![]};++${![] };++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![] };++${![]};${![]}.=${![]}{![]+![]+![]+![]}.${![]}{![]+![]+![]+![]};++${![]};++${! []};++${![]};${![]}.=${![]}{![]+![]}.${[]}{![]+![]+![]};++${![]};++${![]};++${![] };${[]}=${[]}{!![]};++${[]};++${[]};++${[]};${![]}.=${[]}^${![]}{![]}?><?=${![]};
| | |
|
|
Върнете се в началото |
|
|
Активен
Регистриран на: 02/08/2011 9:24 pm
Support:
Bonus: 231
Мнения: 3081
|
17/01/2018 4:06 pm
|
|
|
Fakeheal написа: | Btw:
|
| <?${[]}.=[];${![]}.=${[]}{!![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${ ![]};++${![]};${![]}.=${[]}{![]+![]+![]};++${![]};++${![]};++${![]};++${![]};${![ ]}.=${![]}{![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};${ ![]}.=${![]}{![]+![]}.${![]}{![]+![]};++${![]};++${![]};++${![]};${![]}.=${[]}^${ []}{![]+![]+![]};${![]}.=${![]}{!![]};++${![]};++${![]};++${![]};++${![]};++${![] };++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![] };++${![]};${![]}.=${![]}{![]+![]+![]+![]}.${![]}{![]+![]+![]+![]};++${![]};++${! []};++${![]};${![]}.=${![]}{![]+![]}.${[]}{![]+![]+![]};++${![]};++${![]};++${![] };${[]}=${[]}{!![]};++${[]};++${[]};++${[]};${![]}.=${[]}^${![]}{![]}?><?=${![]};
| | |
|
Извинявай, но нещо не схванах поста ти. |
|
Върнете се в началото |
|
|
Активен
Регистриран на: 02/08/2011 9:24 pm
Support:
Bonus: 231
Мнения: 3081
|
17/01/2018 4:10 pm
|
|
|
anonimen написа: | Ако се пазиш от шел, вместо синтактични елементи търси команди - примерно rm/mount/cp/mv/.... Това лесно ще се заобикoли с разделяне на стринга на парчета, така че може би за това ще трябва да следиш - подозрителна конкатенация на повече стрингове в един. |
Добре, но как да следя за командите? Примерно да следя за функциите, като: system, exec, passthru и други ли?
Последната промяна е направена от dakata__92 на 18/01/2018 6:31 pm; мнението е било променяно общо 1 път |
|
Върнете се в началото |
|
|
Активен
Регистриран на: 12/09/2009 10:07 am
Support:
Bonus: 200
Мнения: 2779
|
17/01/2018 8:19 pm
|
|
|
dakata__92 написа: |
Извинявай, но нещо не схванах поста ти. |
Изпълни го, валиден (безобиден) PHP е т.е. помисли пак дали проверяването за "system", "exec" и т.н. е достатъчно...
Каква е целта ти? Разрешаваш на потребителите да качват файлове и да ги изпълняват, но искаш да ограничиш какво могат да правят? |
|
Върнете се в началото |
|
|
Активен
Регистриран на: 02/08/2011 9:24 pm
Support:
Bonus: 231
Мнения: 3081
|
17/01/2018 9:06 pm
|
|
|
Не. Желая да си направя скенер, който да си вграждам в приложенията и да проверява за нежелан софтуер от мен.
|
|
Върнете се в началото |
|
|
Турист
Регистриран на: 13/05/2016 2:29 pm
Support:
Bonus: 10
Мнения: 335
|
18/01/2018 5:17 pm
|
|
|
Хахах сега е време аз да те насера Сега аз като c++ и python програмист и Haskell знам един метод за проверка на лоши кодове към php виж се колко разбираш ти само от php да ми се ебаваш на мен във постовете Правиш скеннер за shell_exec,base64_decode,edoced_46esab,fopen,fclose,system,php_uname,chmod,readfile,eval,passthru! Тоест защо не направиш проверка на strings Ето ти примерен shell .sh |
| #! /bin/bash # Scanner # exec >> scanlog.txt echo "Mal Scan" echo "" read -p "Vkarai Papka(Root) " phplocation echo "Proverka na strings v cqlata papka" grep -Rn "eval" $phplocation echo "Gotovo priqtelche vij si scanlog.txt." echo "" echo "Skaniraneto prikluchi" echo "" exec 2>&1
| | |
Правиш си един .sh примерно scan.sh пускаш в папката и го викаш  и гледаш после лога! Успех!  Прочем може да се напише и код за всеки 24 часа да сканира целият сайт чрез Cron Job и да ти прати на SMS или на Пощата, името на файла  и време кога и къде е сканиран и как! |
|
Върнете се в началото |
|
|
Support
Регистриран на: 17/04/2010 8:37 am
Support:
Bonus: 698
Мнения: 2663
|
|
Върнете се в началото |
|
|
Активен
Регистриран на: 02/08/2011 9:24 pm
Support:
Bonus: 231
Мнения: 3081
|
18/01/2018 6:25 pm
|
|
|
Fakeheal написа: | Аз много желая да отговоря на горното мнение с цитат от него.
PS: Сега ми стана тъжно.  |
Не си заслужава! Ако си беше направил малко трудът да прочете темата, щеше да е по-ориентиран. Първо проверявам за определени token константи. Както виждам, той НЕ ЗНАЕ какво изразяват те. По-нагоре попитах дали ако проверявам стрингово и за определени функции е достатъчно за да ме алармира, че в даден php файл се съдържа по-опасно съдържание. Качвайки кода в определена неизвестна по структура система, искам директно да сканирам и изведа по-опасните файлове. Това са файлове с определени разширения. В момента питам само за PHP и то по простата причина, че тук има много по-запознати с езика хора от мен. Поставяйки в отделен php файл кода от цитата:
Fakeheal написа: | Btw:
|
| <?${[]}.=[];${![]}.=${[]}{!![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${ ![]};++${![]};${![]}.=${[]}{![]+![]+![]};++${![]};++${![]};++${![]};++${![]};${![ ]}.=${![]}{![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};${ ![]}.=${![]}{![]+![]}.${![]}{![]+![]};++${![]};++${![]};++${![]};${![]}.=${[]}^${ []}{![]+![]+![]};${![]}.=${![]}{!![]};++${![]};++${![]};++${![]};++${![]};++${![] };++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![]};++${![] };++${![]};${![]}.=${![]}{![]+![]+![]+![]}.${![]}{![]+![]+![]+![]};++${![]};++${! []};++${![]};${![]}.=${![]}{![]+![]}.${[]}{![]+![]+![]};++${![]};++${![]};++${![] };${[]}=${[]}{!![]};++${[]};++${[]};++${[]};${![]}.=${[]}^${![]}{![]}?><?=${![]};
| | |
|
скенера ме алармира, че се съдържа константа T_INLINE_HTML. Желая да си направя маркери и да задавам нивото на опасност. Това е лесно, въпроса е сега как е най-правилно да проверявам по стринг за функциите тоест трудоемкото file_get_contents() и preg_match(регулярен израз) или stripos(). Като цяло, важното е да се алармира за даден файл, но само това ли са начините? Мисълта ми е, дали освен директното отваряне на файла и търсене на определен стринг в него е най-лесното и удобно решение по темата? |
|
Върнете се в началото |
|
|
|