代码审计的思路都是先看sys目录还有user目录等

0x01:命令注入

直接在所有文件中搜索命令函数,比如system,exec等,然后看这些命令执行函数的参数来源于哪里,参数是否有过滤,过滤能否bypass

0x02:安装问题的审计

  • 无验证功能,任意重装覆盖
  • $_GET[‘step’]跳过限制步骤
  • 变量覆盖导致重装
  • 判断lock后跳转无exit
  • 解析install.php.bak漏洞
  • 其它特定功能绕过漏洞

直接审计install.php,一般应用程序安装后会生成一个install.lock文件,如果访问install.php文件,就会判断是否存在install.lock,如果存在就跳转到index.php,如果跳转后面没有exit则可能导致一些安全问题,比如数据库配置文件写入(burp抓特定包重放)注意用注释符注释掉后面双引号

0x03:sql数字型注入

格式为:”…… WHERE id = $id”

绕过过滤,如果关键字被过滤了,可以考虑借助后面被替换为空的字符来绕过过滤。如果单引号被过滤为空,可以考虑使用\’,这样过滤单引号后剩下的\会转义sql语句后面闭合的单引号。
如果有多个字段,其中要查询的字段被过滤了,可以使用通配符*来绕过

防御:
最好不要过滤为空,可以考虑替换为字符串

0x04:xss后台敏感操作

用户输入的可能会先存入数据库,但是可能在存入数据库前只对sql注入做了过滤,而没有对script标签做过滤。
如果插入数据库限制了长度,可以考虑加载远程js文件。
script src 后面加url可以不用双引号,有些浏览器会自动修复

0x05:文件包含漏洞的审计

如果包含文件通过拼接字符串限定了后缀,我们可以使用伪协议(phar://或者zip://)或者%00截断(一般在低版本的php中才存在)
比如只能包含.inc文件,而我们只能上传.jpg,那么我们可以在.inc文件里面写入一句话,然后压缩,改后缀为.jpg,然后通过伪协议来读取.jpg压缩包里面的.inc文件
php伪协议phar和zip协议主要用于打开一个压缩包,读取压缩包里面一个文件的内容,压缩包并不限制后缀。
phar://path/压缩包/读取的文件

有些时候我们上传的文件的命名会与时间戳有关,这时候我们可以通过f12查看response header的Data字段的时间,然后将其转换为时间戳,可能会有几秒的误差。

防御:
可以定义一个白名单数组,然后用in_array判断输入是否是这个数组内的元素之一

0x06:任意文件读取

读取配置文件以及其它一些敏感文件
echo file_get_contents参数是否可控
UPDATE table_name SET column1=value1,column1=value2 WHERE ……的时候,一个字段多次set时候,取最后一个值
有些时候我们输入的字符串被过滤的时候,我们可以考虑用十六进制来代替

0x07:越权操作

控制用户权限的变量是否可控

0x08:登录密码爆破绕过验证码

最后更新: 2018年07月28日 12:31

原始链接: http://drac0nids.top/2018/07/11/i春秋代码审计课程学习笔记/

× 请我吃糖~
打赏二维码