怎么学php代码审计,记一次简单的php代码审计
PHP代码审计所需工具:
(1) 环境:PHPstudy
我这里直接使用phpstudy。其他的如:xampp,lamp等集成环境都可以。
Phpsyudy官网地址:https://www.xp.cn
(2)代码审计工具:
“工欲善其事,必先利其器。”一款好的代码审计工具可以辅助我们的白盒测试,提高挖掘漏洞的效率。下面我来介绍一下两款常用的代码审计工具。
1. RIPS
Rips是PHP语言开发的一款流行的审计工具,只要我们搭建好php环境就可以使用该工具。
官网:http://rips-scanner.sourceforge.net
下载好后,放入到我们本地搭建的网站根目录中,访问即可。下面是rips的界面。
2.Seay
这是一款由国内大牛法师(seay)13年期间基于c#开发的一款针对与PHP代码安全性审计的系统。是初学代码审计时常用的一款工具。
经验总结:
我这边总结一下我自己个人的经验。我个人是没有系统的学习过php的,所以说的有误的请各位大牛更正。
我认为有几点:
(1)确定框架或了解好文件的作用
为什么要确定好框架呢?因为确定好框架,我们可以去找找该框架的漏洞,也为我们后续审计工作带来更多的便利。怎么确定好一个框架呢?通常我们可以去看看需要审计的cms的官方文档。
为什么需要了解好文件的作用呢?我认为搭建好要审计的代码后,第一步就去找存放有全局函数,全局类的文件或配置文件。为什么呢?因为存放有全局函数的,如过滤xss,sql注入的函数都放在里面,我们可以看看过滤的正则写的怎么样,看看能不能绕过正则。或者如一些获取ip地址的函数,有没有过滤好,如果没有过滤好,往往都会出现http注入。
如何去找这些文件呢?一般有几个命名方式,如存放有全局函数的文件命名一般带有function,而配置文件一般会带有config这个字样,而controller,class多为类文件,存放类文件的目录多为controller或lib。所以说我们从文件名上就可以获取到很多信息。
(2)找好输入点,并确定有没有危险函数。
找好输入点?找什么的输入点呢。我们也知道有几个超全局变量如:$_GET $_POST $_SERVER.....
这几个不难发现都是用来接收外部输入的变量,这就是我们的输入点,而用户的输入都是不可信的。找到危险函数的同时,我们也要确定我们有没有输入点,可以对这个危险函数进行操作,且这个输入点输入的内容,程序有没有进行过滤或者过滤不充足。这几点是我们要考虑的问题。
(3)黑白盒交替进行,懂得抓包分析,逐步调试你觉得可疑的代码。
黑白盒交替进行,运用好抓包分析,对我们代码审计工作有着非常重要的作用。我们开始看到的是一个网站成形的样子,而不是一堆看到眼花缭乱的代码。所以如果是一些刚学代码审计,对代码通读能力较弱的人,可以先进行一下黑盒测试。我们可以一开始找到一个什么留言板,搜索框之类的,去测试有没有xss。有url跳转的地方去测试ssrf,或者登录后台添加或删除用户时,抓包分析,适当删除referer头来看看存不存在csrf。感觉麻烦的就拿AWVS,Nessus这些工具扫一波。
懂得调试代码,我们也可以单独将一段可疑的代码复制到另一个文件调试,多输出你想要的变量,来看看过滤规则等。
(4)最后一点是心态上,一定不能着急,要慢慢来,不要怕被打击,不断地总结经验。
实战演示
(1)SQL注入(演示云业CMS)
这个说真的,我这几天为了帮朋友搞个证书,我随便去源码站那里看看那些cms可以水一波证书,然后刚好看到这个某业,结果洞挖好之后,发现已经有人提交了,所以我不是第一个发现该漏洞的人。这次就用来当做教材分享给大家吧。官方也已经发布补丁。本次教学仅供参考学习,切勿做任何违法活动。
好的,我们现在直接到存放有全局函数的文件里,我们可以看到这个getip()用来获取ip的函数后面没有经过任何过滤,直接返回,这样就会造成一个http头注入。既然认为这是个漏洞,剩下我们就去看看哪里调用了这个函数。我这里用的是seay代码审计系统,这有一个全局搜索的功能,我们搜索getip()看看那里调用了该函数。
好的,这次我们点开这个/admin/login.php管理员登录文件
可以发现这个$logiparr调用了getip()函数,又未经过滤后传入checklogintimes函数,然后我们追踪一下这个函数。
可以发现这个过程是未经过任何过滤就传入值,所以我们抓包分析一下,可以发现当我们加了xxf头后,在ip地址后面加个引号会出现MYSQL报错提示。说明存在注入漏洞。
剩下偷个懒,直接扔sqlmap。
(2)Csrf(YzmCMSV5.5版本)
这个危害比较小,比较很鸡肋(厂商也不收呀),所以我拿来演示Csrf漏洞产生。
首先,是一个黑盒测试。我们直接登录管理员后台添加和删除会员的页面。通过抓取添加和删除会员时的数据包,分析。
网站程序只是简单的验证了一下referer头
删除referer头后,成功添加用户
所以,当referer头为空或者跟他同源时,则绕过检测。所以我们的paylaod代码就可以用标签配合data协议,以及base64编码实现。然后黑盒测试完成
该代码会添加一个haha的用户,实测效果:
然后我们来看下代码,其实这个关键点的就是,添加用户的的时候,没有加一个token验证,而这个检测只是简单的验证了referer头。
总结
上面两个只是比较小的案例,我这边建议的是开始最好从dvwa这些靶场,去看看产生漏洞的源码,了解漏洞产生的原因,然后再去找找比较简单,小众的CMS去挖掘。这些cms可以去网上那些源码之家找找。然后多看别人的文章,多参考参考大佬们的经验。看懂后最好自己能复现一下。
喜欢的大表哥 点个
关注+再看
怎么学php代码审计,记一次简单的php代码审计相关推荐
- 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。...
语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程. 为了将本人的python培训提高一个层次,本人最近买了很多算法的书. 这个书上的代码基本都是c语言实现的,c语言很久 ...
- python哪个方向简单_现在学Python,哪个方向最简单?哪个方向最吃香 ?
" 我想学Python,但是学完Python后都能干啥 ?" " 现在学Python,哪个方向最简单?哪个方向最吃香?" " -- " 相信 ...
- php 盾灵新闻系统,代码审计 | 记一次盾灵系统审计从后台到Getshell
原标题:代码审计 | 记一次盾灵系统审计从后台到Getshell 以下内容仅供技术研究学习使用! 严禁用于非法操作! 切实维护国家网络安全,普及相关网络安全知识是信安从业者的义务! 0x00前言: 在 ...
- 记一次简单线上比赛--CTF(初级)
记一次简单线上比赛–CTF(初级) 第一题:胖虎收到了一段特殊的字符串O5SWYY3PNVSXI33FORWGCYQ=,你能帮他解出正确内容吗? 解答: 1.首先看到这一串字符串就想到base64编码 ...
- 记一次简单高效的吸血鬼算法
记一次简单高效的吸血鬼算法 什么是吸血鬼数字 获取四位数的吸血鬼数字的代码实现 输出结果 代码分析 什么是吸血鬼数字 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一 ...
- Mina、Netty、Twisted一起学(一):实现简单的TCP服务器
MINA.Netty.Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍: MINA: Apache MINA is a network application frame ...
- 小于等于0_从0开始学ARMARM汇编指令其实很简单
学习ARM,就必须要学习ARM指令,ARM指令是CPU提供给我们的接口,是我们打开CPU这个潘多拉魔盒的钥匙. ARM指令有很多,为了让大家能快速上手,一口君整理了一些对我们最有帮助的指令.keil软 ...
- 有服主传送玩家指令_我的世界:狗子传送机学废了?没关系,简单无脑的WiFi红石来了!...
点击上方 蓝字 即可关注,每天有免费文章分享,欢迎留言小编看到会及时回复!!! 声明:本文素材均来源于网络,如有侵权联系删除 图酱在我的世界:狗子无用?错,是你不会用!试试大神开发的狗子回家机文章中介 ...
- 【项目实战课】人人免费可学!基于Pytorch的图像分类简单任务数据增强实战
欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的图像分类简单任务数据增强实战>.所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的 ...
最新文章
- 一个html文件放到服务器访问,访问云服务器里面的html文件
- php公用一个尾部,19.2 共用显示部分 - 19.2.2 共用尾部页面 - 《零基础学PHP+MySQL (零基础学编程)》 - D云...
- mysql 给表起别名_MySQL ------ 高级联结 (自联结,自然联结,外联结,带聚合函数的联结)(十五)...
- ubuntu查看python版本-linux查看python安装路径,版本号
- java mod函数的使用方法_java 数学计算的具体使用
- .net安全编程 阅读笔记(二)
- python相同key合并value_python 合并字典,相同 key 的 value 如何相加?
- 在linux看数据库表空间,Linux平台达梦数据库V7之表空间管理
- LIS (nlogn)的算法
- 如何使用 Mac 的通知中心?
- 程序转换实验程序流程图_智能化实验室 | # 自动智能化实验室的5大系统 #
- Jquery cookies 记忆菜单
- java web导出excel表格,java 网页导出excel表格数据-java 将页面内容写入excel文件中并可以将其下载到......
- 京东放大镜效果实现 + 原理分析
- 车辆运动学自行车模型
- ODBC连接数据库使用动态密码
- 算法导论------递归算法的时间复杂度求解
- js 刮一刮_刮擦刮擦
- 什么是网络流量劫持?揭秘详解黑客劫持的攻击手段与防御方法 (一)
- 【方法】STM32F103C8单片机通过定时器DMA测量脉冲宽度,无需CPU干预(以DHT11传感器为例)