2013-03-10 35 views
0

我的論壇正在發佈一些bot,它的帖子中包含字符「ÿþ<」(當使用iso-8859-1解碼時)。沒有鏈接,只是包含這些字符的隨機文本。這裏有一個例子:Perl正則表達式來捕獲垃圾郵件模式「ÿþ<」?

AZ情侶降低作品的事情我們這些你雲天化<服務忙,一個獲得男子收購雲天化<評價簡單地購買到數據信息的theyd時間雲天化<他們約她再次聘用的結果。業務有ÿþ<用戶運行確保數據街道安全鳳凰

它似乎是字節FF和FE之前的小於。

我想開發一個Perl正則表達式來捕捉這些字符,但我不知道該怎麼做。任何人都可以建議正則表達式?他們發佈這個目的的目的是什麼?我知道xruner探測網站的漏洞,但這不像我見過的任何論壇鏈接快捷方式。

回答

7

U + FEFF變得FF FE使用UTF-16le編碼時。

在文本的開頭,U + FEFF是UTF-16le BOM。在其他地方,這是一個零寬度的不間斷空間(也就是說一個不可見的,功能較少的字符)。

我可以想到兩種攻擊性用途。這兩種情況都涉及在被另一個程序使用之前,通過一個程序檢查HTML惡意內容的情況。

  • 如果檢查器上當切換到UTF-16LE當它遇到FF FE(因爲它錯誤地認爲它是一個BOM),以下<將表現爲比<給它以外的內容,從而繞過檢查爲<。這將允許\xFF\xFE<script>...</script>(例如)繞過這些標籤的檢查。

  • 檢驗器可以正確地確定<\x{FEFF}script(來自UTF-16LE解碼)不是HTML元素,並允許通過<\x{FEFF}script>...</script>到過濾掉U + FEFF的所有實例的童車的瀏覽器。這個瀏覽器將會看到<script>...</script>哪裏沒有。


你可能打算刪除的人物,但是這是一個壞主意。刪除會引入我上面提到的第二個安全問題。相反,你應該保留它們或將其更改爲U+FFFD

s/[\xFE\xFF]/\x{FFFD}/g 
+0

改進了我的答案。 – ikegami 2013-03-10 21:14:38

+0

因此,他們正在探索一種方法來獲得後門角括號。我想我可以安全地得出結論,如果帖子的正文等包含該字符,則該帖子是垃圾郵件。所以我只是將它們重定向到FBI的網絡犯罪頁面。我相信沒有成就,但它讓我微笑。 – 2013-03-11 00:49:07

+0

是的,我覺得FF FE可能會被意外插入。 (我可以想象在模板生成的電子郵件中偶然插入了BOM的UTF-8編碼,但很少。) – ikegami 2013-03-11 18:12:42

2

下面的正則表達式應該多字節字符工作:

$string =~ m/\x{00FF}/; 
+0

感謝Mauritz - 我爲我的CDN使用Cloudflare,並且他們也阻止惡意用戶。只要我關掉它進行測試,這些帖子就開始氾濫。我不知道他們在利用什麼漏洞...... – 2013-03-10 20:34:33

2

這個怎麼樣?

#!/usr/bin/env perl 

use strict; 
use warnings; 

{ 
    use bytes; 
    /\xff\xfe\x3c/ and print "found\n" while <>; 
} 

參見BOM

UTF-16(LE)FF FE 255 254 YTH

1

此正則表達式匹配的那些多字節字符:\xFF\xFE<