背景

最近产品被扫出一些中高级漏洞:

[ 高风险 ] jQuery < 3.4.0 Object Extensions 漏洞
[ 中风险 ] jQuery < 3.0.0 跨站脚本攻击漏洞
[ 中风险 ] Lighttpd < 1.4.51多个安全漏洞
[ 中风险 ] Lighttpd < 1.4.50 多个漏洞
[ 中风险 ] 支持SSH弱加密算法

进行了相关模块的升级:

  1. lighttpd v1.4.39 ==>v1.4.58
  2. jQuery(jquery.min.js ) v1.11.1==>v3.5.1
  3. jquery.easyui.min.js v1.4.5==>v1.9.10
  4. dropbear(ssh) port=22 ==> port=2222

中间遇到了一些问题,特此记录。

升级lighttpd

  • 下载最新版本,交叉编译:

    make distclean
    ./configure --prefix=/home/xxx/lighttpd-1.4.58/out --host=arm-poky-linux-gnueabi --build=aarch64-linux-gnu --disable-FEATURE --enable-shared --disable-static --disable-lfs --disable-ipv6 --without-PACKAGE --without-valgrind --without-openssl --without-kerberos5 --with-pcre --without-zlib --without-bzip2 --without-lua
    make 
    make install

    拷贝out目录下相应的sbinlib到目标系统中。
    修改/etc/lighttpd.conf配置文件中的相关配置,主要是网页路径,PHP等支持

  • lighttpd交叉编译后执行加载plugin报dlopen错误?

原因:默认查找插件库(mod_*.so)的路径为交叉编译中指定的prefix/lib
解决:在启动时,加上-m参数
如果手动启动,修改如下:
lighttpd -f /etc/lighttpd.conf -m /usr/lib/
如果自动启动,修改/etc/init.d/lighttpd文件中的OPTS字段,进行指定:

OPTS="-f /etc/lighttpd.conf -m /usr/lib/"

  • 后面又遇到上传文件失败的大坑:
    发现用lighttpd的v1.4.56版本才会有,以前的老版本v1.4.39没有,后面升级到目前最新的v1.4.58的也没出现

升级jquery

升级jquery.min.js之后发现网页上传文件的功能有问题,
F12查看发现报错:

Uncaught TypeError: a.indexOf is not a function

原因: 类似.load, .unload 或 .error等这些事件在高版本中已经废弃
在上传插件ajaxfileupload.js中使用了:

jQuery('#' + frameId).load(uploadCallback	);

改为下面的即可

jQuery('#' + frameId).on('load', uploadCallback);

dropbear修改

Dropbear: 轻量级sshd服务器
修改端口: 修改/etc/init.d/dropbear中的DROPBEAR_PORT
修改加密算法: 支持rsa, dss, ecdsa

参考

  1. https://notes.z-dd.online/tags/Web%E6%9C%8D%E5%8A%A1%E5%99%A8/