Shell Script: como logar em uma aplicação web php usando curl? [RESOLVIDO]

1. Shell Script: como logar em uma aplicação web php usando curl? [RESOLVIDO]

Ana Bianca
anabianca

(usa FreeBSD)

Enviado em 27/08/2021 - 12:48h

Olá pessoal, vou direto ao assunto; não achei nada relevante que resolvesse meu problema.
Enfim, estou tentando logar em uma aplicação web php por um shellscript... acontece que com a request normal sem ser no script eu consigo logar normalmente, mas quando eu passo as variaveis pro curl com os dados necessários para o login, não loga! com certeza é alguma estupidez que eu fiz rsrs segue o code:

#!/usr/bin/env bash
passdefault="a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"

cookie=$(curl -Is $1/cms/login.php|grep Cookie|awk '{print $2}'|cut -d';' -f1)
echo -e "\ncookie: $cookie";sleep 1

token=$(curl -s $1/cms/login.php|grep token|sed 's|[\""<>=/);]||g'|awk '{print $4}')
tokenf=$(echo ${token: -37}|cut -c -32)
echo -e "token: $tokenf\n";sleep 1

curl $1/cms/executar.php --compressed -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: $cookie' --data-raw 'login=YWRtaW4%3D&senha=$passdefault&token_webadmin=$tokenf'


a request é a seguinte:
curl 'http://x.x.x.x/cms/executar.php' --compressed -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: 2p53poksqp9bao4grknm8ja98lm5iarq' --data-raw 'login=YWRtaW4%3D&senha=a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3&token_webadmin=da59d1bf5ad7ac5161bb55623fdf6071'


eu já chequei os valores das variaveis e eles estão corretos, não sei o que acontece quando o curl faz a request pelo script, alguém poderia me ajudar? grata :)


  


2. Re: Shell Script: como logar em uma aplicação web php usando curl? [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 27/08/2021 - 13:37h

Comece usando o curl com o parâmetro de verbose (-v) pra entender a resposta da sua request e verificar se os headers de requisição estão corretos. É complicado te falar como fazer pq eu não conheço esse CMS aí. Tem q entender como é gerado o token do cookie pra depois vc continuar a acessar os recursos do CMS. A minha sugestão é pegar o navegador, fazer a requisição de login e exportar essa requisição para comando curl. Depois veja as próximas requisições q ele faz após o login e qual header ele usa pra te identificar nas próximas requisições.

--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Shell Script: como logar em uma aplicação web php usando curl?

Ana Bianca
anabianca

(usa FreeBSD)

Enviado em 27/08/2021 - 13:51h

EntãoRenato, foi exatamento o que eu fiz... eu grabei as requests pelo firefox... loguei graficamente e grabei as requests de login, vi como era feita a requisição, descartei os headers desnecessários e reformulei a request baseado nas informações da request do curl no "login.php" do ponto de vista do visitante, sabe? que é onde tem o token do webadmin que precisa pra logar, o token e o cookie no header, o resto é default...

acontece que quando eu faço a request normal, pelo curl normalmente, eu consigo logar e fazer o que eu tenho de fazer no painel, porém... por shell script não... eu acredito que os valores não estão sendo passados correntamente para o curl... eu tenho quase certeza que o erro é meu mesmo rsrs , devo estar esquecendo de algum detalhe =/ Mas enfim... obrigada pela resposta ta :)

EDIT
--verbose


No script (nao loga):
sh-5.1$ ./login.sh http://xxxxxx

cookie: 8ugntnqllka7aepj76bb03cratsdsr77
token: dae6102e311b77117212faaf64938146

* Trying xxxxxx:80...
* Connected to xxxxxx (xxxxxx) port 80 (#0)
> POST /cms/executar.php HTTP/1.1
> Host: 192.95.46.22
> User-Agent: curl/7.76.1
> Accept: */*
> Accept-Encoding: deflate, gzip, zstd
> Content-Type: application/x-www-form-urlencoded
> Cookie: 8ugntnqllka7aepj76bb03cratsdsr77
> Content-Length: 136
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 27 Aug 2021 17:05:27 GMT
< Server: Apache/2.4.25 (Debian)
< X-Powered-By: PHP/5.3.16
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Set-Cookie: login=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT
< Set-Cookie: senha=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT
< Vary: Accept-Encoding
< Content-Encoding: gzip
< Content-Length: 133
< Content-Type: text/html
<
acesso ao sistema negado...

* Connection #0 to host xxxxx left intact


na mão (loga normalmente):


sh-5.1$ curl -v xxxxxx/cms/executar.php --compressed -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: 2p53poksqp9bao4grknm8ja98lm5iarq' --data-raw 'login=YWRtaW4%3D&senha=a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3&token_webadmin=da59d1bf5ad7ac5161bb55623fdf6071'

* Trying xxxxxx:80...
* Connected to xxxxxx (xxxxxx) port 80 (#0)
> POST /cms/executar.php HTTP/1.1
> Host: xxxxxx
> User-Agent: curl/7.76.1
> Accept: */*
> Accept-Encoding: deflate, gzip, zstd
> Content-Type: application/x-www-form-urlencoded
> Cookie: 2p53poksqp9bao4grknm8ja98lm5iarq
> Content-Length: 135
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Found
< Date: Fri, 27 Aug 2021 16:59:17 GMT
< Server: Apache/2.4.25 (Debian)
< X-Powered-By: PHP/5.3.16
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Set-Cookie: login=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT
< Set-Cookie: senha=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT
< Location: index.php
< Content-Length: 0
< Content-Type: text/html
<
* Connection #0 to host xxxxxx left intact


EDIT1
cara... que vacilo HAHAHAHAHA, resolvido.




4. Re: Shell Script: como logar em uma aplicação web php usando curl? [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 29/08/2021 - 21:33h

Eu não sei como vc resolveu, mas eu acho q pelas evidências q vc trouxe aqui, o problema estava no seu script e não no método de login ou curl. Eu iria te sugerir rodar o seu script com o parâmetro -x no seu bash pra ver como q ele estaria se comportando em cada passo dado. Se puder colocar qual foi a sua resolução, agradeço.


--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


5. Re: Shell Script: como logar em uma aplicação web php usando curl? [RESOLVIDO]

Ana Bianca
anabianca

(usa FreeBSD)

Enviado em 31/08/2021 - 06:48h

Então, eu estava tentando fazer a request final com os valores grabados de cada request no script, e há cada request os valores mudavam... desse jeito não iria logar nunca. Ai o que eu fiz foi simplesmente fazer apenas uma request e salvar os valores em um arquivo, formatar os valores para cada variável... e então passar para request final. Erro de menina newbie... HAHAHA


6. Re: Shell Script: como logar em uma aplicação web php usando curl? [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 31/08/2021 - 14:53h

Quem nunca fez uma [*****] dessas? hahahah! Boa! Percebeu a tempo...

anabianca escreveu:

Então, eu estava tentando fazer a request final com os valores grabados de cada request no script, e há cada request os valores mudavam... desse jeito não iria logar nunca. Ai o que eu fiz foi simplesmente fazer apenas uma request e salvar os valores em um arquivo, formatar os valores para cada variável... e então passar para request final. Erro de menina newbie... HAHAHA




--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts