上一篇文章带大家认识了一下代码审计,这一篇从较为简单的PHP入手讲讲常存在风险的函数

代码执行
eval()
assert()
preg_replace()
create_function()
array_map()
call_user_func()
call_user_func_array()
array_filter
usort
uasort()

代码审计——常见漏洞审计之php危险函数总结_漏洞修复
代码审计——常见漏洞审计之php危险函数总结_漏洞修复_02

命令执行
system()
exec()
shell_exec()
passthru()
pcntl_exec()
popen()
proc_open()

代码审计——常见漏洞审计之php危险函数总结_安全防护_03

文件包含

分别对应路径,文件名,后缀。根据服务端采取的不同策略,我们也可能会有不同的绕过方法。

require
include
require_ once
include once

代码审计——常见漏洞审计之php危险函数总结_漏洞发现_04

任意文件读取
copy
file_get_contents()
highlight_file()
fopen()
read file()
fread()
fgetss()
fgets()
parse_ini_file()
show_source()
file()

代码审计——常见漏洞审计之php危险函数总结_安全防护_05

特殊函数
bool phpinfo()

软连接读取文件内容

代码审计——常见漏洞审计之php危险函数总结_安全防护_06

XSS
将数据插入到数据库中
重点审计 update insert 等sql语句
将数据输出到页面中
重点审计 echo print_r 等输出语句
越权
就是相同级别(权限)的用户或者同一角色不同的用户之间,可以越权访问、修改或者删除的非法操作。如果出现次漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。
垂直越权是不同级别之间或不同角色之间的越权;垂直越权又别分为向上越权与向下越权。比如,某些网站,像发布文章、删除文章等操作属于管理员该做的事情。假设一个匿名用户也可以做相同的事情,这就叫做向上越权;向下越权是一个高级用户可以访问低级用户信息。

POST或GET请求中有可控参数

XXE
__construct()
addAttribute()
addChild()
asXML()
attributes()
children()
getDocNamespaces()
getName()
getNamespaces()
registerXPathNamespace()
simplexml_import_dom()
simplexml_load_file()
simplexml_load_string()
xpath()
sql注入
select from
mysql_connect
mysql_query
update
delete
insert
urldecode
rawurldecode
反序列化

漏洞原理:unserialize函数的变量可控,php文件中存在可利用的类,类中有魔术方法。

serialize()
unserialize()
__construc()
__destruct()
__call()
__callStatic()
__get()
__set()
__isset()
__unset()
__sleep()
__wakeup()
__toString()
__invoke()
__set_state()
__clone()
__debuginfo()

还有一些绕过登录密码验证码以及账单支付等逻辑漏洞需根据个人经验进行审计

欢迎关注公众号,原创不易,转载请注明来源【爱国小白帽】????

代码审计——常见漏洞审计之php危险函数总结_漏洞修复_07