PHP风险函数

PHP函数非常多,但是使用不当会造成危险。以下列出PHP中存在风险的函数,可以用作PHP代码安全审计!

命令执行:

|函数|解释| |-|-| |exec|不输出但返回结果最后一行,第二个参数储存全部结果| |passthru|输出不返回结果| |system|返回并输出结果| |shellexec|返回但不输出结果| |``|反引号,作用同shellexec| |popen|执行命令返回资源号| |procopen|同popen,更高权限| |pcntlexec|执行程序|

代码执行:

|函数|解释| |-|-| |eval|执行代码| |assert|判断表达式是否成立| |pregreplace|带/e修正符时,第二个参数将被当作代码执行| |createfunction|创建一个函数运行| |include|能引用远程代码| |includeonce|能引用远程代码| |require|能引用远程代码| |requireonce|能引用远程代码| |$GET['func']($GET['param'])|执行函数|

函数调用:

|函数|调用参数位置| |-|-| |obstart|0| |arraydiffuassoc|-1| |arraydiffukey|-1| |arrayfilter|1| |arrayintersectuassoc|-1| |arrayintersectukey|-1| |arraymap|0| |arrayreduce|1| |arrayudiffassoc|-1| |arrayudiffuassoc|-1, -2| |arrayudiff|-1| |arrayuintersectassoc|-1| |arrayuintersectuassoc|-1, -2| |arrayuintersect| -1| |arraywalkrecursive|1| |arraywalk|1| |assertoptions|1| |uasort|1| |uksort|1| |usort|1| |pregreplacecallback|1| |splautoloadregister|0| |iteratorapply|1| |calluserfunc|0| |calluserfuncarray|0| |registershutdownfunction|0| |registertickfunction|0| |seterrorhandler|0| |setexceptionhandler|0| |sessionsetsavehandler|0, 1, 2, 3, 4, 5| |sqlitecreateaggregate|2, 3| |sqlitecreate_function|2|

信息泄漏:

|函数|说明| |-|-| |phpinfo|PHP配置信息| |posixmkfifo|检查某目录是否是当前用户所有| |posixgetlogin|获取登陆用户名| |posixttyname|获取控制台名称| |getenv|获取环境变量| |getcurrentuser|获取当前用户| |procgetstatus|获取procopen信息| |getcfgvar|获取PHP配置| |diskfreespace|获取硬盘可用空间| |disktotalspace|获取硬盘总空间| |diskfreespace|同diskfreespace| |getcwd|获取当前活动目录| |getlastmod|获取最后修改时间| |getmygid|获取脚本GroupID| |getmyinode|获取当前脚本inode| |getmypid|获取PHP线程ID| |getmyuid|获取当前脚本UID|

文件操作:

|函数|备注| |-|-| |fopen|| |tmpfile|| |bzopen|| |gzopen|| |SplFileObject|| ||| |chgrp|| |chmod|| |chown|| |copy|| |fileputcontents|| |lchgrp|| |lchown|| |link|| |mkdir|| |moveuploadedfile|| |rename|| |rmdir|| |symlink|| |tempnam|| |touch|| |unlink|| |imagepng|第二个参数是路径| |imagewbmp|第二个参数是路径| |image2wbmp|第二个参数是路径| |imagejpeg|第二个参数是路径| |imagexbm|第二个参数是路径| |imagegif|第二个参数是路径| |imagegd|第二个参数是路径| |imagegd2|第二个参数是路径| |iptcembed|| |ftpget|| |ftpnbget|| ||| |fileexists|| |filegetcontents|| |file|| |fileatime|| |filectime|| |filegroup|| |fileinode|| |filemtime|| |fileowner|| |fileperms|| |filesize|| |filetype|| |glob|| |isdir|| |isexecutable|| |isfile|| |islink|| |isreadable|| |isuploadedfile|| |iswritable|| |iswriteable|| |linkinfo|| |lstat|| |parseinifile|| |pathinfo|| |readfile|| |readlink|| |realpath|| |stat|| |gzfile|| |readgzfile|| |getimagesize|| |imagecreatefromgif|| |imagecreatefromjpeg|| |imagecreatefrompng|| |imagecreatefromwbmp|| |imagecreatefromxbm|| |imagecreatefromxpm|| |ftpput|| |ftpnbput|| |exifreaddata|| |readexifdata|| |exifthumbnail|| |exifimagetype|| |hashfile|| |hashhmacfile|| |hashupdatefile|| |md5file|| |sha1file|| |highlightfile|| |showsource|| |phpstripwhitespace|| |getmeta_tags||

以上函数如果要产生更大的影响需要配合以下输入型函数

|函数|描述| |-|-| |$GET|| |$POST|| |$COOKIE|| |$REQUEST|| |$FILES|| |$SERVER|| |$ENV|| |$HTTPGETVARS|| |$HTTPPOSTVARS|| |$HTTPCOOKIEVARS|| |$HTTPREQUESTVARS|| |$HTTPPOSTFILES|| |$HTTPSERVERVARS|| |$HTTPENVVARS|| |$HTTPRAWPOSTDATA|| |$argv|| |$argc|| |getheaders|| |runkitsuperglobals|| |importrequestvariables||

系统常量

|常量|解释| |-|-| |HTTPACCEPT|| |HTTPACCEPTLANGUAGE|| |HTTPACCEPTENCODING|| |HTTPACCEPTCHARSET|| |HTTPCONNECTION|| |HTTPHOST|| |HTTPKEEPALIVE|| |HTTPREFERER|| |HTTPUSERAGENT|| |HTTPXFORWARDEDFOR|| |PHPAUTHDIGEST|| |PHPAUTHUSER|| |PHPAUTHPWD|| |AUTHTYPE|| |QUERYSTRING|| |REQUESTURI|| |PATHINFO|| |ORIGPATHINFO|| |PATHTHANSLATED|| |PHP_SEFT||