渗透测试服务 该如何检测SQL注入与逻辑漏洞?


   
       许多客户在网站,以及APP上线的同时,都会提前的对网站进行全面的渗透测试以
及安全检

测,提前检测出存在的网站漏洞,以免后期网站发展过程中出现重大的经
济损失,前段时间有客

户找到我们SINE安全公司做渗透测试服务,在此我们将把对
客户的整个渗透测试过程以及安全

测试,发现的漏洞都记录下来,分享给大家,也
希望大家更深的去了解渗透测试。

 
在对客户的网站进行服务的同时,我们首先要了解分析数据包以及网站的各项功能,有助于我们

在渗透测试中发现漏洞,修复漏洞,综合客户网站的架构,规模,以
及数据库类型,使用的服务

器系统,是windows还是linux,前期都要收集信息,做
到知彼知己百战不殆。只有真正的了解了

网站,才能一层一层的找出漏洞所在。



网站使用的是php语言开发,采用是mysql数据库,客户服务器用的是linux centos系统,用

phpstudy一键环境搭建,PHP的版本是5.5,mysql数据库版本是5.6.客户
网站是一个平台,采

用会员登录,功能基本都是一些交互性的,会员资料修改,银
行卡添加,充值与提现,在线反馈

等等。

 

 
下面开始我们的整个渗透测试过程,首先客户授权我们进行网站安全测试,我们才能放开手的去干

,首先检测的是网站是否存在SQL注入漏洞,我们SINE安全在检测
网站是否有sql注入的时候都会

配合查看mysql数据库的日志来查询我们提交的SQL
语句是否成功的执行,那么很多人会问该如何

开启数据库的日志,如何查看呢?
首先连接linux服务器的SSH端口,利用root的账号密码进服务器

,打开mysql的配
置文件mysqld.cnf编辑general_log_file=(log日志的地址

),general_log=1,
在服务器里输入tail -f (log地址),来查看实时的数据库语句执行日志。

当我
们SINE安全技术在测试SQL注入漏洞的时候,就会实时的看到是否有恶意的SQL语句执行成

功,如果有那么数据库日志
就会出现错误提示,在渗透测试中是很方便的,也更利于查找漏洞。
 

 
这里不详细的分析代码了,我们在测试中发现平台的后台管理页面存在SQL注入漏洞,当管理员登

录后台的时候我们看到guanlilogin.php里POST到guanlicheck.php
来对管理员的账号密码进行验

证,在验证的过程中guanlicheck.php并没有对传入
过来的参数进行安全效验,导致SQL注入漏

洞的产生,具体代码如下:

 
代码里的getenv参数是获取前端用户的https头信息,通过数据比对,如果头信息大那么久返回

0值然后再将IP赋值进去,通俗来讲就是没有任何的安全效验与拦截
,直接将变量的IP带入到

mysql据库。所以造成了SQL注入漏洞的产生。那么渗透
测试中发现SQL注入漏洞就是高危漏

洞,带来的危害较大,可以篡改数据,修改数
据库,可以将管理员的密码重置,或者是获取所

有的用户账号密码等信息。发生用
户信息泄露,利用数据库的权限修改管理员密码登录后台进

行下一步的提权操作,
上传webshell,控制网站代码。

 
 
接下来还得检测网站的各项功能以及APP功能是否存在逻辑漏洞,越权漏洞,水平垂直等等,我们

SINE安全技术详细的对每一个功能都测试很多遍,一次,两次,多
次的反复进行,在用户重置密码

功能这里发现有漏洞,正常功能代码设计是这样的
流程,首先会判断用户的账号是否存在,以及下

一步用户的手机号码是否与数据库
里的手机号一致,这里简单的做了一下安全效验,但是在获取手

机号验证码的时候
并没有做安全效验,导致可以修改post数据包,将手机号码修改为任意手机号

来获
取验证码,利用验证码来修改重置密码。
 

 
何修复渗透测试中的SQL注入漏洞呢?
 
在对前端输入过来的值进行安全判断,确认变量值是否存在,如果存在将不会覆盖,杜绝变量覆盖

导致掺入恶意构造的sql注入语句代码在GET请求,以及POST请求里
,过滤非法字符的输入。 '分

号过滤 --过滤 %20特殊字符过滤,单引号过滤,%百
分号, and过滤,tab键值等的的安全过滤。

如果对代码不是太懂的话,也可以找
专业网站安全公司来处理,国内SINESAFE,启明星辰,绿盟都

是比较专业的。
逻辑漏洞的修复办法,对密码找回功能页面进行安全效验,检查所属账号的身份是

否是当前的手机号,如果不是不能发送验证码,其实就是代码功能的逻辑设计出了问题,逻辑理顺

清楚了,就很容易的修复漏洞,也希望我们SINE安全分享的这次渗
透测试过程能让更多的人了解渗

透测试,安全防患于未然。
 
 
分享: