代码审计入门总结

作者: 计算机  发布:2019-01-03

  之前看了seay写的PHP代码审计的书,全部浏览了一遍,作为一个代码审计小白,希望向一些和我一样的小白的人提供一下我的收获,以及一个整体的框架和常见漏洞函数。这也算是这本书的一个学习笔记吧,可以结合我捋顺的思路来看这本书。: )

  学习代码审计的目标是能够独立完成对一个CMS的代码安全监测。其通用的思路有:

  通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。

  看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。

  继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件 以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。

  禁止传入参数类似于这种 .. ,/, 检查传入的参数,做出限制,停止程序往下执行

  move_uploaded_file() 接着看调用这个函数的代码是否存在为限制上传格式或者可以绕过。

  (1) 未过滤或本地过滤:服务器端未过滤,直接上传PHP格式的文件即可利用。

  不被允许的文件格式.php,但是我们可以上传文件名为1.php(注意后面有一个空格)

  老版本下的session_destroy(),可以删除文件,现已基本被修复。

  $action = delete即可删除.sql的文件,如果文件不是sql直接删除提交的文件名

  (2)is_numeric():当传入参数为hex时 直接通过并返回true 并且MYSQL可以直接使用hex编码代替字符串明文 可以二次注入 并且可能造成XSS漏洞

  水平越权:A用户能够以B用户的身份,进行B用户的全部权限操作。前提A用户和B用户拥有相同的权限。

  垂直越权:A用户能够以C用户的身份,进行C用户的全部权限操作,前提C用户比A用户拥有更高的权限。

  找到传入sql语句的参数的传递过程 回溯变量到最原始的函数 看它保存在cookie的算法 是否可逆

  不受GPC保护的$_SERVER变量:PHP5以后,$_SERVER取到的header不再受GPC影响,就算开启特殊字符也不会被转义,存在注入编码问题转换:

  GBK的宽字节注入:%df 单引号自动被转义成(%5c),同时%df与%5c连在一起组合成運字单引号依然在,成功闭合。【php与mysql交互过程中发生的编码转换问题】

  自己走上安全这条路既是兴趣也是偶然,选择白盒完全是因为喜欢php,毕竟是初识代码审计,seay的书确实帮了我不少,抱作者大腿(我是萌妹纸),希望这篇文章能够帮助像我一样小白的人,花了两天总结的,如果有什么缺陷也等着大家指出。

本文由www68399.com皇家赌场于2019-01-03日发布