蹭熱度分享乙份寫配置漏洞案例

2021-10-03 19:55:59 字數 2848 閱讀 6578

漏洞**還是出在乙個寫配置檔案的函式當中,**如下(大部分**刪去,只留核心部分):

public

function

input($c

)elseif(

$name

)else}}

}}$filename

=$newsid

.".php"

;$res

=write_config_file

($this

->

lib_path

."../data/"

.$dir

."/"

,$filename

,"_scfg_var"

,$input

,false

,false);

if($all_input)}

$res

=write_config_file

($this

->

lib_path

."../data/"

.$dir

."/"

,$filename

,"_scfg_var"

,$_scfg_var

,false

,false);

///...........省略大部分**..........

return

$newsid

;}

這裡通過post獲取name_list引數值,然後將值按「/」 分割存入陣列input,然後將陣列傳輸write_config_file函式,繼續跟進write_config_file

#! /lib/cfg/cfglib.php

function

write_config_file

($path

,$file

,$name

,$input

,$is_serial

=true

,$is_alert

=true

,$chmod

=0707)}

else

$output.=

$name

."['"

.$key

."'] = '"

.str_replace

('\"'

, '"', $val

)."';

".$_nl

;;

}

$output

.= "

?>";

}// ..................省略寫檔案部分**................

}

這裡$key1 = str_replace("'", '\'', $key1);程式設計師明明是想過濾掉寫key值的,但是我估計轉義符和單雙引號已經把他搞糊塗了,這裡這個轉移根本就沒起到作用。由此可見控制input即可控制寫入檔案的內容,如下圖:

但受到整體引數過濾影響,所有post的單引號都會被轉義為"\』",一般情況下若提交單引號將會得到如下結果:

但在繼續跟進input函式後半部分**時候發現在$all_inputtrue的情況下,會從資料庫中查詢相同的內容,並定包含該檔案,將$_scfg_var值從新寫入到檔案,**如下:

if

($all_input)}

$res

=write_config_file

($this

->

lib_path

."../data/"

.$dir

."/"

,$filename

,"_scfg_var"

,$_scfg_var

,false

,false

);

這裡就必要有意思了,這了會include剛才寫入的檔案,然後將值取出再次寫入。這裡$_scfg_var[$k] = addslashes($v);程式設計師值對值進行addslashes操作,而鍵名為做任何處理,在include包含執行該檔案後此處的$_scfg_var[$k] = addslashes($v);中的$k值就有了正常的單引號「』」了,後續再將$_scfg_var傳入write_config_file中後單引號未得到過濾,最終寫入檔案後便成了如下:

這裡只需要向目標二次提交**即可逃逸了,例如target.php?name_list=testsssssss'];phpinfo();#/bbb&test=testskin_file第一次提交**被magic_gpc轉義後寫入檔案,第二次提交時候因第一次生成了檔案,所以這裡程式邏輯條到後半部分,include第一次寫入的檔案,然後再將陣列二次寫,**成功執行!

此文由大佬們的深度好文有感而發,有不到之處多指教。漏洞原理和成因也比較簡單,但當時還是讀了許久**才發現問題,主要是**寫得太亂。

kafka乙份配置 說明

配置參考 官方說明 broker.id可以自動獲取,但避免擴容 下線導致部分id出現重複,因此手工指定 broker.id broker id 是否通過管理工具刪除topic delete.topic.enable true 能否自動建立topic,這裡修改為false auto.create.to...

kafka乙份配置 說明

配置參考 官方說明 broker.id可以自動獲取,但避免擴容 下線導致部分id出現重複,因此手工指定 broker.id broker id 是否通過管理工具刪除topic delete.topic.enable true 能否自動建立topic,這裡修改為false auto.create.to...

我的第乙份部落格分享

你好,世界 序列張三 李四 嘿,小四兒,寫部落格了沒注意李四的權利 李四愣了一下,說 李四 張三 忙得流血,哪有時間寫。或者流程圖 flow st start 開始e 端 結束op 操作 我的操作cond 條件 確認?st op condcond 是 電子cond 無 運算 關於 序列圖 語法,參考...