原理:没有对接口输入的内容进行严格的判断 造成攻击者精心构造的代码非法执行
当应用在调用一些能将字符转化为代码的函数(如PHP中的eval)时,没有考虑用户是否能控 制这个字符串,这就会造成代码执行漏洞。
相 关 函 数 : PHP:eval assert Python:exec
asp:<%=CreateObject(“wscript.shell”).exec(“cmd.exe /c ipconfig”).StdOut.ReadAll()%>
危害:
执行代码
让网站写shell 甚至控制服务器
漏洞利用:
执 行 代 码 的 函 数 :eval 、 assert callback函数:preg_replace + /e模式反序列化:unserialize()(反序列化函数)
防御修复:
- 使用json保存数组,当读取时就不需要使用eval了
- 对于必须使用eval的地方,一定严格处理用户数据
- 字符串使用单引号包括可控代码,插入前使用addslashes转义
- 放弃使用preg_replace的e修饰符,使用preg_replace_callback()替换5.若必须使用preg_replace的e修饰符,则必用单引号包裹正则匹配出的对象