前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >注意了,使用Sqlmap的你可能踩中了“蜜罐”

注意了,使用Sqlmap的你可能踩中了“蜜罐”

作者头像
FB客服
发布2018-02-09 11:07:53
8460
发布2018-02-09 11:07:53
举报
文章被收录于专栏:FreeBuf

* 本文原创作者:九如,本文属FreeBuf原创奖励计划,未经许可禁止转载

Par0:楔子

你站在桥上看风景,看风景的人在楼上看你, 明月装饰了你的窗子,你装饰了别人的梦。

Par1:你要了解的事

渗透测试的同学应该都知道,在Linux下,sqlmap执行的语句大多是:

Bash#sqlmap –u "http://sample.com/a=xxx&b=xxx" –data "postdata"

or

Bash#python sqlmap.py –u "http://sample.com/a=xxx&b=xxx" –cookie "cookedata"

如此形式的语句执行,实际上都是在shell中,执行bash命令。

但是,bash命令中,一些使用几率较小的特性,很多安全测试人员可能都不求甚解。

通过阅读Bash参考手册,可以了解到,在bash命令中,一些字符在封闭的双引号中,有特殊的含义,并非所见即所得。

如果,懒着弄代码(点击阅读原文可见)的意思,最好的办法就是在自己的Linux中执行相关的命令:

如ping “!!”,ping “`reboot`”,看看会产生怎样神奇的效果

说的明白点,双引号中的”!!”或者”!+数字”,会替换成历史命令,执行”history”命令,就可以知道哪些数字对应哪些命令了。如果我将”!”放入到http请求中,而渗透测试人员执行例如

bash# sqlmap -u "www.asnine.com/test" --data"post!!request=hacked"

首先双引号中的!!会被替换成你最近执行的一条历史命令,然后在发送到webserver,如果webserver是恶意的,那么他就可以轻松的收集到你的bash中的历史输入了,也算是一种信息泄露吧。

如果仅仅是信息收集,危害还小一些,如果用”`”(数字1前面那个反单引号字符),可就厉害了。任何”`”之间的命令,都会被执行,如果仅仅是为了好玩,一个reboot,就够你受了,但是如果还有其他的想法,你的系统可就危在旦夕了

如果我将这些特殊的字符(“!” , “`”…)放到get/post/cookie等http请求参数中,万一有人用sqlmap去对该网站进行安全测试,而注入参数正好包含了这些特殊字符,那么有意思的事情就产生了

此时,你通过拦截浏览器获取的http post如果是恶意代码

执行:

sqlmap –u "http://sample.com/a=xxx&b=xxx" –data "evilcode"

结果就是,装逼不成反被BI~

Par2:姑且称之为sqlmap honeypot吧

现在,我的目的很单纯,就是将特殊字符嵌入到http的请求数据中,以达到对渗透人员的反戈一击。

要做到一个强力的反击,首先需要将诸如”!”, “`”等字符串,放入http请求中。

而http请求,主要包括get request,cookie,post request三种。

大多时候,渗透人员通过获取post数据作为sql的注入点,所以,要找到一种在post情况下的危险参数注入。

由于post数据,可以构造的相对比较复杂,很多时候,渗透人员只是将所有参数一股脑的作为sqlmap的data参数进行测试,所以可以很好的做到将危险参数嵌入到post data数据中,以达到隐藏自身的目的。

接下来,要做的就是如果渗透人员在通过利用例如Burp Suite等工具获取sqlmap注入使用的参数时,获取到的字符为未编码的可见字符。

在用form进行提交数据时,如果添加enctype=”text/plain”属性,那么,就可以做到可见即可得。

访问该页面,进行查询时,发送到请求为:

这时,很多没有经验的安全渗透人员就可能将postdata,复制,粘贴,sqlmap执行之:

Boom!

Par3:换个姿势,再来一遍

前两拍,为了所谓的神秘感,利用人们不常用的bash特性,强行装了一波。

但是,既然利用场景是:

bash# exec "evil code"

那么事情可能会变得更加简单。

使用过Linux的,大多数都用到过管道(|),而这个功能,能更好好的完成任务。

如果注入参数是:

"|reboot" (参数中包含双引号)

那么执行的命令则为:

bash# exec ""|reboot""

以上,我都假设的是,渗透人员将参数放入到双引号(“)中。但使用管道,单引号的问题也迎刃而解

针对单引号,可以将注入参数设置为:

'|reboot'

Double Kill!

Par4:尾声

以上都是我在测试一个网站时,其cookie中包含了

"!+number"

导致了sqlmap语句的执行错误引起的。于是乎,深入追踪了下,发现其实主要原因属于bash的特性。如果利用这个特性做恶,的确存在一定的安全风险。

很多时候,我们并不能确保输入数据安全性,尤其在使用sqlmap这种输入参数来源于攻击目标的情况下。如果有人在获取的参数(get/post/cookie)上动了手脚,渗透人员很可能偷鸡不成拾把屎。

相信,只要理解了攻击手段,很多人会构造出更完美的攻击数据,这里就不献丑了。

而且,伪装到位的话,服务器甚至可以返回一些注入成功的信息

这个时候,sqlmap使用者,就有些悲剧了,他们沉浸在在成功的喜悦中,却未料到背后隐藏的杀机

当然,这种利用bash特性的攻击方式,并不仅仅作用于sqlmap,也可能用于其它依赖于Linux命令行执行的程序。Sqlmap只不过是这种特性的一个很好的利用场景。

Done!

* 本文原创作者:九如,本文属FreeBuf原创奖励计划,未经许可禁止转载

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Par0:楔子
  • Par1:你要了解的事
  • Par2:姑且称之为sqlmap honeypot吧
  • Par3:换个姿势,再来一遍
  • Par4:尾声
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档