国密算法即国家密码局认定的国产密码算法(商用密码)。近年来,国家站在长远战略的高度大力推动国产密码算法在金融、电子政务等关键领域的应用。明确要求在金融银行、电子政务、教育、交通运输、民生保障等关键领域全面推进自主可控密码技术的应用。
越来越多的政府、企事业单位的WEB系统都已开始部署使用国密SSL。国产密码算法以及相对应的产品应用将成为未来各级政府机关网站和各类企业网站的安全标配。但目前主流的WEB安全测试软件如Burp Suite、 SqlMap等都不支持直接对国密SSL 网站的安全检查。这无疑给一些国密SSL系统的安全检查带来不便。
国密网站
Windows系统下可以借助第三方工具GMProxy 来实现让Burp Suite、 SqlMap等安全工具支持国密SSL 。GMProxy 支持http到国密HTTPS 代理转发,从而实现安全检查工具对国密网站的检查。
0x1 国密SSL测试环境搭建
编译部署Apache httpd国密支持
1.下载编译gmssl
到http://gmssl.org下载gmssl
编译安装
./config --prefix=/usr/local/gmssl make install
2.下载并编译安装 apr
wget -c https://archive.apache.org/dist/apr/apr-1.7.0.tar.bz2 --no-check-certificate tar -jvxf apr-1.7.0.tar.bz2 ./configure --prefix=/usr/local/apr #编译安装 apr make && make install
3.下载并编译安装 apr-util
#切换至 /usr/local/ 目录下 cd /usr/local/ #下载 apr-util-1.5.4 wget -c http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz #解压已下载的 apr-util-1.5.4 压缩包 tar -zvxf apr-util-1.5.4.tar.gz #进入解压后的 apr-util-1.5.4 文件夹并指定编译目录路径。 cd /usr/local/apr-util-1.5.4/ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #编译安装 apr-util make && make install apt-get install libpcre3
4.安装国密版Apache
#下载 Apache 国密版 wget -c https://www.wotrus.com/download/apache-2.4.39_gm.tar.gz --no-check-certificate #下载国密模块 wget -c https://www.wotrus.com/download/wotrus_ssl.tar.gz #解压已下载的 wotrus_ssl 压缩包 tar -zvxf wotrus_ssl.tar.gz #解压已下载的 pache-2.4.39_gm 压缩包 tar -zvxf apache-2.4.39_gm.tar.gz #进入解压后的pcre-8.43文件夹并指定编译目录路径。 cd httpd-2.4.39_gm/ ./configure --prefix=/usr/local/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/gmssl #编译安装 Apache make && make install
5.配置示例(国密单向自适应)
进入 /usr/local/httpd/conf 目录,按照以下步骤编辑 httpd.conf 文件: 请去掉 #ServerName www.example.com:80 前的 #。 请去掉 LoadModule ssl_module modules/mod_ssl.so 前的 #。 请在 Listen 80 前加 # ,只开放433 端口 请在 #Include conf/extra/httpd-ssl.conf 下增加 Include conf/ssl.conf 文件内容后保存并退出。 在 /usr/local/httpd/conf 目录下,新建一个 ssl.conf 文件,添加如下配置: Listen 443 <VirtualHost *:443> #填写证书名称 ServerName demo1.gmssl.cn #填写网站文件路径 DocumentRoot website根目录 #启用 SSL 功能 SSLEngine on SSLCertificateFile "/usr/local/httpd/conf/extra/demo1.sm2.sig.crt.pem" SSLCertificateKeyFile "/usr/local/httpd/conf/extra/demo1.sm2.sig.key.pem" SSLCertificateFile "/usr/local/httpd/conf/extra/demo1.sm2.enc.crt.pem" SSLCertificateKeyFile "/usr/local/httpd/conf/extra/demo1.sm2.enc.key.pem" # sign 和 encrypt 配置中的 .key 为同一个 #请按照以下协议配置 SSLProtocol all -SSLv2 -SSLv3 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 SSLCipherSuite SM2-WITH-SMS4-SM3:ECDH:AESGCM:HIGH:MEDIUM:!RC4:!DH:!MD5:!aNULL:!eNULL SSLHonorCipherOrder on <Directory "website根目录"> Options -Indexes -FollowSymLinks +ExecCGI AllowOverride None Order allow,deny Allow from all Require all granted
相关国密证书可以在https://www.gmssl.cn/gmssl/index.jsp生成测试版或直接下载测试版证书。
6.运行
/usr/local/httpd/bin/httpd -t
若提示 Syntax OK,则表示配置正常,可以启动 Apache 服务器。
若提示非 Syntax OK,请您重新配置或者根据提示修改存在问题。
执行以下命令启动 Apache 服务器
/usr/local/httpd/bin/httpd -k start
7.国密SSL 网站访问
通过HOST 文件绑定域名指向后,使用支持国密协议的浏览器访问
而使用非国密浏览器连接该网站会报错。
0x2 安装sqli-labs 测试环境
1安装PHP 环境
wget https://www.php.net/distributions/php-7.3.5.tar.gz ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-mysqli Make install
2.下载sqli-labs到 apache 网站目录下
git clone https://github.com/skyblueee/sqli-labs-php7
在sql-connections/db-creds.inc中 设置数据的用户名和密码,点击Setup/reset Database for labs.
0x3 下载GMPoxy
到https://www.gmproxy.cn/下载 GMPoxy,运行 GMPoxy
0x4 SqlMap 测试国密SSL
测试靶场:https://xxxxxxx/sqli-labs-php7/Less-1/?id=5
sqlmap.py -u "https://xxxxx/sqli-labs-php7/Less-1/?id=5" -batch
如果我们直接访问测试国密SSl,会出现SSL 连接错误。
这是需要启用gmproxy 国密代理功能,将 --proxy参数 设置为http://127.0.0.1:8443
sqlmap.py -u "http://xxxxx/sqli-labs-php7/Less-1/?id=5" --proxy=http://127.0.0.1:8443 -batch
此时 Sqlmap 已经检查到了注入漏洞。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)