iOS 13 Burp Suite 代理无法连接
Posted
技术标签:
【中文标题】iOS 13 Burp Suite 代理无法连接【英文标题】:iOS 13 Burp Suite Proxy Unable to Connect 【发布时间】:2019-10-23 15:05:56 【问题描述】:我正在尝试运行 Burp Suite 代理以通过我的手机进行一些测试。
我已经安装了 Burp Suite 社区版 2.1.04 我已在 Proxy > Options > Proxy Listeners 中将我的 wifi 设置为使用我计算机的 IP 地址作为正确端口上的代理。
在我的 ios 设备上,我使用了 Safari 并转到 http://ComputerIP:Port 并安装了 CA 证书。 我从设置安装了证书。我还在 About > Cert Trust Settings 中信任证书。
我无法通过手机上网。我可以在 Burp Suite HTTP History 中看到与 Google 的连接已建立,但连接已关闭。我试过http://example.com 还是出不来。
GET / HTTP/1.1
Host: www.google.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cookie: REALLY LONG COOKIE STRING
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: close
我遵循了this 和this 教程,但没有运气。
有什么想法吗?
我尝试了 Charles Proxy,但我需要 TLS 1.3。
【问题讨论】:
【参考方案1】:我认为您应该等待 Port Swigger 证书更新。 iOS 13 对 TLS 有新要求 - https://support.apple.com/en-us/HT210176
作为替代方案,您可以在 macOS 中使用 https://proxyman.io/。这应该适用于 iOS13
【讨论】:
【参考方案2】:对于 iOS 13 上的 Burp,代理提供的证书不起作用,我已经生成了自己的证书...
创建一个新文件夹:
mkdir BurpCA && cd BurpCA
使用以下内容创建 BurpCA.cnf 文件:
[ req ]
default_md = sha256
distinguished_name = req_distinguished_name
x509_extensions = root_ca
[ req_distinguished_name ]
countryName = US
countryName_min = 2
countryName_max = 2
stateOrProvinceName = California
localityName = Los Angeles
0.organizationName = ROTTEN APPLE
organizationalUnitName = ROTTEN APPLE
commonName = localhost
commonName_max = 64
emailAddress = admin@localhost
emailAddress_max = 64
[ root_ca ]
nsComment = "Certificate for Burp"
subjectKeyIdentifier = hash
basicConstraints = critical, CA:true
keyUsage = critical, keyCertSign
运行
openssl req -x509 -newkey rsa:2048 -out BurpCA.cer -outform PEM -keyout BurpCA.key -days 720 -verbose -config BurpCA.cnf -nodes -sha256 -subj "/CN=ROTTEN APPLE CA"
准备证书以将其导入 Burp 并将导出密码设置为“burp”
openssl pkcs12 -export -out Burp.pfx -inkey BurpCA.key -in BurpCA.cer
打开 Burp(确保更新到最新版本)
转到:
代理选项卡 选项 导入/导出 CA 证书 PKCS#12 格式的证书和私钥然后在你的 iPhone 上设置代理去http://burp 并按照正确的安装。
【讨论】:
自 ios 13.5.1 这个方法不再有效 :(【参考方案3】:终于搞定了!
以下是完整说明:
使用以下命令生成证书: openssl req -x509 -nodes -newkey rsa:4096 -keyout myBurpCA.key -out root-ca.crt -days 365 -subj "/C=CA/O=Burp/OU=Certification Services/CN=MyBURPRootCA/" -addext “扩展密钥使用=1.3.6.1.5.5.7.3.1” openssl pkcs12 -export -out BurpRootCA.pfx -inkey myBurpCA.key -in root-ca.crt
转到 burp 并使用“导入/导出 CA 证书”选项并选择您新生成的证书(使用 pfx 文件)。 请勿使用“编辑代理侦听器 -> 证书 -> 使用自定义证书”。它不起作用(这是一个自定义的特定证书,您仍然需要一个 CA 签名的每主机证书)。
进入iPhone,将Burp Suite代理配置为代理服务器,进入http://burp
单击右上角下载并安装证书,下载它(“允许”),然后转到设置 -> 已下载配置文件 -> 安装,以完成其他安装步骤。
通过转到设置 > 常规 > 关于 > 证书信任设置,为已安装的证书授权 TLS 身份验证,然后为证书切换“启用根证书的完全信任”。
就是这样!证书现在对 TLS 身份验证有效。
【讨论】:
【参考方案4】:手动生成符合来自 iOS 13 和 Catalina 的新 Apple Security Update 的自签名证书很棘手。这是一个简单的:
-
在桌面文件夹中准备 cert.config 文件
[ ca ]
default_ca = CA_default
[ CA_default ]
default_md = sha256
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage=critical,keyCertSign
extendedKeyUsage = serverAuth,clientAuth
[ req ]
prompt = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
C=SG
L=SG
O=Proxyman
CN=proxyman.dev
OU=Proxyman
请更新 C、L、O、CN 和 OU 参数的值。
-
在终端应用程序中生成 RSA 密钥。 (确保将 your_password 替换为您的真实密码)
cd ~/Desktop
openssl genrsa -aes256 -passout pass:your_password -out key.pem 2048
-
生成自签名证书和私钥。 (确保将 your_password 替换为您的真实密码)
openssl req -x509 -new -nodes -passin pass:your_password -config cert.config -key key.pem -sha256 -extensions v3_ca -days 825 -out root-ca.pem
-
转换为 p12 格式。 (确保将 your_password 替换为您的真实密码)
openssl pkcs12 -export -out root-ca.p12 -in root-ca.pem -inkey key.pem -passin pass:your_password -passout pass:your_password
-
最后,您将拥有 root-ca.p12 文件。
如果您正在寻找更简单的方法,请通过Custom Root Certificate feature 来查看 Proxyman。可以在 iOS 和 android 远程设备上使用。
免责声明:我编写 Proxyman 应用程序。希望它可以帮助任何与 SSL 相关的人。
【讨论】:
以上是关于iOS 13 Burp Suite 代理无法连接的主要内容,如果未能解决你的问题,请参考以下文章