一次渗透测试行动的WAF绕过上传webshell


    前段时间参加了一个省hw,遇到一个很有意思的上传。花了两个小时研究绕过。我在论坛注册了这么久,还没有在这里发帖记录,好做个熟悉的鬼脸。目标是一个省级单位,有自己的云和很多子域。在hvv,我喜欢从这个目标开始。通过bing获得n个子域名,常规流程是经过反序列化、上传、猜测密码、执行命令(因为每次比较菜品的时候都会用到这些招数),但是每次hvv卫士总有一些低级问题被我解决,这并不代表注册用户直接找到一个上传。


本来以为几分钟就可以快刀斩乱麻,然后高高兴兴搞内网,没想到自己太优秀了还卡了两个小时。打开目标站点,找到一个已经注册并登录的地方。你可以先注册。发现你的头像可以直接上传就很幸运了,如下:

测试上传正常图片。先看看功能是否正常。好在功能如下。上传成功,并返回文件路径。将文件名改为txt后缀也兼容上传。继续更改aspx后缀。之后尝试了ashx,asp,ascx,asax等。发现他们都是502人。hvv太累短路了,没想到当时asmx。简而言之,它表明服务器有一些像waf这样的程序黑名单模式来杀死这些敏感的后缀,并且可以上传正常的非脚本后缀。Ping域名看看:直接搜索kunlunca.com看看是哪个厂商:原来是云之晶圆。接下来,有两个思路。第一个是找到真正的ip。在riskiq等各种网站上找不到历史已经解析的IP。总觉得自己不想放弃拦截黑名单。后来突然想到上传到asmx。。asmx是webservice服务程序的后缀。ASP.NET应用。asmx文件来兼容网站Services。既然是动态脚本,当然可以做事。结果他很幸运的兼容了。他当时觉得眼花缭乱。很容易兼容asmx。感觉这个站一定要赢。没想到会遇到很多坑,学到一些知识。其实哥斯拉也兼容asmx。当时她也做了一个尝试:直接转化成一个上传,正常访问。我觉得应该是稳定的。

但是我本地上传的测试就这样失败了。同时文章还说:可惜这个方法不支持。NET2.0.原因是应用系统。web。剧本。服务。命名空间不在系统中。网站,但是需要安装ASP。在ajax拓展中应用.net2.0ajax拓展,所以尽量避免在2.0环境中应用这种方法。

初步估计我遇到过这种可能不支持ASP的表单。NET2.0SHXExtensions拓展。我抓起包看了看哥斯拉的交互数据包,发现修改哥斯拉的包有点复杂。hvv正在与时间赛跑。我想换一个简单的方法。整个思路如下:1。应用文件实际操作函数转化成一句话的webshell。2.直接调用系统命令上的cs马。


可惜502被waf直接拦截。通过排除法进行大量测试后发现,只要客户端提交的文件包含file。CrteateTetxy(创建文件,实际操作函数)或Pluscessedius=onewprocess();创建过程函数关键字waf将全部被杀死。一会儿,如果你想得到一个shell,你应该写一个文件或者创建一个进程来执行命令。这些功能都是截取的。继续测试上传,发现eval函数没有被截取(有人说有eval是可以的,但是你还是要客户端提交实际操作函数代码,归根结底还是要实际操作文件和流程,继续往下看)。页面可以正常访问。

分享: