纯人工审核耗时太大,一般采用工具+人工的形式
本次要用的工具和资源:
链接:https://pan.baidu.com/s/1aYniv90iu5GbSnvj8Pt_sA?pwd=g6x6
提取码:g6x6
--来自百度网盘超级会员V5的分享
常见的工具:
fortify, checkbugs
博主用的是fortify, pojie教程在zip文件里面
代码审计的通用思路
1、通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。
2、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
3、继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件 以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。
漏洞产生的原因
1、变量控制不严(一切输入都是有害)。
2、变量到达有利用价值的函数(一切进入函数的变量是有害的),漏洞的利用效果取决于最终函数的功能。
流程分析:
sql注入关键字: select、insert、update、$GET $POST、$REQUEST 上传漏洞关键字: $FILES 、move_uploaded_file 执行漏洞关键字: shell_exec、exec、passthru system、popen 包含漏洞关键字: include、include_once、require、require_once 变量覆盖关键字: $$ 跨站漏洞关键字: echo、print、print_r、var_dump、var_exprot
实战:
安装fortify2020.11版本:
按照pdf的步骤
选择phpweb文件夹
结果:
看一下结果:
安装phpweb:
这里博主展开讲讲
下载navicat博主这里提供了的:
连接密码的时候比较坑,因为phpstudy(2018)在你创建网站的时候要求数据库密码为六位。这是你自己设置的,不是root
连接以后,右键创建数据库:
创建数据库:
修改config.inc.php:
一定要对的上:
网址填你的ip。
这里我换成虚拟机,物理机phpstudy2018没办法下载php5.27。切成最低版
效果,不切到最低版有乱码:
到这里输入index2.php:
一直下一步:
根据配置信息输入:
一直下一步:
选择登录后台:
xxs反射:
浏览器访问:
http://192.168.1.106:90/phpweb/advs/admin/advs_lb.php
广告标题"><script>alert(123)</script>
当然也可以结合sqlmap跑一下,我之前写过用法
熊海cms:
创建数据库:
提交
专门的php代码审计工具:
seay php
点击左下方的浏览:
点击综合扫描:
逻辑越权:
比如访问文章列表,抓包,退出登录:
可以不登录访问
sql注入:
' or updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '
我这里没报错,不知道为啥
存储型xss
http://192.168.1.106:90/xhcms/?r=contact
验证码路径:
http://192.168.1.106:90/xhcms/inc/code.class.php
网址:</textarea>>script>alert(1)</script>
最后是验证码不对
博主干脆进后台改算了,这个源码没改
http://192.168.1.106:90/xhcms/admin/?r=commentlist&type=message
卖碟'"<script>alert(123)</script>
显示:
csrf漏洞:
这里的内容管理中有一个删除文章的功能,没有做csrf token、验证码等防护。
点击后抓包得到url
http://192.168.1.106:90/xhcms/admin/?r=wzlist&delete=18
退出管理员账号,根据之前的越权漏洞分析,这里应该会转跳到login的界面