使用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

  1. 编辑/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
  2. 创建/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

关键点:

  1. 使用http://而非https://协议
  2. 添加--proxy=http://127.0.0.1:8443参数
  3. GMProxy默认监听8443端口

4. 原理说明

GMProxy实现了HTTP到国密HTTPS的代理转发,工作原理如下:

  1. SqlMap发送HTTP请求到GMProxy(127.0.0.1:8443)
  2. GMProxy将HTTP请求转换为国密HTTPS请求发送到目标服务器
  3. GMProxy接收目标服务器的国密HTTPS响应并转换为HTTP响应返回给SqlMap

这样就在不修改SqlMap的情况下实现了对国密SSL网站的安全检查。

使用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 2.1.2 下载并编译安装apr 2.1.3 下载并编译安装apr-util 2.1.4 安装国密版Apache 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 文件,添加如下配置: 注:国密测试证书可从https://www.gmssl.cn/gmssl/index.jsp生成或下载 2.1.6 启动Apache 2.2 安装sqli-labs测试环境 2.2.1 安装PHP环境 2.2.2 部署sqli-labs 3. 使用GMProxy+SqlMap测试国密SSL网站 3.1 下载安装GMProxy 从https://www.gmproxy.cn/下载GMProxy并运行 3.2 SqlMap测试国密SSL网站 3.2.1 直接测试(会失败) 3.2.2 通过GMProxy代理测试 关键点: 使用 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网站的安全检查。