私はカールとsocatが一緒にうまく動作するように努力しています。詳細は次のとおりです。
- システムにログインするためにXMLを公開します。
- 戻りメッセージには認証トークンが含まれています。
- トークンを使用して後続のリクエストを公開します。警告:接続が切断されるとトークンが期限切れになるため、通常のカールは使用できません。
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用であるということです。