{"id":7234,"date":"2014-04-11T11:45:38","date_gmt":"2014-04-11T14:45:38","guid":{"rendered":"http:\/\/www.ethicalhacker.com.br\/site\/?p=7234"},"modified":"2019-06-18T18:09:06","modified_gmt":"2019-06-18T21:09:06","slug":"heartbleed-vulnerabilidade-openssl","status":"publish","type":"post","link":"https:\/\/www.ethicalhacker.com.br\/site\/2014\/04\/exploits\/heartbleed-vulnerabilidade-openssl\/","title":{"rendered":"Heartbleed &#8211; Vulnerabilidade OpenSSL"},"content":{"rendered":"<p style=\"text-align: justify;\"><strong>\u00a01\u00aa Parte<\/strong><\/p>\n<p style=\"text-align: justify;\">A OpenSSL lan\u00e7ou um aviso de bug sobre um patch de vazamento de mem\u00f3ria 64kb em sua biblioteca . O erro foi atribu\u00eddo, como \u00a0Heartbleed -TLS CVE &#8211; 2014-0160.<\/p>\n<p style=\"text-align: justify;\">De acordo com o OpenSSL , a extens\u00e3o Heartbleed\u00a0\u00a0foi introduzido em Mar\u00e7o de 2012 com o lan\u00e7amento da vers\u00e3o 1.0.1 do OpenSSL. Isto implica que a vulnerabilidade est\u00e1 presente em torno de pouco mais de 2 anos. Essa \u00e9 uma vulnerabilidade muito grave que permitir\u00e1 que informa\u00e7\u00f5es protegidas possam ser roubadas , mesmo com o uso de criptografia SSL \/ TLS.<\/p>\n<p style=\"text-align: justify;\">Desde o an\u00fancio , houve rumores no meio undergroud e atores maliciosos sobre o vazamentos ativamente de dados da biblioteca de software e como usar v\u00e1rias parte do c\u00f3digo PoC fornecido para atacar uma enorme quantidade de servi\u00e7os dispon\u00edveis na internet.<\/p>\n<p style=\"text-align: justify;\">Apenas as vers\u00f5es 1.0.1 e 1.0.2- beta vers\u00f5es do OpenSSL s\u00e3o afetados incluindo 1.0.1f e 1.0.2 -beta1 . Os alvos s\u00e3o principalmente a porta 443 . Com isso, um atacante \u00e9 capaz de vazar dados previamente alocados. Isso n\u00e3o inclui as credenciais de texto simples , cookies de sess\u00e3o , chaves privadas para descriptografar ( arbitrariamente comunica\u00e7\u00e3o SSL \/ TLS) , e muito mais . O OpenSSH n\u00e3o parecem ser suscet\u00edveis \u00e0 vulnerabilidade como OpenSSL, No entanto o \u00a0OpenSSL\u00a0 \u00e9 usado para gera\u00e7\u00e3o de chaves , mas n\u00e3o de comunica\u00e7\u00e3o.<\/p>\n<p style=\"text-align: justify;\">O site <a title=\"Heartbleed\" href=\"http:\/\/heartbleed.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Heartbleed.com<\/a> menciona uma ferramenta baseada na web e um conjunto de \u00a0scripts para testar e verificar se voc\u00ea est\u00e1 vulner\u00e1vel a este \u00faltimo exploit :<\/p>\n<p style=\"text-align: justify;\">1 &#8211; Um teste baseado na web.<\/p>\n<p style=\"text-align: justify;\">Link:\u00a0<a title=\"Heartbleed\" href=\"http:\/\/filippo.io\/Heartbleed\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/filippo.io\/Heartbleed\/<\/a><\/p>\n<p style=\"text-align: justify;\">2 &#8211; Um script Python para testar a vulnerabilidade a partir da linha de comando. Se voc\u00ea quiser incluir v\u00e1rios sites, voc\u00ea pode usar uma vers\u00e3o modificada com uma sa\u00edda facilmente analis\u00e1vel .<\/p>\n<p style=\"text-align: justify;\">Link:\u00a0<a title=\"Script\" href=\"http:\/\/docs.google.com\/file\/d\/0Bw4_BgIkljcbRjZkZ2VDMmpiVnM\/edit?pli=1\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/docs.google.com\/file\/d\/0Bw4_BgIkljcbRjZkZ2VDMmpiVnM\/edit?pli=1<\/a><\/p>\n<p style=\"text-align: justify;\">Este post tem feito um excelente trabalho explicando , em c\u00f3digo , exatamente o que aconteceu e o que a vulnerabilidade \u00e9 exatamente. Agora, como um atacante com PoC simples , isso \u00e9 o que somos capazes de fazer:<\/p>\n<p style=\"text-align: justify;\"><strong>1. while [ 1 ]; do python poc.py server.com 443; done<\/strong><br \/>\n<strong> 2. ngrep -i &#8220;password_field_value&#8221; -d any host victim.org and port 443 -q<\/strong><\/p>\n<p style=\"text-align: justify;\">Isso nos permite spam do PoC para dados recentemente alocados e usar ngrep para pegar o campo em que as senhas est\u00e3o sendo enviadas, o di\u00e2metro. Usando estes dois comandos , temos sido capazes de capturar uma grande quantidade de senhas entregues https, \u00a0como texto simples . Como voc\u00ea pode ver , isso quebra uma grande variedade de aplica\u00e7\u00f5es web que incluem e-mails on-line ( yahoo ) , bancos e uma grande variedade de outros alvos.<\/p>\n<p style=\"text-align: justify;\">Uma das quest\u00f5es mais complicadas \u00e9 que os patches OpenSSL n\u00e3o estavam atualizados com o montante de grandes distribui\u00e7\u00f5es de Linux . Significando que havia uma grande janela de tempo entre a corre\u00e7\u00e3o do OpenSSL e quando v\u00e1rias distribui\u00e7\u00f5es \u00a0de Linux podem fornecer o patch para a sua base de usu\u00e1rios. O site <a title=\"OpenSSL\" href=\"http:\/\/www.openssl.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">OpenSSL.org<\/a> forneceu uma vers\u00e3o atualizada do OpenSSL ( 1.0.1g ). Depois de atualizar para a vers\u00e3o mais recente voc\u00ea deve, ent\u00e3o, regenerar a sua chave privada (s) e certificado (s) SSL. Tamb\u00e9m \u00e9 \u00a0recomendado redefinir todas as senhas de nomes de usu\u00e1rio que foram usados durante o per\u00edodo de tempo que voc\u00ea estava vulner\u00e1vel.<\/p>\n<p style=\"text-align: justify;\">Tivemos uma oportunidade de rever o comportamento da explora\u00e7\u00e3o e ver as seguintes assinaturas IDS serem implantadas para a detec\u00e7\u00e3o.<\/p>\n<p style=\"text-align: justify;\"><strong>alert tcp !$HOME_NET any -&gt; $HOME_NET 443 (msg:&#8221;SSLv3 OpenSSL Heartbeat Memory Leak&#8221;; content:&#8221;|18 03 00|&#8221;; depth:3; byte_test:2,&gt;,199,3; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:1006054; tag:session,5,packets; rev:1;)<\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>alert tcp !$HOME_NET any -&gt; $HOME_NET 443 (msg:&#8221;TLSv1 OpenSSL Heartbeat Memory Leak&#8221;; content:&#8221;|18 03 01|&#8221;; depth:3; byte_test:2,&gt;,199,3; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:1006055; tag:session,5,packets; rev:1;)<\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>alert tcp !$HOME_NET any -&gt; $HOME_NET 443 (msg:&#8221;TLSv1.1 OpenSSL Heartbeat Memory Leak&#8221;; content:&#8221;|18 03 02|&#8221;; depth:3; byte_test:2,&gt;,199,3; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:1006056; tag:session,5,packets; rev:1;)<\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>alert tcp !$HOME_NET any -&gt; $HOME_NET 443 (msg:&#8221;TLSv1.2 OpenSSL Heartbeat Memory Leak&#8221;; content:&#8221;|18 03 03|&#8221;; depth:3; byte_test:2,&gt;,199,3; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:1006057; tag:session,5,packets; rev:1;)<\/strong><\/p>\n<p style=\"text-align: justify;\">By:\u00a0Stephen Coty, Chief Security Evangelist at Alert Logic.<\/p>\n<p style=\"text-align: justify;\"><strong>2\u00aa Parte\u00a0<\/strong><\/p>\n<p style=\"text-align: justify;\">O bug Heartbleed \u00e9 um bug particularmente desagrad\u00e1vel. Ele permite que um invasor leia at\u00e9 64KB de mem\u00f3ria, e os pesquisadores de seguran\u00e7a notificam:<\/p>\n<p style=\"text-align: justify;\">Sem o uso de qualquer informa\u00e7\u00e3o privilegiada ou credenciais podemos roubar as chaves secretas usadas para os nossos certificados X.509, nomes de usu\u00e1rio e senhas, mensagens instant\u00e2neas, e-mails e documentos cr\u00edticos de neg\u00f3cios e comunica\u00e7\u00f5es.<\/p>\n<p style=\"text-align: justify;\"><strong>O Bug<\/strong><\/p>\n<p style=\"text-align: justify;\">A corre\u00e7\u00e3o come\u00e7a aqui, em ssl\/d1_both.c:<\/p>\n<pre>int            \r\ndtls1_process_heartbeat(SSL *s)\r\n    {          \r\n    unsigned char *p = &amp;s-&gt;s3-&gt;rrec.data[0], *pl;\r\n    unsigned short hbtype;\r\n    unsigned int payload;\r\n    unsigned int padding = 16; \/* Use minimum padding *\/<\/pre>\n<pre><strong>\u00a0<\/strong><\/pre>\n<p>Ent\u00e3o, primeiro temos um ponteiro para os dados dentro de um registro SSLv3. Que se parece com isso:<\/p>\n<pre><\/pre>\n<pre>typedef struct ssl3_record_st\r\n    {\r\n        int type;               \/* type of record *\/\r\n        unsigned int length;    \/* How many bytes available *\/\r\n        unsigned int off;       \/* read\/write offset into 'buf' *\/\r\n        unsigned char *data;    \/* pointer to the record data *\/\r\n        unsigned char *input;   \/* where the decode bytes are *\/\r\n        unsigned char *comp;    \/* only used with decompression - malloc()ed *\/\r\n        unsigned long epoch;    \/* epoch number, needed by DTLS1 *\/\r\n        unsigned char seq_num[8]; \/* sequence number, needed by DTLS1 *\/\r\n    } SSL3_RECORD;<\/pre>\n<pre><\/pre>\n<pre><span style=\"font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;\">Registros tem um tipo, um tamanho e dados. Voltar para dtls1_process_heartbeat:<\/span><\/pre>\n<pre><\/pre>\n<pre>\/* Read type and payload length first *\/\r\nhbtype = *p++;\r\nn2s(p, payload);\r\npl = p;<\/pre>\n<pre><\/pre>\n<p>O primeiro byte do registro SSLv3 \u00e9 o tipo de heartbeat\u00a0. Os macro n2s leva dois bytes de p , e coloca-os em payload. Isto \u00e9 , na verdade, o tamanho da carga . Note-se que o comprimento real no registro SSLv3 n\u00e3o est\u00e1 marcada.<\/p>\n<p>A\u00a0vari\u00e1vel\u00a0pl \u00a0\u00e9, ent\u00e3o, os dados de heartbeat (batimentos card\u00edacos) resultantes, fornecidos pelo solicitante.<\/p>\n<p>Mais tarde, na fun\u00e7\u00e3o , ele faz isso :<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px;\">unsigned char *buffer, *bp;<\/span><\/p>\n<pre>int r;\r\n\r\n\/* Allocate memory for the response, size is 1 byte\r\n * message type, plus 2 bytes payload length, plus\r\n * payload, plus padding\r\n *\/\r\nbuffer = OPENSSL_malloc(1 + 2 + payload + padding);\r\nbp = buffer;<\/pre>\n<pre><\/pre>\n<p>Ent\u00e3o, n\u00f3s estamos alocando mais mem\u00f3ria que o solicitante pediu : at\u00e9 65535 +1 +2 +16, para ser preciso. A vari\u00e1vel bp vai ser o ponteiro usado para acessar essa mem\u00f3ria . Ent\u00e3o:<\/p>\n<pre><\/pre>\n<pre>\/* Enter response type, length and copy payload *\/\r\n*bp++ = TLS1_HB_RESPONSE;\r\ns2n(payload, bp);\r\nmemcpy(bp, pl, payload);<\/pre>\n<pre><\/pre>\n<p>A macro s2n faz o inverso da n2s: \u00e9 preciso um valor de 16 bits e coloca-lo em dois bytes. Por isso, coloca o mesmo tamanho de carga requerida .<\/p>\n<p>Em seguida, ele copia os bytes de carga \u00fatil de pl, o usu\u00e1rio forneceu dados para a matriz bp rec\u00e9m-alocado . Depois disso, ele envia esta tudo de volta para o usu\u00e1rio. Ent\u00e3o, onde est\u00e1 o erro ?<\/p>\n<p><strong>O usu\u00e1rio controla payload e pl<\/strong><\/p>\n<p>E se o solicitante n\u00e3o chegou a fornecer bytes de carga \u00fatil , como ele disse que ele fez ? E se pl realmente \u00e9 apenas um byte ? Em seguida, a leitura de memcpy vai ler o que a mem\u00f3ria tinha perto do registro de SSLv3 e dentro do mesmo processo .<\/p>\n<p>E, aparentemente , h\u00e1 um monte de coisas nas proximidades.<\/p>\n<p>H\u00e1 duas formas de mem\u00f3ria a que \u00e9 alocada dinamicamente com malloc (pelo menos no Linux) : usando sbrk (2) e utilizando mmap (2). Se a mem\u00f3ria \u00e9 alocada com sbrk , ent\u00e3o ele usa as regras\u00a0heap-grows-up\u00a0e limita o que pode ser encontrado com este, apesar de v\u00e1rios pedidos (especialmente em simult\u00e2neo) ainda pode encontrar um pouco de divers\u00e3o stuff1 .<\/p>\n<p>As aloca\u00e7\u00f5es para bp , n\u00e3o importa em tudo , na verdade. \u00a0A aloca\u00e7\u00e3o para pl , no entanto, tem uma grande import\u00e2ncia . \u00c9 quase certo alocado com sbrk por causa do limite de mmap em malloc . No entanto, coisas interessantes (como documentos ou informa\u00e7\u00f5es do usu\u00e1rio ) , \u00e9 muito prov\u00e1vel serem alocada com mmap e pode ser acessado a partir de pl . V\u00e1rias solicita\u00e7\u00f5es simult\u00e2neas tamb\u00e9m deixar\u00e1 alguns dados interessantes dispon\u00edveis .<\/p>\n<p>Ent\u00e3o o que isso significa? Bem, os padr\u00f5es de aloca\u00e7\u00e3o para pl v\u00e3o informar o que voc\u00ea pode ler . Aqui est\u00e1 o que um dos descobridores da vulnerabilidade tinha a dizer sobre isso :<\/p>\n<p><strong>A corre\u00e7\u00e3o<\/strong><\/p>\n<p>A parte mais importante da corre\u00e7\u00e3o foi esta:<\/p>\n<pre>\/* Read type and payload length first *\/\r\nif (1 + 2 + 16 &gt; s-&gt;s3-&gt;rrec.length)\r\n    return 0; \/* silently discard *\/\r\nhbtype = *p++;\r\nn2s(p, payload);\r\nif (1 + 2 + payload + 16 &gt; s-&gt;s3-&gt;rrec.length)\r\n    return 0; \/* silently discard per RFC 6520 sec. 4 *\/\r\npl = p;<\/pre>\n<pre><\/pre>\n<p>Isto faz duas coisas : a primeira verifica\u00e7\u00e3o verifica batimentos card\u00edacos de comprimento zero . A segunda verifica\u00e7\u00e3o verifica para certificar-se que o comprimento do registro real \u00e9 suficientemente longa . \u00c9 isso a\u00ed.<\/p>\n<pre><\/pre>\n<p style=\"text-align: justify;\"><strong>Li\u00e7\u00f5es<\/strong><\/p>\n<p style=\"text-align: justify;\">O que podemos aprender com isso?<\/p>\n<p style=\"text-align: justify;\">Eu sou um f\u00e3 de C. Foi a minha primeira linguagem de programa\u00e7\u00e3o e que foi a primeira l\u00edngua que eu me senti confort\u00e1vel usando profissionalmente. Mas eu vejo suas limita\u00e7\u00f5es mais claramente agora do que alguma vez antes.<\/p>\n<p style=\"text-align: justify;\">Entre este e o <span style=\"color: #ff0000;\"><a title=\"GNUTLS\" href=\"http:\/\/readwrite.com\/2014\/03\/05\/gnutls-bug-linux-security-flaw-leaves-users-vulnerable-hacks#awesm=~oB8ZFD2IqHA7ab\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #ff0000;\">bug GnuTLS*<\/span><\/a><\/span>, eu acho que n\u00f3s precisamos de fazer tr\u00eas coisas:<\/p>\n<p style=\"text-align: justify;\">1 &#8211; Pagar dinheiro para auditorias de infra-estrutura cr\u00edtica de seguran\u00e7a como seguran\u00e7a OpenSSL;<\/p>\n<p style=\"text-align: justify;\">2- Escrever um monte de testes de unidade e de integra\u00e7\u00e3o para essas bibliotecas;<\/p>\n<p style=\"text-align: justify;\">3 &#8211; Come\u00e7ar a escrever em l\u00ednguas alternativas mais seguras;<\/p>\n<p style=\"text-align: justify;\">Devido como \u00e9 dif\u00edcil escrever em C, de forma segura, n\u00e3o vejo nenhuma outra op\u00e7\u00e3o. Eu doaria para este esfor\u00e7o. Voc\u00ea faria isso?.<\/p>\n<p style=\"text-align: justify;\">By:\u00a0Neel Mehta<\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ff0000;\">Nota: BUG &#8211; GnuTLS<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ff0000;\">Uma variedade de distribui\u00e7\u00f5es Linux est\u00e3o vulner\u00e1veis a hacks por causa de um bug que permite que as pessoas possam contornar os protocolos de seguran\u00e7a para interceptar e disseminar informa\u00e7\u00f5es criptografadas . Um membro da equipe de seguran\u00e7a do Red Hat descobriu um bug na biblioteca GnuTLS que permite que hackers contornem facilmente a Transport Layer Security (TLS) e Secure Sockets Layer (SSL).<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ff0000;\">A vulnerabilidade afeta a verifica\u00e7\u00e3o do certificado , ou seja, conex\u00f5es seguras que s\u00e3o supostamente passadas por seguras , n\u00e3o s\u00e3o . Algu\u00e9m poderia comprometer uma conex\u00e3o segura usando um ataque &#8221; man-in -the-middle &#8221; , atuando como um servidor para interceptar o tr\u00e1fego , transa\u00e7\u00f5es financeiras ou informa\u00e7\u00f5es seguras.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ff0000;\">A Apple sofreu com sua pr\u00f3pria falha , na semana passada , quando os pesquisadores descobriram uma vulnerabilidade cr\u00edtica de seguran\u00e7a que permitia que hackers pudessem enganar os servidores e interceptar dados supostamente seguros de servidores da Apple . Em termos de n\u00famero de usu\u00e1rios afetados , a falha GnuTLS \u00e9 consideravelmente menor do que o erro da Apple , o que afetou os dispositivos iOS e Mac da mesma forma, mas remendar a vulnerabilidade GnuTLS para todos os usu\u00e1rios de Linux ser\u00e1 mais dif\u00edcil .<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Fontes:\u00a0<a title=\"Net-Security\" href=\"http:\/\/www.net-security.org\/secworld.php?id=16661\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.net-security.org\/secworld.php?id=16661<\/a><\/p>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"http:\/\/www.alertlogic.com\/ssltls-heartbeat-read-overrun-aka-64kb-memory-leak-cve-2014-0160\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.alertlogic.com\/ssltls-heartbeat-read-overrun-aka-64kb-memory-leak-cve-2014-0160\/<\/a><\/p>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"http:\/\/blog.existentialize.com\/diagnosis-of-the-openssl-heartbleed-bug.html\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/blog.existentialize.com\/diagnosis-of-the-openssl-heartbleed-bug.html<\/a><\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"http:\/\/news.netcraft.com\/archives\/2014\/04\/08\/half-a-million-widely-trusted-websites-vulnerable-to-heartbleed-bug.html\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/news.netcraft.com\/archives\/2014\/04\/08\/half-a-million-widely-trusted-websites-vulnerable-to-heartbleed-bug.html<\/a><\/p>\n<p><span style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><a style=\"text-align: justify;\" href=\"http:\/\/readwrite.com\/2014\/03\/05\/gnutls-bug-linux-security-flaw-leaves-users-vulnerable-hacks#awesm=~oB8ZFD2IqHA7ab\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/readwrite.com\/2014\/03\/05\/gnutls-bug-linux-security-flaw-leaves-users-vulnerable-hacks#awesm=~oB8ZFD2IqHA7ab<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a01\u00aa Parte A OpenSSL lan\u00e7ou um aviso de bug sobre um patch de vazamento de mem\u00f3ria 64kb em sua biblioteca . O erro foi atribu\u00eddo, como \u00a0Heartbleed -TLS CVE &#8211; 2014-0160. De acordo com o OpenSSL , a extens\u00e3o Heartbleed\u00a0\u00a0foi introduzido em Mar\u00e7o de 2012 com o lan\u00e7amento da vers\u00e3o 1.0.1 do OpenSSL. Isto implica [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":7241,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100,21,105,101],"tags":[],"class_list":["post-7234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diversos","category-exploits","category-noticias","category-tutorial-backtrack"],"_links":{"self":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/7234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/comments?post=7234"}],"version-history":[{"count":36,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/7234\/revisions"}],"predecessor-version":[{"id":10394,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/posts\/7234\/revisions\/10394"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/media\/7241"}],"wp:attachment":[{"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/media?parent=7234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/categories?post=7234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ethicalhacker.com.br\/site\/wp-json\/wp\/v2\/tags?post=7234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}