三站合一的網(wǎng)站怎么做教程找培訓(xùn)機(jī)構(gòu)的app
原理:沒(méi)有對(duì)接口輸入的內(nèi)容進(jìn)行嚴(yán)格的判斷 造成攻擊者精心構(gòu)造的代碼非法執(zhí)行
?
當(dāng)應(yīng)用在調(diào)用一些能將字符轉(zhuǎn)化為代碼的函數(shù)(如PHP中的eval)時(shí),沒(méi)有考慮用戶是否能控 制這個(gè)字符串,這就會(huì)造成代碼執(zhí)行漏洞。
?
相 關(guān) 函 數(shù) : PHP:eval assert Python:exec
asp:<%=CreateObject(“wscript.shell”).exec(“cmd.exe /c ipconfig”).StdOut.ReadAll()%>
危害:
執(zhí)行代碼
讓網(wǎng)站寫shell 甚至控制服務(wù)器
?
漏洞利用:
執(zhí) 行 代 碼 的 函 數(shù) :eval 、 assert callback函數(shù):preg_replace?+ /e模式反序列化:unserialize()(反序列化函數(shù))
?
防御修復(fù):
- 使用json保存數(shù)組,當(dāng)讀取時(shí)就不需要使用eval了
- 對(duì)于必須使用eval的地方,一定嚴(yán)格處理用戶數(shù)據(jù)
- 字符串使用單引號(hào)包括可控代碼,插入前使用addslashes轉(zhuǎn)義
- 放棄使用preg_replace的e修飾符,使用preg_replace_callback()替換5.若必須使用preg_replace的e修飾符,則必用單引號(hào)包裹正則匹配出的對(duì)象
?