cve-2004-1166
漏洞描述:
Microsoft Internet Explorer 6.0.2800.1106及更早版本中的CRLF注入漏洞允许远程攻击者通过ftp:// URL执行任意FTP命令,该URL在ftp command之前包含一个URL编码的换行符(“%0a”),这会导致命令插入到生成的FTP会话中,如使用PORT command所示。
此漏洞是由于ASCII控制字符处理不当造成的。 攻击者可以通过诱使用户单击包含ASCII控制字符的精心设计的URL来利用此漏洞。 利用漏洞攻击者需要知道FTP服务器的位置和地址以及目标用户可以连接的有效用户名和密码组合。 攻击者只能利用此漏洞以恶意URL中包含的帐户的权限运行FTP控制台命令。
由于FTP URL中的ASCII控制字符处理不当,存在此漏洞。 在Konqueror中,这些字符由kio_ftp和kioslave库处理。 当受影响的浏览器遇到ASCII控制字符(例如换行符)时,应用程序会将字符作为换行符传递。 因此,ASCII控制字符后面的任何字符都将作为控制台命令发布到FTP服务器。 这可以允许攻击者从受影响的用户系统向远程FTP服务器发出任意命令。 攻击者必须了解可以在恶意URL中使用的有效身份验证凭据,以获取对目标FTP服务器的访问权限。
Snort规则分析:
找到两种
第一种:
alert tcp $EXTERNAL_NET $HTTP_PORTS -> $HOME_NET any (msg:“ET EXPLOIT Microsoft IE FTP URL Arbitrary Command Injection” ; flow:from_server,established; content:“ftp://”; nocase; pcre:"/ftp://[^’ “]*%0a/i”; reference:url,osvdb.org/12299;reference:cve,2004-1166; classtype:attempted-user; sid:2003230; rev:2;)
1)服务端对客户端的响应
2)匹配
1.ftp://
2.除’,”之外的字符,匹配任意次
3.%0a,不区分大小写
组合起来,可以匹配:ftp://lalala%0a
第二种:
alert tcp $EXTERNAL_NET $HTTP_PORTS -> $HOME_NET any (msg:“BROWSER-IE Microsoft Internet Explorer FTP command injection attempt”; flow:to_client,established; file_data; content:“ftp|3A 2F 2F|”; fast_pattern:only; pcre:"/ftp\x3A\x2F\x2F[^\s]+?\x250[ad]/i"; metadata:service http; reference:bugtraq,11826; reference:cve,2004-1166; classtype:attempted-user; sid:18300; rev:7;)
1)服务端对客户端的响应
2)设置用来探测以下缓冲区的光标:http,smtp等
3)
fast_only表示仅用于快速匹配,不用于规则选项。
^\s表示匹配任何非空字符
+?是惰性匹配,从左往右匹配,直到匹配到\x25(\x25其实就是%),0,a或b,不区分大小写
组合后,可以匹配如下:
ftp://abcdx%a
cve-2004-1376
漏洞描述:
Microsoft Internet Explorer 5.01,5.5和6.0中的目录遍历漏洞允许远程恶意FTP服务器覆盖任意文件,通过LIST command返回的文件名中的…(点点)序列
Snort规则分析:
alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:“BROWSER-IE Microsoft Internet Explorer FTP client directory traversal attempt”; flow:to_server,established; content:“RETR|20 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F 74 65 73 74 2F 70 6F 63 2E 61 61 61|”; fast_pattern:only; metadata:policy max-detect-ips drop, service ftp; reference:cve,2004-1376; classtype:misc-activity; sid:17446; rev:12;)
1)客户端到服务器的请求
2)
匹配RETR,事实上,.是2e,/是2f
所以和漏洞描述的一样,标志性特征就是./…/…/
这个匹配过拟合,可以只匹配十六机制20 2F 2E 2E 2F 2E 2E 2F 2E 2E 2F
cve-2004-1992
漏洞背景:
漏洞是由于对某些命令的参数的边界检查不足造成的。 远程攻击者可以通过提供过长的字符串作为受影响命令的参数值来利用此漏洞。这会触发缓冲区溢出并导致Serv-U尝试从无效的内存位置读取。这会导致应用程序失败,从而导致拒绝服务(DoS)条件。
该漏洞是由于对list命令的参数的边界检查不足造成的。远程攻击者可以通过在执行list命令时向-l参数提交过长的值来利用此漏洞。结果,Serv-U尝试从应用程序的内存空间之外的内存中读取。这会触发未处理的异常并导致应用程序崩溃。
Snort规则分析:
alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:“PROTOCOL-FTP LIST buffer overflow attempt”; flow:to_server,established; content:“LIST”; nocase; isdataat:128,relative; pcre:"/LIST(?!\n)\s[\n]{128}/smi"; metadata:policy max-detect-ips drop, ruleset community, service ftp; reference:bugtraq,10181; reference:bugtraq,14339; reference:bugtraq,33454; reference:bugtraq,58247; reference:bugtraq,6869; reference:bugtraq,7251; reference:bugtraq,7861; reference:bugtraq,8486; reference:bugtraq,9675; reference:cve,1999-0349; reference:cve,1999-1510; reference:cve,2000-0129; reference:cve,2004-1992; reference:cve,2005-2373; reference:cve,2007-0019; reference:cve,2009-0351; reference:url,technet.microsoft.com/en-us/security/bulletin/MS99-003; classtype:misc-attack; sid:2338; rev:35;)
1)是客户端到服务端发起的请求
2)不区分大小写,匹配list
3)在2)匹配之后128字节处,验证是否有数据,有则命中
4)
^LIST 表示匹配LIST开头,\n为换行符,(?!\n)表示匹配?!和换行符,\s表示匹配任意空白符,[^\n]表示匹配换行符以外的字符,{128}表示匹配128次,后面跟着匹配smi
组合后的意思能匹配如下:
LIST?!
Fsdfg(128个)msi
cve-2007-0217
漏洞描述:
Microsoft Internet Explorer 5.01和6中的wininet.dll FTP客户端代码可能允许远程攻击者通过特定长度的FTP服务器响应执行任意代码,这会导致终止空字节写入缓冲区之外,从而导致堆损坏。
The vulnerability is due to insufficient sanitization of FTP server responses
Snort规则分析:
alert tcp $EXTERNAL_NET 21 -> $HOME_NET any (msg:“BROWSER-IE Microsoft Internet Explorer FTP Response Parsing Memory Corruption”; flow:to_client,established; isdataat:1023; pcre:"/\d{3}\s+[^\n]{1019}/smi"; metadata:service ftp; reference:bugtraq,22489; reference:cve,2007-0217; classtype:web-application-attack; sid:17367; rev:5;)
1)服务器对客户端的响应
2)确认数据起始处往后至少还有1023字节的数据
3)
匹配数字3次
匹配非换行符1019次
匹配smi
组合起来可以匹配如下:
123a(1019个)smi
cve-2007-0247
漏洞描述:
Squid中的squid / src / ftp.c在2.6.STABLE7之前允许远程FTP服务器通过精心设计的FTP目录列表响应(FTP directory listing responses)导致拒绝服务(core dump),可能与(1)ftpListingFinish和(2)ftpHtmlifyListEntry函数有关。
Snort规则分析:
alert tcp $EXTERNAL_NET any -> $HOME_NET 3128 (msg:“DOS Squid proxy FTP denial of service attempt”; flow:established,to_server; content:“GET”; depth:3; nocase; content:“FTP|3A|//”; nocase; pcre:"/ftp\x3A\x2F\x2F[\w\x2E\x2F]+[^\x2F]\x3Btype=D/i"; metadata:policy security-ips drop; reference:bugtraq,22079; reference:cve,2007-0247; classtype:denial-of-service; sid:10135; rev:3;)
1)客户端向服务器的请求
2)数据部分前三个字节为get,不区分大小写
3)
3a就是:
不区分大小写
ftp://
(字母或数字或下划线或汉字)或.或/
除/以外的字符
3b就是;
Type=D,不区分大小写
组合起来可以匹配:
ftp://.a;type=D
cve-2008-2541
漏洞描述:
CA eTrust Secure Content Manager 8.0中的HTTP网关服务(icihttp.exe)中的多个基于堆栈的缓冲区溢出允许远程攻击者通过长FTP响应执行任意代码或导致拒绝服务,这与(1)LIST命令中的file month字段相关; (2)PASV命令; (3)LIST命令中的directories,files和links。
由于对FTP PASV服务器响应过长的不安全处理,HTTP网关服务icihttp.exe中存在此漏洞。 默认情况下,该服务在TCP端口8080上运行。 未经身份验证的远程攻击者可以通过在HTTP网关外部创建恶意FTP服务器来利用此漏洞。 然后,从HTTP网关内部,攻击者可以登录到FTP服务器并发出PASV FTP命令。 此时,恶意FTP服务器可以使用非常长的响应来回复PASV命令。 当icihttp.exe处理此响应时,可能会发生缓冲区溢出,因为该服务没有分配足够的空间来处理精心设计的数据响应。 此溢出可能导致服务崩溃或使用SYSTEM权限执行任意代码。
Snort规则分析:
1.alert tcp $EXTERNAL_NET [20,1024:] -> $HOME_NET [20,1024:] (msg:“PROTOCOL-FTP Computer Associates eTrust Secure Content Manager LIST stack overflow attempt”; flow:established; stream_size:either,>,12800; content:“4096”; fast_pattern:only; pcre:"/[D\x2D][RWX\x2D]{9}\s+\w+\s+\w+\s+\w+\s+4096/i"; metadata:policy max-detect-ips drop, service ftp; reference:bugtraq,29528; reference:cve,2008-2541; reference:url,osvdb.org/show/osvdb/46012; reference:url,osvdb.org/show/osvdb/46013; classtype:attempted-user; sid:18575; rev:8;)
1)匹配从任意一方过来的大于12800字节的会话session
2)
\x2d就是-
匹配 D或-
匹配 R或W或X或- 9次
匹配 任意空字符
\w匹配 字母或数字或下划线或汉字
\s 匹配 任意空字符
。。。
匹配4096
不区分大小写
组合后,可以匹配如下:
-R-r-r-r-r- a a a 4096
2.alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:“FTP Computer Associates eTrust Secure Content Manager PASV stack overflow attempt”; flow:to_client, established; content:“227”; depth:3; pcre:"/\x28((\d{4,}|[3-9]\d\d|2[6-9]\d|25[7-9]),\d+,\d+,\d+|\d+,(\d{4,}|[3-9]\d\d|2[6-9]\d|25[7-9]),\d+,\d+|\d+,\d+,(\d{4,}|[3-9]\d\d|2[6-9]\d|25[7-9]),\d+|\d+,\d+,\d+(\d{4,}|[3-9]\d\d|2[6-9]\d|25[7-9])),\d+,\d+\x29/"; metadata:policy security-ips drop, service ftp; reference:cve,2008-2541; classtype:attempted-user; sid:13925; rev:2;)
1)服务端发给客户端的响应
2)数字起始前三个字节为227,
3)
\x28是( 匹配 (
匹配 数字 大于等于4次 或者 3-9之间的数字+任意数字+任意数字 或者2+6到9之间的数字+任意数字 或者 25+7到9之间的数字
匹配 数字大于等于三次
。。。吐血了
cve-2008-3734
漏洞描述:
Ipswitch中的格式字符串漏洞WS_FTP Home 2007.0.0.2和WS_FTP Professional 2007.1.0.0允许远程FTP服务器导致拒绝服务(应用程序崩溃)或可能通过connection greeting(response)中的格式字符串说明符(format string specifiers )执行任意代码。
Snort规则分析:
alert tcp $EXTERNAL_NET 21 -> $HOME_NET any (msg:“PROTOCOL-FTP Ipswitch WS_FTP client format string attempt”; flow:to_client,established; content:"%"; fast_pattern:only; pcre:"/^(\d{3}\x20)?\S*\x25\w/i"; metadata:policy max-detect-ips drop, service ftp; reference:bugtraq,30720; reference:cve,2008-3734; classtype:attempted-user; sid:14770; rev:11;)
1)服务端到客户端的响应
2)匹配%
3)
不匹配 连续三个数字+ (空格)
匹配任何非空白字符任意次
匹配%
匹配字母或数字或下划线或汉字
不区分大小写
组合起来可以匹配:
abcd%a
cve-2008-4321
漏洞描述:
FlashGet(以前是JetCar) FTP 1.9中的缓冲区溢出允许远程FTP服务器通过对PWD命令的长响应long response执行任意代码。
在处理过长的FTP PWD响应时,由于边界限制不足而存在漏洞。攻击者可以通过说服目标用户从配置为使用FlashGet从FTP服务器下载文件的Web浏览器连接到恶意FTP服务器来利用此漏洞。漏洞可能会在FlashGet中触发基于堆栈的缓冲区溢出情况,这可能导致浏览器崩溃,或者允许攻击者使用用户权限执行任意代码。攻击者可以通过说服用户按照链接从恶意FTP服务器下载文件来发起攻击。
Snort规则分析:
alert tcp $EXTERNAL_NET 21 -> $HOME_NET any (msg:“PROTOCOL-FTP FlashGet PWD command stack buffer overflow attempt”; flow:to_client,established; content:“257|20|”; pcre:"/^257\x20\S{257,}\x20/mi"; metadata:service ftp; reference:bugtraq,30685; reference:cve,2008-4321; classtype:attempted-user; sid:17518; rev:5;)
1)服务端向客户端的响应
2)
匹配 257,以及十六进制的20开头
匹配 非空字符大于的等于257次
匹配 16进制的20
匹配 mi
组合起来,可以匹配如下:
257/x20a(257个a)/x20mi