通过分析设备固件可以得知,文件系统中包含硬编码方式保存的用户凭证信息。
这些信息主要用于提供对外的FTP服务升级服务。
其中,问题代码位于**/FLASH0/wwwroot/classes/SACommjar** 包中,具体的Package路径:
**com.schneiderautomation.misc.TextFiles**的第266行至268行位置。
```
package com.schneiderautomation.misc;
import com.schneiderautomation.ftpsession.FTPSession;
import com.schneiderautomation.ftpsession.FileInfo;
import com.schneiderautomation.ftpsession.FtpSessionException;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URL;
import java.net.URLConnection;
import java.util.Locale;
import java.util.Vector;
public class TextFiles
{
private static final String USER = "sysdiag";
private static final String PASSWORD = "factorycast@schneider";
private boolean fAutoConnect = true;
private Thread engine = null;
private String host;
private Locale locale;
private FTPSession ftp;
....
private void connect()
throws IOException
{
if (this.fAutoConnect)
try
{
this.ftp = new FTPSession(this.locale);
this.ftp.connectHost(this.host);
this.ftp.login("sysdiag", "factorycast@schneider"); //CVE-2011-4859
}
catch (FtpSessionException localFtpSessionException)
{
if (this.ftp != null)
disconnect();
throw new IOException(localFtpSessionException.getMessage());
}
}
....
}
```
通过[ZoomEye](http://www.zoomeye.org/)系统提供的Dork [["Schneider Web"]](http://www.zoomeye.org/search?q=%22Schneider+Web%22) 可获悉部分设备在互联网上的部署情况,可通过FTP命令尝试登录验证。
引用:
* [《施耐德PLC以太网模块固件后门引发的血案》作者:Kimon | 微信公众号:HackEver](http://mp.weixin.qq.com/s?__biz=MzA5OTMwMzY1NQ==&mid=207033762&idx=1&sn=e629b1db9f43937cba6d5707c707450d&3rd=MzA3MDU4NTYzMw==&scene=6#rd)
* [《施耐德PLC以太网模块后门账户解密》](http://plcscan.org/blog/2014/06/schneider-electric-quantum-ethernet-module-hard-coded-credentials)
* [《Alert (ICS-ALERT-11-346-01)》](http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-346-01.pdf)
全部评论 (4)