前言
我的博客经常被师傅们用各种扫描器扫,每天都想尽办法来钓我鱼。虽然这是一种示好方式,但是久了,老是不给回礼就显得不礼貌了。所以我就稍微改造了一下博客。
这篇文章将会是一个系列,会告诉大家我是怎么和师傅们斗智斗勇(互相伤害)的。
首先,在渗透的时候,第一步大家基本都是开各种扫描器收集一波信息,在国内用的最多最平常的扫描器应该是AWVS系列。
这篇文章是教大家如何利用AWVS的特性,拿到对方内网的脆弱设备SHELL,给入侵我们的黑客一个惊喜。
流程
首先,我们先搭建一个实验环境。
分部为攻击机A,只需要安装有AWVS即可。
其次是内网的脆弱设备,基本路由器都是脆弱设备,所以拿自己家的路由器就可以了。
最后一个博客的demo,我会只给demo的代码,具体利用代码因为不可描述的原因不提供,但是我相信你们能写出来的。
如何区分是真人还是awvs在扫描你的网站?难道要专门搭建一个蜜罐然后各种算法来区分机器和人?
当然不用这么复杂。AWVS在扫描目标网站的时候,首先会爬取目标网站的所有链接,包括被注释掉的浏览器不显示的链接。 我们可以利用这一点,来区分是真人访问还是浏览器扫描。 毕竟真人是看不见被注释掉的链接的。
我浏览网站有F12的习惯。
首先,链接我不会放在博客的首页,是一大堆文章里面某个不起眼的文章里面。除非你看完我每一篇文章且都拿F12慢慢找。就算你毅力非凡闲的无聊找到了被注释的链接,点进去,也只觉得是一个普通的坑人的链接,相信我,我在我的博客上用这招拿了不少师傅的路由器shell,至今没被发现。也只有敬业的扫描器会全部页面找一遍了。
为什么不直接做CSRF?
因为我们需要进行POST的请求。大部分的EXP都需要POST来触发。而因为浏览器的跨域限制,AJAX的POST只能在同域名下的。如果强行POST请求,将会整个页面都会跳转过去。就算是一个普通用户,发现页面突然跳转到自己路由器的管理页面,都会发现不对,何况师傅们。
为什么要用AWVS来完成这个CSRF?
AWVS是典型的扫描器,大部分的扫描器都是通过内置浏览器,来请求目标网站,然后各种发POC各种爬链接。扫描器不像人那样会变通,如果扫描器遇到上面我说的情况,它会内心毫无波动的继续扫描。所以利用扫描器来完成我们的攻击更有价值。
你的博客地址是?
死心吧,我不会暴露自己的,别问了,如果师傅们发现,我可能就被打死了….
AWVS的扫描范围我记得是用户自己勾选的啊,不会给其他不在范围内的域名或者网站发任何请求的啊
当然,AWVS不会对不在扫描范围内的网站或者ip进行测试,当然,只是不测试而已,它可能是因为基于内置浏览器的缘故,有一些有趣的小特性,来帮助我们完成这次攻击。算是一个有趣的逻辑漏洞?
为什么不用GET类的EXP来做CSRF,这样既可以攻击到……还可以……
停,二狗子你闭嘴。GET类型的可以拿SHELL的EXP我好像就没见到过几个,其次,这篇文章是教怎么利用AWVS拿路由器的SHELL,是用POST的EXP。我相信大家手上的基本都是POST类型的0DAY。如果直接用GET的exp这篇文章两句就可以结束了。 还有,二狗子我看你不顺眼好久了,你跑过来问东问西什么意思,想砸我场子么?滚滚滚
这是这次demo的数据库结构。
上面是用来模拟藏在某个页面的陷阱链接。
当点击上面的链接,就会跳到这个自动发出post请求的页面。然后向同目录的hello.php发出一个测试请求。
接收上个页面传递的post数据,并且存入数据库。
然后访问index.php就可以看到存入的数据。
上面是扫描结果,我们可以看到,因为我在hello.php里面直接拼接字符串,导致了一个注入,但注入不是重点。重点是我们可以得知awvs测试了hello.php这个页面。
这是扫描之前的页面:
这是扫描之后的页面
可以看到awvs先发送了本来预设的Hello和Word这两个字符串,然后才开始的测试,注意这个细节。
当然,这只是awvs在扫描目标站中的某个含有漏洞的页面。我们试试把post的目标换为其他ip,在让awvs扫描试试。192.168.1.5扮演同内网下的脆弱设备。看看awvs这次会怎么样。
PS:这个在192.168.1.5上面的hello.php的代码和上面的hello.php是一样的。只是为了模拟不同的ip所以放在了另外一台电脑上
当然,再此之前,请执行
DELETE FROM txt WHERE id>1;
这句sql语句,删掉之前测试的内容,恢复到扫描之前的状态,然后在开始扫描。
这是第二次扫描结果,可以看到并没有发现之前的sql注入漏洞,是不是代表awvs没有访问在192.168.1.5上面的hello.php文件呢?
然而却莫名其妙多了几个hello word。
事实上,awvs确实不会对不在扫描范围内的域名或者ip进行测试,所以没有像之前那样找到sql注入漏洞,但是经过我的试验,可能因为内置浏览器的原因,会去发送我们预定好的字符串。这个有趣的特性可以被我们利用,用来给师傅们一个惊喜….
实战
某路由器的远程命令执行漏洞。登陆后台则是有回显执行,不登陆则无回显执行。
修改demo的代码,加入exp。打码部分为exp内容。
awvs扫描完成(原谅我偷懒,但是结果是一样的)
AWVS没有任何异常,它耿直的没有发现有任何不对并且顺手帮我们拿到了shell。
无声收割shell
总结
这篇文章用来给这个反击系列开头,抛砖引玉一波,我相信很多人都对于单方面的防御已经玩腻了。目前我的博客上面有几十个这种陷阱,每个对应一个exp。感觉类似于xss盲打,大部分针对路由器,毕竟家用路由器的漏洞更好挖,安全性更差。实际上大部分的安全工具或多或少都有各种各样的特性(逻辑漏洞)。仔细研究就可以用来怼师傅们和脚本小子。下个星期发下一篇。