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

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

信息来源:深圳市易捷网络科技有限公司
信息发布时间:2024/12/22

前言

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

一、审计工具介绍

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、博尔塔拉网站建设怎样才能跟紧社会的发展脚步
2、电商网站用户停留时间优化的误区分析
3、网站制作公司哪家好
4、选择响应式技术究竟有什么优势
5、教您如何做外贸SEO
6、揭露SEO优化最深层次的秘密
7、Seo效果更好的操作方法
8、收录的页面修改时需要注意哪些问题呢
9、中小企业应重视网站规划
10、企业做网站建设时怎么样避免仿站陷阱
11、谈谈网站建设的基本流程是什么
12、企业不做网站建设会有哪些损失
13、建设营销型网站有哪些常见问题?
14、 实例分析网站结构优化的注意事项_网站运营_深圳网络公司
15、什么样的企业网站制作布局比较好
16、关于网络营销推广的一些种类及特点
17、SEO中常说的相关性是指什么
18、房地产行业在网站建设中的要点
19、什么是生成静态页面
20、软硬兼施的网站优化方式
21、实例分析如何利用QQ平台把分享做到极致
22、两个域名打开同一个网站可以吗
23、网易企业邮箱新增容量自动扩充功能
24、科技馆网站建设存在哪些创新问题
25、怎样制作自己的多语言网站
26、如何提高客户服务质量
27、网站打开提高速度的7大方法
28、2016年国外几个重要的搜索引擎变化
29、建站的五大注意事项
30、什么样的网站才能够给企业带来利润
31、再谈用户体验的价值
32、响应式网站和自适应网站的不同之处
33、这些有助于SEO优化的工具你都知道吗
34、SEO菜鸟的新站简单优化
35、从众心理的推广优化效果不会好
36、网站建设怎么吸引客户点击?
37、怎样才能把站内优化做到完美
38、搜索引擎如何识别非原创文章
39、企业网站改版,需求从哪里开始
40、SEO和SEM的几个配合之处
41、干掉垃圾评论从我做起
42、2021年外贸企业网站建设费用
43、企业网站设计公司在终端应用程序当初乃发生的非常时期需要注意的问题
44、浅谈如何巧用图片来引流
45、网站改版之后会对网站有哪些好处
46、做推广优化应该优先考虑哪些问题
47、对于百度竞价推广老账户的优化方案怎么写
48、千元建网站攻略
49、商城网站建设经营中不容忽视的几大要素
50、手机网站建设网页设计的视觉元素功能性和审美性的表现
深圳市易捷网络科技有限公司版权所有    粤ICP备2022153140号