{"id":2316,"date":"2020-08-19T16:05:57","date_gmt":"2020-08-19T22:05:57","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=2316"},"modified":"2020-08-24T09:14:26","modified_gmt":"2020-08-24T15:14:26","slug":"bombas-fork-y-como-evitarlas","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=2316","title":{"rendered":"Bombas fork y como evitarlas"},"content":{"rendered":"\n<p><strong>\u00bf que es un fork ?<\/strong><\/p>\n\n\n\n<p>Un fork es una bifurcaci\u00f3n, en inform\u00e1tica es cuando un proceso se divide en 2 e incluso estos a su vez se pueden subdividir en 2 mas, es una forma hacer multitarea similar a los hilos, sin embargo un fork gasta mas recursos que un hilo<\/p>\n\n\n\n<p><strong>\u00bf Como se puede hacer una bomba fork ?<\/strong><\/p>\n\n\n\n<p>Con cualquier lenguaje o que soporte dicha subdivisi\u00f3n, pr\u00e1cticamente cualquier lenguaje permite un fork, en un shell bash de linux y de los unix tambi\u00e9n<\/p>\n\n\n\n<p><strong>Lanzar una bomba fork en bash<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>$ bomba(){ bomba|bomba &amp; }; bomba<\/p><\/blockquote>\n\n\n\n<p><strong>explicaci\u00f3n<\/strong><\/p>\n\n\n\n<p>bomba() {} declara la funci\u00f3n bomba en el shell bash y espera ejecutar comandos entre las llaves {}<\/p>\n\n\n\n<p>bomba | bomba &amp; se llama as\u00ed misma de forma recursiva y le pasa su salida que no es nada a otra funcion que resulta ser ella misma, por lo que se vuelve a llamar, esta su vez se va al fondo como servicio usando el &amp; , una vez en que esta corriendo como servicio o demonio se sigue llamando a si misma en un bucle que termina por agotar la RAM y la capacidad del CPU de procesar<\/p>\n\n\n\n<p>; es un separador de sentencias como en C y algunos lenguajes<\/p>\n\n\n\n<p>bomba Si solo escribimos el bomba(){ bomba|bomba &amp; } no pasaria nada, pues esto declara la funcion y su codigo, pero nunca es llamada, al momento de ejecutar llamarla por primera vez es que se desencadena la denegaci\u00f3n de servicio<\/p>\n\n\n\n<p>la forma cl\u00e1sica es <em>:(){:|:&amp;};:<\/em> Donde simplemente se cambia el nombre de bomba por dos puntos<\/p>\n\n\n\n<p><strong>Bomba fork en lenguaje C<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>#include &lt;unistd.h&gt;<\/p><p>void main()<br \/>{<br \/>while(1) fork();<br \/>}<\/p><\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/bombacfork.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u00bf <strong>Se puede evitar el da\u00f1o de una bomba fork<\/strong> ?<\/p>\n\n\n\n<p>Si, se deben limitar los procesos que un solo usuario puede lanzar, la mayor\u00eda de las veces se puede configurar los limites en el directorio \/etc\/security\/ y en el archivo limits.conf<\/p>\n\n\n\n<p>Al archivo se le agregan lineas de varios tipos de configuraci\u00f3n entre ellas nproc que son los n\u00fameros de procesos que tiene permitidos, por ejemplo el usuario de nombre usuario<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>usuario soft nproc 500<br \/>usuario hard nproc 512<\/p><\/blockquote>\n\n\n\n<p>Solo se le permiten m\u00e1ximo 512 procesos simult\u00e1neos y advertencia a los primeros 500<\/p>\n\n\n\n<p><strong>Servidor para hackear de forma legal<\/strong> ( Actualizado ) NADIE LO PUDO HACKEAR<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/hackserver2020\/hackserver2020.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Otro reto sin hackeos<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bf que es un fork ? Un fork es una bifurcaci\u00f3n, en inform\u00e1tica es cuando un proceso se divide en 2 e incluso estos a su vez se pueden subdividir en 2 mas, es una forma hacer multitarea similar a los hilos, sin embargo un fork gasta mas recursos que un hilo \u00bf Como se&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2316","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hackers-and-tools"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2316"}],"version-history":[{"count":2,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2316\/revisions"}],"predecessor-version":[{"id":2319,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2316\/revisions\/2319"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/2317"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}