那些年干过的事(一)—php电商网站入侵及防护

背景

偶遇一从事电商的朋友,闲谈说到了他的电商网站,他不理解自己的网站是如何被破解的,问我能否帮忙看看他的网站存在哪些安全漏洞,说实话当时偶并没有研究过网站破解及安全防护,也是一时兴起抱着学习的态度答应了朋友。

目标:

寻找网站漏洞获取后台数据,提供修复建议

工具及手段:

google、UE、Sqlyog、SQL注入

方式方法:

1、了解目标网站

访问朋友网站,通过网站风格、网页后缀、版权信息等判断网站为基于开源EC-SHOP进行简单整合后部署的,开发语言php,版本号v2.5.0。

2、搜索资料

通过google搜索ec-shop介绍及其漏洞,下载ec-shop程序,网上公布了很多ec-shop的漏洞,主要利用SQL注入的方式。

搜索到user.php页面存在注入漏洞,//xxx.com/user.php?act=order_query&order_sn=21,其中order_sn并没有对字符进行检查,可以通过构造特殊字符如:user.php?act=order_query&order_sn=',其中构造的参数为英文单引号,页面会返回sql错误提示。

3、搭建测试环境

工欲善其事必先利其器,我们不能上来就拿朋友的网站开火,还是自己搭建一个学习学习,当然如果需要的话,还可能要读一下源代码,以便找到更好的构造方法。

在网上下载到ecshop的程序,结合安装部署说明在本地搭建ec-shop测试环境。

4、利用漏洞进行安全测试

使用在google上搜索到的常用漏洞进行试验,

访问//localhost/user.php?act=order_query&order_sn=',返回的页面让我和小伙伴都惊呆了。截图如下

这个页面告诉我们单引号被当作sql语句直接执行了,而且系统很豪爽的把sql的出错信息完整的告诉了大家,通过这个返回页面我们可以知道后台的表名称保留了ecshop的默认表。

系统执行的SQL语句为SELECT order_id, order_status, shipping_status, pay_status, shipping_time, shipping_id, invoice_no, user_id FROM `ecs_order_info` WHERE order_sn = ''' LIMIT 1 ),请注意我们输入的字符串会直接放入WHERE order_sn = ''的双引号内。熟悉SQL的同学们可以充分发挥你们的想象力了,提示下使用union(别小看这些平时不太起眼的词呀)。

这个漏洞相当于告诉大家,我给你们一个入口,可以执行sql语句,而且还可以把结果返回给你显示,太恐怖了,如果sql沟通得当,我们可以得到后台数据库中任何想要的信息。

既然这么多信息都能拿到,那什么最重要呢,其实我们只要拿到那个最重要的,其他的都很有更好的办法获得,聪明的朋友也许想到了,那就是获取管理员密码,你想想管理员密码都能拿到了,直接进入后台管理界面,通过正常的页面就能得到其他任何信息了。

那么怎么获得管理员密码信息呢?是不是觉得激动人心的时刻到了,事实上从发现漏洞,到漏洞发挥价值是一个煎熬也是令人激动的过程。

首先通过本地环境的数据库知道管理员信息存放在表ecs_admin_user表中,主要字段名user_name,password,那么获取用户名密码的简单sql为select username,password from ecs_admin_user;

考虑union的语法需要前后的字段数量、类型要一致才可,SELECT order_id, order_status, shipping_status, pay_status, shipping_time, shipping_id, invoice_no, user_id FROM `ecs_order_info` WHERE order_sn = '' LIMIT 1 )我们可构造union select 1,2,3,4,5,6,concat(user_name,0x7c,password),8 fromecs_admin_user,其中0x7c为构造一个分隔符,便于区分用户名密码,那我们把整个sql连接起来在数据库中执行查询,看是否能得到想要的结果,至于在如何在数据库中执行查询验证我就不再这里赘述了,经过验证sql语句正确可以执行。

第二步,我们将这个sql放到url中,//localhost/user.php?act=order_query&order_sn='union select 1,2,3,4,5,6,concat(user_name,0x7c,password),8 fromecs_admin_user,看结果,是不是很失望,并没有返回我们想要的结果,通过查看错误提示,发现sql语法有错误,url中可以看到在union之前我们添加一个单引号,而网站在构造后台sql时会在order_sn的值两边都添加单引号,这样最后构造的sql是语法不正确的,怎么解决呢? 还得感谢sql提供的好东东 /* ,这个特殊语句用于注释后面的内容,我们把它加在我们构造的字符之后,就可以把不需要的内容屏蔽了,从而得到一个可执行的sql语句了。

第三步,再试//localhost/user.php?act=order_query&order_sn='union select 1,2,3,4,5,6,concat(user_name,0x7c,password),8 fromecs_admin_user/*,怎么样?是不是很激动呢!

第四步,激动之后定睛一看,不对呀,密码怎们是那么长一串字符呢,嘿嘿,我悄悄的告诉你,那是用md5做加密的,是不是有些灰心了,折腾了半天怎们拿到的密码还不能用呢,别灰心,要有耐心,要抱着水来土掩兵来将挡的精神,不折不挠,碰到拦路的要吗直接干掉要吗想办法绕过。至于md5密码如何使用网上有很多办法,本文中就不描述了,当然如果有必要的话,我会单独写文件介绍。

再给大家赠送一个附加信息,上述方法只会取数据库中的第一个管理员密码,如果想获取其他行的管理员密码,也有应办法,在sql后 增加limit语句 from ecs_admin_user limit 0,1/*,limit的语法大家可上网查找。

第五步,通过管理员账号密码登录后台,成功!!!后台数据都暴露与我的眼前!

第六步,既然都准备好了,就要真刀实枪的上阵了,访问朋友网站,开火,一切顺利,登录后台成功。告知朋友已经过测试,其网站存在漏洞。当我把管理员的密码告诉他时,他震惊了。

第七步,我们的目的不是攻击网站,是帮朋友提供解决办法提高网站安全性,不能忘记目的呀,要不就走上歪路了,呵呵。其实办法也很简单,如果会改代码的话增加sql校验即可。

当然朋友是小白,这种方法他肯定不会了,我就告诉他最笨的办法,其实ecshop已经公布了补丁,只是这哥们太懒没有升级,到ecshop下载补丁包升级网站程序,解决此问题。

以上sql注入语句不是本人原创,都是网上搜集到方法,我只是原封不动的利用或者略觉修改利用。


学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入技术爱好者交流群373107565,我们一起学技术!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口阅读 15,664评论 0 16
  • 姓名:于川皓 学号:16140210089 转载自:https://baike.baidu.com/item/sq...
    道无涯_cc76阅读 1,929评论 0 2
  • 刚刚结束了项目期,最近对ecshop用的也算比较熟了,所以给大家分享出来,如果不是一定要用ecshop大家最好还是...
    寄去远方的盛夏阅读 1,755评论 1 4
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,811评论 0 9
  • SQL注入 概念 危害 原理 实例 防御 基础 - ### SQL语句所用符号不同数据库的sql注入与提权常见S...
    yddchsc君阅读 1,307评论 1 10