カールを使ってソケットに送る

カールを使ってソケットに送る

私はカールとsocatが一緒にうまく動作するように努力しています。詳細は次のとおりです。

  1. システムにログインするためにXMLを公開します。
  2. 戻りメッセージには認証トークンが含まれています。
  3. トークンを使用して後続のリクエストを公開します。警告:接続が切断されるとトークンが期限切れになるため、通常のカールは使用できません。

PowerShellではうまく動作します。https://pastebin.com/5Jiw1fct

ただし、Linuxで実行するには必要です。接続を維持する必要があるため、socatを使用することにしました。

XMLを公開するためにこのコマンドを実行する場合:

curl http://$target_ip -d @./xml/login.xml

システムから正解を得ました。ただし、接続が閉じてトークンを再利用することはできません。

しかし、これを試してみると(もちろんsocatの後):

curl --unix-socket /tmp/$target_ip.sock -d @./xml/login.xml

Curlは私がURLを設定していないと文句を言いました。

アイデアはありますか?

いつもありがとうございます。

答え1

CurlはUnixソケットに接続できますが、HTTPリクエストにはホスト名が必要です。

127.0.0.1で受信するようにsocatを設定し、ターゲットシステムのIPアドレス(名前ではない)に接続し、URLのホスト名をIPアドレス127.0.0.1として/ etc / hostsに追加してから、URLの妨害を試しましたか?カール通話中ですか?

以前は、標準外のポートでサービスを実行できませんでした。したがって、すでにWebサーバーを実行している場合は、ネットワークネームスペースまたは他の魔法を使用して、カールとリモートサーバーの両方がユーザーであると思うようにする必要があります。宛先ポートに接続中です。

または、元のURLを使用してsocatにloの非標準ポートでリッスンさせ、ポートを偽造したり、/etc/hostsにエントリを追加せずにカールに--resolveオプションを指定することもできます(curlが必要)> = 7.57)

でもそうだけど非常にTCPセッションに接続されたトークンは非常に珍しく、より驚くべきことは、これがhttpsサービスではなくhttp用であるということです。

関連情報