Catalog
  1. 1. 审计原理
  2. 2. 审计方式
    1. 2.1. 1:通读全文
    2. 2.2. 2:危险函数分析
    3. 2.3. 3:搭建分析
  3. 3. 工具
  4. 4. 练习
PHP代码审计初学

学习一下。

审计原理

 之前学习开发的时候,老师说开发就是把麻烦留给自己,把简单留给用户,但是学习了安全那么久,我发现web端的安全,都是因为web端在某些地方被用户传入了有危害的参数,形成了漏洞利用,所以审计的原理也是主要看哪里的参数可以用于外部利用,然后可以构造利用漏洞的payload。

审计方式

 看了几天文章,审计方式大概分三种吧。

1:通读全文

 通读全文就是把整个web的开发都读过去一遍,再一点一点的构造payload,不过时间上花的会比较长,不过检查的很完整,不会有遗漏。

2:危险函数分析

 用Seay源代码审计系统,搜索危险函数,看看危险函数有没有可控的传参,有的话再构造payload进行利用,这个比较快捷,可以找到直接可以利用的漏洞,危险函数我在之前的文章有过简要分析了,传统的web漏洞也在靶场哪里做过分析,所以只要根据那些漏洞原理,去搜索一些函数进行分析就可以了,但是这个方法也有弊端,一些逻辑上的漏洞就用这种方法找不到了。

3:搭建分析

 将web搭建起来,就像黑盒测试一样去进行漏洞挖掘了,这个就看个人平时黑盒的本事了,自己对于漏洞的理解,自己去挖掘,因为是本地搭建,构建payload的时候也可以看着代码去进行构造,一些逻辑漏洞也能挖掘到。

工具

 Seay源代码审计工具——用于搜索函数

 phpstorm——通读整个web

 phpstudy——搭建web

 sublime——调试

​ 火狐浏览器+hackbar——做web端传参调试

练习

 三种方式。通读全文我就不做练习了,看完全部代码,我的开发水平看起来还是挺费时间的,我就在这里做一下危险函数+搭建分析。

 不过搭建分析,都是拿前面的靶场来做练习的,还没有拿过其他开源的cms做练习,希望自己之后也能抽出时间来多练练审计,对自己在渗透能更熟练,这里只琢磨一些审计的方式。

 先用Seay源代码审计来做一下演示,用pikachu靶场来做分析。

 看一下,主要有6种类型漏洞吧,有代码执行,sql注入,文件上传,任意文件读取,获取ip方式伪造,文件包含。

 前面我们演示靶场文章里面,这些漏洞大致上都有,我们来看看他自动审计是一个怎么样的判断的。

 看一下第一个审计出来的漏洞。

 这里的危险函数是一个eval,后面拼接了一个post请求提交的txt参数。查看web界面:

 是有个输入框,输入框内的内容是是txt的参数内容,外部用户可控,可以构造命令拼接进去执行,前面文章演示过了,这里不演示了。

 好懒,剩下的漏洞不想一个个去试了,总结的来说,这个自动审计都是先寻找全局,可能存在漏洞的函数,再看他后面是否拼接了可控的变量,然后你在自己溯源,去看那些变量是否是外部可控的,然后在构造payload。存在很多误报,而且也不全面,只能是短时间快速审计用的,能够完全摸索出一个web存在的漏洞还是得靠实实在在的全文审计。

Author: 九指
Link: /2020/01/15/PHP%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E5%88%9D%E5%AD%A6/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付寶