精华内容
下载资源
问答
  • HTTP PUT方法利用的几种方式
    千次阅读
    2020-12-24 14:14:37

    HTTP PUT方法利用

    在本文中,我们将会利用metasploitable2靶机上的HTTP PUT漏洞。通过此漏洞你可以轻而易举的向服务器上传恶意文件,并可以在meterpreter shell中获得整个服务器的访问权限。

    上一篇文章我们讲过了如何使用Curl,Nmap和OpenSSL来测试HTTP方法。如果服务器启用了HTTP PUT方法,我们就可以利用它来上传指定的资源到目标服务器上,比如webshell或者恶意软件。

    基本要求

    ·攻击者IP–192.168.179.141

    HEAD,GET,POST,CONNECT,这些方法是完全安全的,至少就HTTP方法本身而言是安全的。当然了,虽然请求本身可能也会有恶意参数,但参数跟方法是分离的,所以通常而言只应该启用这些方法。

    PUT,DELETE这些方法最初是用来进行文件管理的。然而一些web服务器保留了最初的配置,依然支持这些方法。如此一来,你就可以任意修改或删除服务器文件系统中的文件了。

    显然,如果启用了这些方法,你就容易遭到文件上传漏洞的攻击。

    另外,如果你有业务需求必须启用这些方法,那么应该严格限制文件访问权限。

    OPTIONS方法,这是一个判断方法,返回消息主要用于调试或者检查服务器其他方法是否启用。

    TRACE方法,这个方法比较出乎意料,它是响应体中返回的判断方法,即整个HTTP请求。这包括请求体,也包括请求头,比如cookies和认证头等。

    进入正题

    识别HTTP服务器最简单最基本的形式就是查看HTTP响应头中色server字段。可以使用Netcat客户端发送HTTP请求来获取服务器的HTTP响应头。

    更多相关内容
  • HTA文件,只能在WINDOWS下运行。支持任意HTTP头信息, 可以选择查看HTTP返回的头信息。 POST请求会自动加上Content-Type:application/x-www-form-urlencoded 用MDB保存提交数据功能,非常适合HTTP调试。
  • HttpClient HTTP PUT请求方法示例

    千次阅读 2021-02-27 21:05:31
    本教程演示如何使用Apache HttpClient 4.5发出Http PUT请求。 HTTP PUT请求方法请求服务器接受并存储提供的URI中包含的实体。 如果该URI引用已经存在的资源,则该资源被修改; 如果URI不指向现有资源,则服务器可以...

    本教程演示如何使用Apache HttpClient 4.5发出Http PUT请求。 HTTP PUT请求方法请求服务器接受并存储提供的URI中包含的实体。 如果该URI引用已经存在的资源,则该资源被修改; 如果URI不指向现有资源,则服务器可以使用该URI创建资源。

    Maven依赖关系

    我们使用maven来管理依赖关系,并使用Apache HttpClient 4.5版本。 将以下依赖项添加到您的项目中,以便创建HTTP PUT请求方法。

    pom.xml 文件的内容如下 -

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

    http://maven.apache.org/xsd/maven-4.0.0.xsd">

    4.0.0

    com.yiibai.httpclient.httmethods

    http-get

    1.0.0-SNAPSHOT

    https://memorynotfound.com

    httpclient - ${project.artifactId}

    org.apache.httpcomponents

    httpclient

    4.5.2

    maven-compiler-plugin

    3.5.1

    1.8

    1.8

    HTTP PUT请求方法示例

    在以下示例中,我们将数据发布到资源URL:http://httpbin.org/put 。 该资源确认数据并返回一个JSON对象,我们只需将其打印到控制台。 注意:使用Java7的try-with-resources来自动处理关闭ClosableHttpClient。 接下来使用Java 8的lambda作为ResponseHandler。 在这里,根据Http状态代码判断返回状态,当一切正常时,我们会将解析的响应正文返回给String。 当状态码不是所期望的时候,将抛出一个ClientProtocolException,表明Http PUT请求方法失败。 最后,我们将响应主体打印到控制台。

    文件:HttpPutRequestMethodExample.java -

    package com.yiibai.httpdemo;

    import org.apache.http.HttpEntity;

    import org.apache.http.client.ClientProtocolException;

    import org.apache.http.client.ResponseHandler;

    import org.apache.http.client.methods.HttpPut;

    import org.apache.http.entity.StringEntity;

    import org.apache.http.impl.client.CloseableHttpClient;

    import org.apache.http.impl.client.HttpClients;

    import org.apache.http.util.EntityUtils;

    import java.io.IOException;

    /**

    * This example demonstrates the use of {@link HttpPut} request method.

    */

    public class HttpPutRequestMethodExample {

    public static void main(String... args) throws IOException {

    try (CloseableHttpClient httpclient = HttpClients.createDefault()) {

    HttpPut httpPut = new HttpPut("http://httpbin.org/put");

    httpPut.setEntity(new StringEntity("Hello, World"));

    System.out.println("Executing request " + httpPut.getRequestLine());

    // Create a custom response handler

    ResponseHandler responseHandler = response -> {

    int status = response.getStatusLine().getStatusCode();

    if (status >= 200 && status < 300) {

    HttpEntity entity = response.getEntity();

    return entity != null ? EntityUtils.toString(entity) : null;

    } else {

    throw new ClientProtocolException("Unexpected response status: " + status);

    }

    };

    String responseBody = httpclient.execute(httpPut, responseHandler);

    System.out.println("----------------------------------------");

    System.out.println(responseBody);

    }

    }

    }

    执行上面示例代码,得到以下结果 -

    Executing request PUT http://httpbin.org/put HTTP/1.1

    ----------------------------------------

    {

    "args": {},

    "data": "Hello, World",

    "files": {},

    "form": {},

    "headers": {

    "Accept-Encoding": "gzip,deflate",

    "Connection": "close",

    "Content-Length": "12",

    "Content-Type": "text/plain; charset=ISO-8859-1",

    "Host": "httpbin.org",

    "User-Agent": "Apache-HttpClient/4.5.5 (Java/1.8.0_65)"

    },

    "json": null,

    "origin": "112.67.166.104",

    "url": "http://httpbin.org/put"

    }

    ¥ 我要打赏

    纠错/补充

    收藏

    加QQ群啦,易百教程官方技术学习群

    注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

    展开全文
  • http put

    千次阅读 2019-04-07 17:44:23
    put: Map<String, Object> param = new HashMap<String, Object>(); param.put("newPwd", SHA256Util.hash(newPwd)); param.put("oldPwd", SHA256Util.hash(oldPwd)); param.put("token", tok....
    put:
    Map<String, Object> param = new HashMap<String, Object>();
    			param.put("newPwd", SHA256Util.hash(newPwd));
    			param.put("oldPwd", SHA256Util.hash(oldPwd));
    			param.put("token", token);
    /*			StringBuffer sBuffer = new StringBuffer("http://test.yhzx.ucmed.cn/userCenterUCMED/user/changePassword");
    			sBuffer.append("?newPwd="+SHA256Util.hash(newPwd));
    			sBuffer.append("&oldPwd="+SHA256Util.hash(oldPwd));
    			sBuffer.append("&token="+token);*/
    			// 请求用户中心数据
    			JSONObject res = HttpRequest.sendPut(
    							"http://test.yhzx.ucmed.cn/userCenterUCMED/user/changePassword",
    							param, "utf-8");
    public static JSONObject sendPut(String url, Map<String, Object> map,
    			String charset) {
    		String param = getParam(map);
    		String reponse = Put(url, param, charset);
    		JSONObject res=JSONObject.fromObject(reponse);
    		return res;
    	}
    	public static String getParam(Map<String, Object> map) {
    		StringBuffer sb = new StringBuffer();
    		// 构建请求参数
    		if (map != null && map.size() > 0) {
    			Iterator it = map.entrySet().iterator(); // 定义迭代器
    			while (it.hasNext()) {
    				Map.Entry er = (Entry) it.next();
    				sb.append(er.getKey());
    				sb.append("=");
    				sb.append(er.getValue());
    				sb.append("&");
    			}
    		}
    		return sb.toString();
    	}
    	public static String Put(String url, String param, String charset) {
    		PrintWriter out = null;
    		BufferedReader in = null;
    		String result = "";
    		String line;
    		StringBuffer sb = new StringBuffer();
    		try {
    			String urlNameString = url + "?" + param;
    			logger.info(urlNameString);
    			URL realurl = new URL(urlNameString);
    			// 打开和URL之间的连接
    			HttpURLConnection conn = (HttpURLConnection) realurl
    					.openConnection();
    			// 设置通用的请求属性 设置请求格式
    			conn.setRequestProperty("contentType", charset);
    			/*conn.setRequestProperty("content-type",
    					"application/x-www-form-urlencoded");*/
    			// 申明请求方式
    			conn.setRequestMethod("PUT");
    			// 发送put请求必须设置如下两行
    			conn.setDoInput(true);
    			conn.setDoOutput(true);
    			out = new PrintWriter(conn.getOutputStream());
    			// flush输出流的缓冲
    			out.flush();
    			in = new BufferedReader(new InputStreamReader(
    					conn.getInputStream(), charset));
    			while ((line = in.readLine()) != null) {
    				sb.append(line);
    			}
    			result = sb.toString();
    
    		} catch (Exception e) {
    			System.err.println("PUT请求出现异常!" + e);
    			e.printStackTrace();
    		} finally {
    			try {
    				if (out != null) {
    					out.close();
    				}
    				if (in != null) {
    					in.close();
    				}
    			} catch (IOException ex) {
    				ex.printStackTrace();
    			}
    		}
    		return result;
    	}

     

    展开全文
  • java – 通过HTTP PUT请求上传文件

    千次阅读 2021-03-13 08:26:42
    让弹簧正确响应HTTP PUT方法的文件上载请求非常容易.import org.apache.commons.fileupload.FileUploadBase;import org.apache.commons.fileupload.servlet.ServletRequestContext;import javax.servlet....

    让弹簧正确响应HTTP PUT方法的文件上载请求非常容易.

    import org.apache.commons.fileupload.FileUploadBase;

    import org.apache.commons.fileupload.servlet.ServletRequestContext;

    import javax.servlet.http.HttpServletRequest;

    public class PostAndPutCommonsMultipartResolver extends CommonsMultipartResolver {

    private static final String POST_METHOD = "POST";

    private static final String PUT_METHOD = "PUT";

    @Override

    public boolean isMultipart(HttpServletRequest request) {

    boolean isMultipartRequest = false;

    if (request != null) {

    if (POST_METHOD.equalsIgnoreCase(request.getMethod()) || PUT_METHOD.equalsIgnoreCase(request.getMethod())) {

    isMultipartRequest = FileUploadBase.isMultipartContent(new ServletRequestContext(request));

    }

    }

    return isMultipartRequest;

    }

    }

    真正重要的是扩展默认

    展开全文
  • HTTP PUT方法利用

    千次阅读 2019-06-13 09:31:21
    nc 192.168.56.111 80 OPTIONS /test/ HTTP/1.1 Host: 192.168.56.111 #double return 在返回的ALLOW字段里面,如果有PUT,表示可以上传任意文件。...PUT /test/shell.php HTTP/1.1 Host: 192.168.56.111 ...
  • HTTP PUT请求该如何传输请求参数呢?

    千次阅读 2021-01-15 22:46:20
    有如下的接口@RequestMapping(value = "testPut", method = RequestMethod.PUT)public Result testPut(@RequestParam String foo, @RequestParam String bar) {System.out.println(foo + " " + bar) ;retu...
  • 危险的HTTP PUT

    千次阅读 2018-12-13 19:35:52
    Web服务器上启用了HTTP PUT方法,配置不当可以直接上传后门文件到服务器,直接getshell。 测试环境: 攻击机器:kali linux 靶机:metasploitables2 0x001 判断 #nmap 扫 80/tcp open http Apache httpd ...
  • java 发送上传文件的 http put 请求

    千次阅读 2019-05-15 18:39:41
    public static CloseableHttpResponse putFilesWithHeader(String url,JSONObject requestJson,Map<String, String> header ,File... files) { CloseableHttpResponse execute = null;... HttpPut http...
  • 问题描述SpringMVC中,Controller层设置该接口为PUT请求方式。但是请求的时候,只能是url地址拼接参数,不可以像POST请求一样通过表单方式传递参数。问题原因对于表单提交参数,tomcat默认只解析POST的表单,对于PUT...
  • 详解httpput delete get post
  • 实现HTTP PUT方式上传文件。

    千次阅读 2017-11-06 12:09:00
    if (Objects.equals(HttpMethod.POST,httpMethod) || Objects.equals(HttpMethod.PUT,httpMethod)) { // isMultipartRequest = FileUploadBase.isMultipartContent(new ServletRequestContext(request)); ...
  • 是一个Java 发送http put、delete、 post、 get 请求的工具类。可用在与restful service 进行通讯的代码中。
  • 该漏洞的产生原因来源于服务器配置不当造成,利用IIS PUT Scaner扫描有漏洞的iis,此漏洞主要是因为服务器开启了webdav的组件导致的可以扫描到当前的操作,具体操作其实是通过webdav的OPTION来查询是否支持PUT。...
  • WebApi HTTP Put 405 Method not allowed

    千次阅读 2017-09-19 17:21:22
    所以在IIS 7.5上部署的RESTful服务(WCF Data Service,WCF Rest Service,ASP.NET Web API,ASP.NET MVC)就悲剧了,当发送Put请求就会发生HTTP Error 405.0 – Method Not Allowed错误,解决方法也很简单,在Web....
  • Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete   参考:restful组件   HttpGet 、HttpPost、 HttpPut、 HttpDelete分别对应着接口测试的查询,修改,新增,删除   接口测试:   参数长度问题   ...
  • 对于表单提交,tomcat默认只解析POST的表单,对于PUT和DELETE的不处理,所以Spring拿不到。解决方案:1、修改tomcat的server.xml:   &lt;Connector port="8080" protocol="HTTP/1.1" ...
  • 如何让IIS 能响应HTTP PUT和DELETE请求

    千次阅读 2016-08-18 17:11:22
    其原因在于默认情况下,IIS会安装一个WebDav模块,而此模块阻止了HTTP PUT和DELETE请求。 因此,解决方法很简单,在部署了Web API的网站中,移除掉WebDav模块即可。 如上图所示,在包容了Web API REST Service...
  • HTTP PUT方法实例

    千次阅读 2014-04-04 11:18:57
    $return = curl_request($url, base64_encode($encrypted_data), 'PUT'); var_dump($return); data.php: require_once('inc/class/RC4.php'); error_reporting(E_ERROR); $_PUT = array(); if($_SERVER...
  • 通过HTTP PUT方法实现文件上传的步骤

    千次阅读 2015-07-12 21:01:06
    NSURL *url = [NSURL URLWithString:@"http://localhost/uploads/xxx.png"]; NSMutableURLRequest *requestM = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:2.0
  • VC实现Http Put方法

    千次阅读 2014-06-01 21:37:42
    hRequest = HttpOpenRequest(hSession, _T("PUT"), pPageUrl, NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0); if( FALSE == hRequest ) { sRes.Format(_T("Open request handle error. ErrCode=[%u]"), ...
  • 主要介绍了HTTP提交方式之PUT详细介绍及POST和PUT的区别,本文简洁易懂,需要的朋友可以参考下
  • PUT url_parh HTTP/1.1 Host: xxxx Content-Type: application/json Accept-Charset: utf-8 X-Auth-Token: token Connection: keep-alive Content-Length: length 或者 Transfer-Encoding:chunked ...
  • http的get、post、put 方法进行封装,置成lib直接调用
  • HTTPPUT请求

    千次阅读 2021-06-15 21:20:53
    浏览器在发PUT请求前会先发OPTIONS请求进行预检,看服务端是否可以接受PUT请求,若可以就在响应头添加字段告诉浏览器可以继续发送PUT请求 response[“Access-Control-Allow-Methods”] = “PUT” 就是添加这个字段 ...
  • http接口通用调试工具,支持get、post、put、patch、delete方法,数据的发送和接收使用json格式,即Content-Type: application/json
  • 一般来说,Web服务器默认的只支持Post和Get这两种“只读”的请求方法。但是随着Ajax XMLHttpRequest 和 REST风格应用的深入,我们发现Http 1.1协议还支持如下请求方法(Request Method): ...•PUT •TRACE •CONNECT

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 721,932
精华内容 288,772
关键字:

httpput

友情链接: DC_motor_openloop.rar