近期看到篇文章说sqlmap也能被反制了,看到的时候,第一反应是完了,拿起一个破站一顿操作的日子已经过去了吗?以后我这种脚本小子没有容身之地了,再也没有什么安全的工具是安全的了?作为一个脚本小子,这不妥妥的要复现一波,看看具体是怎么样的,不然到时被反制了岂不是要丢死人了。秉着有坑我不踩的想法,特定找了下一些资料并按照大佬的文章复现了下。大佬的文章中说的主要是利用反引号去命令执行。复现之前我们先了解下在shell中反引号、双引号、单引号的规则。先搞懂了这些,我们才能继续扩展思路,不然怎么触发都不知道,下一次遇到坑,那不是还是跳下去不是。反引号:反引号之间的内容会先作为命令执行,输出内容再用字符串的形式返回。![]()
双引号:双引号里的特殊字符比如 $、\ 等还会保留其特殊含义,变量名会被解析成变量值。![]()
单引号:单引号内的所有字符都会原样输出,没有特殊含义,单引号内的变量、命令替换都不会生效。![]()
一开始看到反制,想着直接搭建个linux,在win下进行反弹shell,一直无法复现出来。后面想了下,不对呀,反引号是linux的独有特征,环境应该是linux才对,win不可能复现出来。![]()
又安装了个linux,在linux下载环境部署,真就环境搭建一下午,复现几分钟。Linux效果:
![]()
执行ls的时候,发现查看的是自己本机上的文件,这不就是利用linux的反引号特征,那就是无论什么工具,参数只要带上反引就可以实现。随便找了个工具nmap,备注:纯粹就随便找了个工具,各位师傅别想太多。最终效果如下:
![]()
![]()
为了测试完整,用sqlmap的文件测试,看看将反引号藏在包里是否会执行,发现是无效的。![]()
正常跑sqlmap,不会触发命令执行,只有在输入命令的时候。![]()
在蜜罐上部署个页面,攻击者在linux使用sqlmap,还需要执行反弹shell的命令,才能达到效果。![]()
![]()
其实sqlmap这个反制思路,主要是利用了linux的特征导致命令执行的,如果用的工具不是linux的话,那么其实是没有任何影响的,win压根不会触发。反制成功的条件太苛刻了,本质上在linux的环境下,用任何命令加上反引号都能命令执行,等同于自己在linux上执行力这个命令。这种或许只能反制一下刚入门的小白。随着反制技术越来越骚,思路还是能借鉴的。
文章来源: https://mp.weixin.qq.com/s?__biz=MzUzODU3ODA0MA==&mid=2247489235&idx=1&sn=b13b8868d25490f1e92ac55d86048239&chksm=fad4cbc4cda342d2fba25c1baddc51d1682e2c41bfc6a623b35b4c756e65e2654cd57141d4fa&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh