aMule是一个开源的P2P文件共享程序。 aMule的src/DownloadListCtrl.cpp文件执行了以下操作: command = wxT( "xterm -T \ "aMule Preview\ " -iconic -e mplayer '$file' "); [...] wxString rawFileName = file->GetFullName().GetRaw(); command.Replace(wxT( "$file "), rawFileName); [...] wxExecute(command, wxEXEC_ASYNC, p); 尽管通过删除:/<>和其他字符对file->GetFullName()执行了过滤,但既没有转义也没有过滤单引号(')。如果远程攻击者诱骗用户下载了包含有特制文件名的恶意文件的话,就可能导致注入并执行任意代码。
aMule是一个开源的P2P文件共享程序。 aMule的src/DownloadListCtrl.cpp文件执行了以下操作: command = wxT( "xterm -T \ "aMule Preview\ " -iconic -e mplayer '$file' "); [...] wxString rawFileName = file->GetFullName().GetRaw(); command.Replace(wxT( "$file "), rawFileName); [...] wxExecute(command, wxEXEC_ASYNC, p); 尽管通过删除:/<>和其他字符对file->GetFullName()执行了过滤,但既没有转义也没有过滤单引号(')。如果远程攻击者诱骗用户下载了包含有特制文件名的恶意文件的话,就可能导致注入并执行任意代码。