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

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

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

前言

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

一、审计工具介绍

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、2019中秋节放假安排通知
14、选好关键词,是推广优化的第一步
15、易捷科技给予的网站制作改版建议
16、搜索优化作弊大全掌站长适当的避开陷阱
17、企业网站的结构该如何优化才是最佳的
18、网站建设分享-网站优化过度如何解决
19、4种有助于您提高转化率的设计策略
20、愿电力维修早日实现"互联网+"
21、 无论如何站长都要抓住用户的心来经营网站
22、网站开发的核心内容是什么
23、怎样彻底杜绝论坛垃圾广告
24、Seo成长日记:用文字来记录属于自己的成长三步曲
25、这些就是网站过度优化的降权一般现象
26、最好的设计网站公司需要具备什么要素
27、响应式设计中的常见难点
28、新型网购模式正在英国兴起:教人们穿衣搭配
29、搜索引擎优化之关键字布局策略
30、网站建设浅谈搜索引擎工过程
31、网站建设中影响优化的因素有哪些
32、手机网站建设网站的可用性界面设计的发展趋势
33、地方性律师网站制作的发展前景分析
34、做网站优化不得不说的百度第11位算法
35、分享白帽SEO优化发展趋势
36、网站服务器对SEO优化排名的影响你知道多少
37、内容对于网站建设的重要性
38、企业网站优化分析页面价值对于企业站优化的意义
39、“用户体验”百度是如何判断的
40、企业网站制作用户的第一印象很重要
41、浅谈一个网站的重要性
42、微信营销的注意事项有哪些?
43、如何在做网站时为优化助力
44、什么人适合做网站建设以及怎样才能把它做好
45、网站优化:做SEO要警惕网站域名被泛解析
46、百度竞价推广账户优化技巧实践经验
47、对于网站优化标题具体怎么做
48、详解GoogleAdsense的支付和使用
49、如何提高网站搜索展现率
50、网站推广的五大最佳推广方法
深圳市易捷网络科技有限公司版权所有    粤ICP备2022153140号