查看原文
其他

三进三出 | 渗透测试

意大利的猫 漫流砂 2021-04-25

写了一个多月的各种方案,终于抽个空可以做点技术活了

测试一个单位,其中一个官网,点进去一看,质朴中透露着一股有问题的气息,看了一下架构:IIS+PHP,美妙的组合。

迅速定位到了一个点可能存在注入,但是,有waf:

这么老的站,没注入你设waf干嘛?此地无银三百两,肯定有注入,上网搜一下wts-waf,一搜发现,绕过很简单,空格改成 + 即可,于是乎,我尝试了一下:

???

还有限制,大概是因为 = ,改成 like:

成了啊,这不妥妥有注入?

Sqlmap一把梭

然后。。。

IP没了,sqlmap一片红。。。仿佛是目标在说

这封IP,是不是访问太多太快了?

写个脚本,sleep(3),慢点就慢点吧,暴个库名收工吧。结果还是封,那手注吧,于是我被waf锤了一下午,总结出一下边界触点:

  • 联合查询注入select后面不能跟字符

  • 不会报错

  • 时间盲注不能用sleep函数

  • 不能用/**/

  • %0a这一类会被拦截

  • 。。。。

第二天清早起床,拥抱阳光,我又觉得我行了,还是绕绕吧,手工fuzz一下关键词,结果发现一个神奇组合可以使用:--%0a

select后面跟上--%0a,即union select --%0a 1,2,3--+即可绕过:

感人肺腑

Union联合查询找到表:

于是通过这个方法,顺便花了一块钱解密md5,成功拿到后台管理员密码

在后台一顿乱翻,找到一个点可以上传文件:

和其他的上传点一样,这个上传点也是有很多限制的,比如只允许上传.jpg、会对上传内容做静态查杀,仔细去测试上传的包:

第一个filename是对上传文件进行命名,第二个attachPath,是上传路径,第三个是正常的上传核心内容,filename的值会决定后端如何比较文件内容

既然是IIS+PHP,肯定是先试试00截断,果然成了。。。

而且还真能访问到:

当然这是一个带着phpinfo的马,这是不是可以内网整整了?

现实当然没有这么简单,这么简单的话就不需要写这篇了,没过两分钟,马没了,00截断上传php文件也不行了。。。

再上传回包是:

从我这张全是马赛克的图里,老司机们应该能迅速反应过来,代码的后端逻辑其实是先将上传的文件重命名为x.tmp存在缓存文件夹中,再重命名为我们之前filename设定的名字移动到指定的web目录下。

所以对方应该是做了策略,使php文件无法在缓存文件夹下落地!

揣摩一下对方的思想,应该是黑名单吧?

那我试试 phtml、php3、php4、php5…

果然都不行。

我灵机一动

IIS的,传个ASPX试试,结果显示 “脚本不支持” ,传个asp,结果和传php一样。那就试试ashx、asmx、ascx、cer…

果然 cer可以:

然后:

第二天,马没了,密码改了,注入不行了,我哭了。。。

作为全公司最努力的致力于发展台球事业的员工,怎么能就此被打倒?

Fuzz一下sql注入,它把information_schema给🈲️了

??? 

由于某些不可抗力,后续无实际测试图,但是本地搭了个环境,写一下怎么做的去绕过这个规则:

payload:

-1 union select 1,`2`,1 from(select 1,2,3 union select * from user)a limit 1,1--+

这样就可以做到只要知道表名就可以不用information_schema注入出数据,那如果我之前就没有获取到表名呢?

那就使用 payload uid=1 and exists(select * from user1)--+ 

使用payload uid=1 and exists(select * from user)--+

配合上之前的绕过规则,再花一块钱,又可以获得管理员的密码了... 




往期文章

Phishing

不落地反弹meterpreter  |  Linux后门系列

为了--force-pivoting参数,我问候了sqlmap开发者





有态度,不苟同



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存