纯人工审核耗时太大,一般采用工具+人工的形式

本次要用的工具和资源:

链接: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文件夹

代码审计:_php_02

结果:

代码审计:_验证码_03

看一下结果:

代码审计:_验证码_04

安装phpweb:

这里博主展开讲讲

下载navicat博主这里提供了的:

连接密码的时候比较坑,因为phpstudy(2018)在你创建网站的时候要求数据库密码为六位。这是你自己设置的,不是root

连接以后,右键创建数据库:

代码审计:_创建数据库_05

创建数据库:

代码审计:_创建数据库_06

修改config.inc.php:

一定要对的上:

代码审计:_php_07

网址填你的ip。

这里我换成虚拟机,物理机phpstudy2018没办法下载php5.27。切成最低版

代码审计:_php_08

效果,不切到最低版有乱码:

代码审计:_php_09

到这里输入index2.php:

代码审计:_php_10

代码审计:_验证码_11

一直下一步:

根据配置信息输入:

代码审计:_验证码_12

一直下一步:

代码审计:_验证码_13

选择登录后台:

代码审计:_验证码_14

xxs反射:

浏览器访问:

http://192.168.1.106:90/phpweb/advs/admin/advs_lb.php

广告标题"><script>alert(123)</script>

http://192.168.1.106:90/

代码审计:_php_15

当然也可以结合sqlmap跑一下,我之前写过用法

熊海cms:

代码审计:_验证码_16

创建数据库:

代码审计:_创建数据库_17

提交

代码审计:_验证码_18

专门的php代码审计工具:

seay php

点击左下方的浏览:

代码审计:_验证码_19

代码审计:_创建数据库_20

点击综合扫描:

代码审计:_php_21

代码审计:_php_22

逻辑越权:

代码审计:_php_23

比如访问文章列表,抓包,退出登录:

可以不登录访问

代码审计:_创建数据库_24

sql注入:

' or updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '

我这里没报错,不知道为啥

代码审计:_验证码_25

代码审计:_验证码_26

存储型xss

http://192.168.1.106:90/xhcms/?r=contact

代码审计:_创建数据库_27

验证码路径:

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

代码审计:_创建数据库_28

卖碟'"<script>alert(123)</script>

代码审计:_验证码_29

显示:

代码审计:_php_30

csrf漏洞:

代码审计:_创建数据库_31

这里的内容管理中有一个删除文章的功能,没有做csrf token、验证码等防护。

点击后抓包得到url

http://192.168.1.106:90/xhcms/admin/?r=wzlist&delete=18

退出管理员账号,根据之前的越权漏洞分析,这里应该会转跳到login的界面