深圳易捷网络科技财税咨询网-neatmaster518.com 返回首页

Web安全PHP代码审查之常规漏洞

信息来源:深圳市易捷网络科技有限公司
信息发布时间:2025/4/5

前言

工欲善其事,必先利其器。我们做代码审计之前选好工具也是十分必要的。下面我给大家介绍两款代码审计中比较好用的工具。

一、审计工具介绍

PHP代码审计系统—RIPS

功能介绍

RIPS是一款基于PHP开发的针对PHP代码安全审计的软件。

另外,它也是一款开源软件,由国外安全研究员JohannesDahse开发,程序只有450KB,目前能下载到的最新版是0.55。

在写这段文字之前笔者特意读过它的源码,它最大的亮点在于调用了PHP内置解析器接口token_get_all,

并且使用Parser做了语法分析,实现了跨文件的变量及函数追踪,扫描结果中非常直观地展示了漏洞形成及变量传递过程,误报率非常低。

RIPS能够发现SQL注入、XSS跨站、文件包含、代码执行、文件读取等多种漏洞,支持多种样式的代码高亮。比较有意思的是,它还支持自动生成漏洞利用。

二、代码审计实战

通过刚才安装的两个审计工具运行后我们可以发现,会分析出很多隐藏的漏洞,那下面我们看看其中的SQL注入、XSS、CSRF产生的原因,通过原因来分析如何去审计代码。

SQL注入

SQL注入漏洞一直是web系统漏洞中占比非常大的一种漏洞,下面我们来看看SQL注入的几种方式。

SQL注入漏洞分类

从利用方式角度可以分为两种类型:常规注入、宽字节注入。

常规注入方式,通常没有任何过滤,直接把参数存放到了SQL语句当中,如下图。

非常容易发现,现在开发者一般都会做一些过滤,比如使用addslashes(),但是过滤有时候也不一定好使。

编码注入方式

宽字节注入,这个是怎么回事呢

在实际环境中程序员一般不会写上面类似的代码,一般都会用addslashes()等过滤函数对从web传递过来的参数进行过滤。不过有句话叫做,道高一尺魔高一丈,我们看看白帽子是怎么突破的。用PHP连接MySQL的时候,当设置character_set_client=gbk时候会导致一个编码漏洞。我们知道addslashes()会把参数1’转换成1\’,而我们提交参数1%df’时候会转成1縗’,那我们输入1%df’or1=1%23时候,会被转换成1縗’or1=1#’。

简单来说%df’会被过滤函数转义为%df\’,%df\’=%df%5c%27在使用gbk编码的时候会认为%df%5c是一个宽字节%df%5c%27=縗’,这样就会产生注入。

那如何防御这个宽字节呢我希望大家开发网站尽量使用UTF8编码格式,如果转换麻烦,最安全的方法就是使用PDO预处理。挖掘这种漏洞主要是检查是否使用了gbk,搜索guanjianccharacter_set_client=gbk和mysql_set_chatset('gbk')。

二次urldecode注入,这中方式也是因为使用了urldecode不当所引起的漏洞。

我们刚才知道了addslashes()函数可以防止注入,他会在(‘)、(“)、()前面加上反斜杠来转义。

那我们假设我们开启了GPC,我们提交了一个参数,/test.phpuid=1%2527,因为参数中没有单引号,所以第一次解码会变成uid=1%27,%25解码出来就是%,

这时候程序里如果再去使用urldecode来解码,就会把%27解码成单引号(‘),最终的结果就是uid=1’.

我们现在知道了原有是因为urldecode引起的,我们可以通过编辑器的搜索urldecode和rawurldecode找到二次url漏洞。

从漏洞类型区分可以分为三种类型:

可显

攻击者可以直接在当前界面内容中获取想要获得的内容。

报错

数据库查询返回结果并没有在页面中显示,但是应用程序将数据库报错信息打印到了页面中。

所以攻击者可以构造数据库报错语句,从报错信息中获取想要获得的内容,所以我建议在数据库类中设置不抛出错误信息。

盲注

数据库查询结果无法从直观页面中获取攻击者通过使用数据库逻辑或使数据库库执行延时等方法获取想要获得的内容。

SQL注入漏洞挖掘方法

针对上面提到的利用漏洞方法,总结了以下的挖掘方法:

参数接收位置,检查是否有没过滤直接使用_POST、$_COOKIE参数的。

SQL语句检查,搜索关键词selectupdateinsert等SQL语句关键处,检查SQL语句的参数是否可以被控制。

宽字节注入,如果网站使用的GBK编码情况下,搜索guanjianccharacter_set_client=gbk和mysql_set_chatset('gbk')就行。

二次urldecode注入,少部分情况,gpc可以通过编辑器的搜索urldecode和rawurldecode找到二次url漏洞。

SQL注入漏洞防范方法

虽然SQL注入漏洞非常多,但是防范起来却挺简单的,下面介绍几个过滤函数和类:

前言

XSS又叫CSS(CrossSiteScript),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。

XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。在WEB2.0时代,强调的是互动,使得用户输入信息的机会大增,在这个情况下,我们作为开发者,在开发的时候,要提高警惕。

xss漏洞分类

反射型,危害小,一般

反射型XSS原理:就是通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特定的代码参数会被HTML解析,执行,如此就可以获取用户的COOIKE,进而盗号登陆。比如hack甲构造好修改密码的URL并把密码修改成123,但是修改密码只有在登陆方乙才能修改,乙在登陆的情况下点击甲构造好的URL将直接在不知情的情况下修改密码。

特点是:非持久化,必须用户点击带有特定参数的链接才能引起。

存储型,危害大,影响时间长

存储型XSS原理,假设你打开了一篇正常的文章页面,下面有评论功能。这个时候你去评论了一下,在文本框中输入了一些JavaScript代码,提交之后,你刷新这个页面后发现刚刚提交的代码又被原封不动的返回来并且执行了。

这个时候你会想,我要写一段JavaScript代码获取cookie信息,然后通过ajax发送到自己的服务器去。构造好代码后你把链接发给其他的朋友,或者网站的管理员,他们打开JavaScript代码就执行了,你服务器就接收到了sessionid,你就可以拿到他的用户权限了。

相关行业资讯

1、深圳网站制作公司分享如何做好网站SEO优化
2、个人做网站建设一些基本的解决方案
3、网站设计使底部应该设置哪些内容
4、网站制作过程中的品牌设计策划分析
5、企业网站建设与网站运营需要注重什么
6、企业网站内容营销应该这样去做
7、深圳网站建设|想要用户体验度更好你得这么做
8、一个成功的网站设计要注意哪些细节
9、单页网站优化的技巧和操作方法
10、郭恒申:操作站群你需注意的细节
11、网站制作浅谈网站内容策划原则
12、怎么做好网站的内链优化
13、网站优化中关键词的不同分化阶段会对网站造成哪些影响
14、怎么做网站推广老站长解说网站推广技巧
15、什么样子的服装网站需要seo优化
16、怎么使用友链和外链提升排名
17、外贸企业申请企业邮箱促进外贸交易的成功
18、怎么估算网站建设的费用和成本
19、网站导航优化是什么
20、告诉你该纠正“内容为王”的观点了
21、网页设计师不该有的3种网站设计思想
22、站长一定要弄清楚网站布局结构是网站优化的根本
23、怎样去判断一个网站有没有做SEO优化
24、网站制作推广成功的因素
25、做网站SEO优化必须考虑网站转化率问题
26、网站SEO优化的6个基本步骤
27、推广优化几个重要关键点站长不能放过
28、新手站长应用如何做淘宝客
29、定制网站具有什么特点有哪些优势
30、医院如何做好节日营销
31、SEO教程网页中标题标签的优化技巧
32、网页设计中7个用户体验要素
33、浅谈网络营销与搜索引擎的关系
34、每天都更新内容的网站为什么还遭到降权了呢
35、易捷网络分享企业网站推广的有效果的渠道
36、山东莱芜网站制作之界面设计
37、企业网站制作好后需要注意哪些细节
38、深圳网站制作公司如何挑选
39、如何准确的做好深圳网站建设?
40、传统企业网站如何突围获得一席之地
41、浅谈如何制作网站
42、网页设计原则理念以及实战经验技巧
43、工业产品站只有做好站内优化才能获得理想的
44、深圳网站制作公司浅谈出门在外如何维护网站
45、网站建设中有哪些细节不可以忽视呢
46、有什么可以提高蜘蛛抓取网站频率的方法
47、网站制作的信息架构
48、实时竞价自助广告将成趋势
49、企业做英文版网站前的注意事项有哪些
50、微信小程序在那些行业应用更广泛
深圳市易捷网络科技有限公司版权所有    粤ICP备2022153140号