网站接口api安全有漏洞如何查找并修复堵住漏洞
某一客户的网站,以及APP系统数据被篡改,金额被提现,导致损失惨重,漏洞无从下手,经过朋友介绍找到我们SINE安全公司,我们随即对客户的网站服务器情况进行大体了解.建议客户做渗透测试服务.模拟攻击者的手法对网站存在的数据篡改漏洞进行检测与挖掘,就此渗透测试服务的过程进行记录与分享.
首先客户网站和APP的开发语言都是使用的PHP架构开发,后端使用的thinkphp开源系统,对会员进行管理以及资料的统计,包括充值,提现,下单功能.服务器使用是linux系统.共有3个接口,分别是WEB前端,接口,后台,都采用的是action的方法来调用,并初始化数据.我们看下代码
不同入口传入过来的值,并进一步的操作都不一样,我们SINE安全技术在get,post,cookies的请求方式中,发现一个规律,在查看代码中发现都是使用的get()的方式来对传入过来的值进行安全效验与拦截.对一些特殊符号包括<> 都进行了安全转义,不会直接输入到后端中去.基本上的一些漏洞,XSS,SQL注入漏洞是不会很容易的找到.我们继续对代码进行分析与渗透测试,对漏洞多次的测试,终于找到一处存在SQL注入漏洞的代码,存在于网站的会员头像上传功能.
我们抓取上传的数据包,并进行修改,将恶意的SQL注入代码写入到数据包中,将头像的图片内容进行修改提交过去,发现服务器返回错误,原因是对图片的内容进行了解析操作,并将上传的路径地址写入到了数据库,而这个写入数据库的图片路径地址,并没有做详细的变量安全过滤,导致SQL注入的发生,由此可见,攻击者可以查询数据库里的管理员账号密码,并登陆到系统后台进行提权.平台的后台目录地址很容易遭到破解,后台名字写的竟然是houtai2019,很容易让攻击者猜解到,使用SQL注入漏洞获取到的管理员账号密码.登陆后台,上传webshell,查到数据库的账户密码,进行连接,修改数据库.
在对后台的渗透测试发现,后台也存在同样的任意文件上传漏洞,upload值并没有对文件的格式,做安全效验与过滤,导致可以构造恶意的图片代码,将save格式改为php,提交POST数据包过去,直接在网站的目录下生成.php文件.对此我们SINE安全将渗透测试过程中发现的漏洞都进行了修复.
可能有些人会问了,那该如何修复渗透测试中发现的网站漏洞?
首先对SQL注入漏洞,我们SINE安全建议大家对图片的路径地址写入到数据库这里,进行安全过滤,对于一些特殊字符,SQL注入攻击代码像select,等数据库查询的字符进行限制,有程序员的话,可以对路径进行预编译,动态生成文件名,对ID等值只允许输入数字等的安全部署,如果对程序代码不是太懂的话,也可以找专业的网站安全公司来解决,国内像SINESAFE,启明星辰,绿盟都是比较专业的,剩下的就是任意文件上传功能的漏洞修复,修复办法是对上传的文件名,以及文件格式做白名单限制,只允许上传jpg.png,gif,等图片文件,对上传的目录做安全设置,不允许PHP等脚本文件的执行,至此客户网站数据被篡改的原因找到,经过渗透测试才发现漏洞的根源,不模拟攻击者的手段.是永远不会找到问题的原因的.也希望借此分享,能帮助到更多遇到网站被攻击情况的客户.