使用GMProxy+ SqlMap进行国密SSL网站安全检查
字数 1202 2025-08-13 21:33:20
使用GMProxy+SqlMap进行国密SSL网站安全检查
1. 国密SSL背景介绍
国密算法是国家密码局认定的国产密码算法(商用密码),包括SM2(椭圆曲线公钥密码算法)、SM3(密码杂凑算法)、SM4(分组密码算法)等。近年来国家大力推动国产密码算法在金融、电子政务、教育、交通运输、民生保障等关键领域的应用。
目前主流的WEB安全测试工具如Burp Suite、SqlMap等都不直接支持国密SSL网站的安全检查,这给国密SSL系统的安全检查带来不便。Windows系统下可以借助GMProxy工具实现这些安全工具对国密SSL网站的支持。
2. 国密SSL测试环境搭建
2.1 编译部署Apache httpd国密支持
2.1.1 下载编译GmSSL
# 下载gmssl
wget http://gmssl.org/gmssl.tar.gz
# 编译安装
./config --prefix=/usr/local/gmssl
make
make install
2.1.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
make && make install
2.1.3 下载并编译安装apr-util
cd /usr/local/
wget -c http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
tar -zvxf apr-util-1.5.4.tar.gz
cd /usr/local/apr-util-1.5.4/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
apt-get install libpcre3
2.1.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
# 解压
tar -zvxf wotrus_ssl.tar.gz
tar -zvxf apache-2.4.39_gm.tar.gz
# 编译安装
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
make && make install
2.1.5 配置国密SSL
-
编辑
/usr/local/httpd/conf/httpd.conf文件:- 去掉
#ServerName www.example.com:80前的# - 去掉
LoadModule ssl_module modules/mod_ssl.so前的# - 在
Listen 80前加#,只开放443端口 - 在
#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根目录
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"
SSLProtocol all -SSLv2 -SSLv3
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
</Directory>
</VirtualHost>
注:国密测试证书可从https://www.gmssl.cn/gmssl/index.jsp生成或下载
2.1.6 启动Apache
/usr/local/httpd/bin/httpd -t # 检查配置
/usr/local/httpd/bin/httpd -k start # 启动服务
2.2 安装sqli-labs测试环境
2.2.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
make install
2.2.2 部署sqli-labs
git clone https://github.com/skyblueee/sqli-labs-php7
# 在sql-connections/db-creds.inc中设置数据库用户名和密码
# 访问Setup/reset Database for labs初始化数据库
3. 使用GMProxy+SqlMap测试国密SSL网站
3.1 下载安装GMProxy
从https://www.gmproxy.cn/下载GMProxy并运行
3.2 SqlMap测试国密SSL网站
3.2.1 直接测试(会失败)
sqlmap.py -u "https://xxxxx/sqli-labs-php7/Less-1/?id=5" -batch
3.2.2 通过GMProxy代理测试
sqlmap.py -u "http://xxxxx/sqli-labs-php7/Less-1/?id=5" --proxy=http://127.0.0.1:8443 -batch
关键点:
- 使用
http://而非https://协议- 添加
--proxy=http://127.0.0.1:8443参数- GMProxy默认监听8443端口
4. 原理说明
GMProxy实现了HTTP到国密HTTPS的代理转发,工作原理如下:
- SqlMap发送HTTP请求到GMProxy(127.0.0.1:8443)
- GMProxy将HTTP请求转换为国密HTTPS请求发送到目标服务器
- GMProxy接收目标服务器的国密HTTPS响应并转换为HTTP响应返回给SqlMap
这样就在不修改SqlMap的情况下实现了对国密SSL网站的安全检查。