渗透测试-struts2攻防环境搭建拿shell

一、下载Jspstudy

打开目录
D:\JspStudy\tomcat\webapps

二、打开struts2并进行拿shell

1.打开struts2

在浏览器中输入网址
http://localhost:8080/struts2-showcase/showcase.action

点击上面的Configuration,点击Action Chaining点击上面的Configuration,点击Action Chaining

点击上面的Configuration,点击Action Chaining

 

2.利用K8 strtus2工具进行漏洞扫描利用

复制网址
http://localhost:8080/struts2-showcase/actionchaining/actionChain1!input.action

 获取信息成功,之后执行ipconfig命令

 

执行命令成功。
也可以利用专门的Struts2漏洞利用工具进行扫描攻击

发现存在s2-045,s2-046远程代码执行漏洞,可以利用
选择s2-046进行攻击,攻击成功,返回ipconfig信息

成功拿到对方的shell,实验结束。

总结

本次实验是对struts2攻防环境的搭建,复现了s2-046运程代码执行漏洞,从而获得对方主机的shell,对struts2环境漏洞的掌握与利用。

 

 

 

本文转载于网络 如有侵权请联系删除

相关文章

  • linux系统下使用unalias命令取消命令别名

    unalias命令用来取消命令别名,是为shell内建命令。如果需要取消任意一个命令别名,则使用该命令别名作为指令的参数选项即可。如果使用-a选项,则表示取消所有已经存在的命令别名。语法格式:unalias[参数][别名]常用参数:-a取消所有命令别名参考实例先设置一个别名:[root@linux~]#aliasi='ls' [root@linux~]#i IGILeaderNetEase复制使用unalias命令将已经设置的命令别名”i”取消:[root@linux~]#unaliasi复制上面的命令执行后,系统会将指定的命令别名取消掉。如果再使用该命令别名时,系统将提示如下信息:[root@linux~]#i -bash:i:commandnotfound复制

  • [linux][bcc]使用runqslower发现调度延迟问题

    前言 在高性能网络模型下,使用polling模式,依然遇到了长尾20ms+的情况,远高于平均的1ms左右。怀疑是调度的延迟导致的。那么如何量化是不是内核的调度导致的呢?以及如何发现是什么原因导致的呢? 分析 调度延迟 在前文《[Linux][kernel]scheddelay和stealtime的原理分析以及atop的监控改进》中分析过Linux中如何计算一个task的rundelay:即一个task希望运行,但是得不到运行的时间统计,即rundelay,也就是调度延迟。 那么问题来了,如果通过atop监控到某一个进程的rundelay是2%,能说明那20ms的长尾延迟是因为调度延迟导致的吗?答案是不能。我们看下面的两种情况: 1,例如说,Run19ms,Delay1ms,Run19ms,Delay1ms,Run19ms,Delay1ms。在这个模型下,统计出来的rundelay是2%。 2,另外一种模型下,例如Run980ms,Delay20ms,Run980ms,Delay20ms,这个模型下,就会遇到20ms+的长尾延迟。 所以atop可以统计出来宏观的rundelay延迟占比

  • Node.js RESTful API(下)

    显示用户详情以下代码,我们创建了RESTfulAPI:id(用户id),用于读取指定用户的详细信息,server.js文件代码如下所示:varexpress=require('express'); varapp=express(); varfs=require("fs"); app.get('/:id',function(req,res){ //首先我们读取已存在的用户 fs.readFile(__dirname+"/"+"users.json",'utf8',function(err,data){ data=JSON.parse(data); varuser=data["user"+req.params.id] console.log(user); res.end(JSON.stringify(user)); }); }) varserver=app.listen(8081,function(){ varhost=server.addres

  • 没有SortedList,如何快速找到中值

    做了这么多道题,我们发现总是需要某种数据结构辅助我们解决一些问题,算法跟数据结构总是不分家。一般我们使用的语言都会给我们内置常用的数据结构,堆啊栈啊列表啊等等,用多了的人对于它们的作用想必还是比较清楚的。我最前两天刷题遇到这样一个题目:设计一个类去计算一个数字流的中值。这个类要包含下面两个方法:insertNum(intnum)数字流中新增一个数字。findMedian()返回当前被增加的数字们的中值,如果数字个数是偶数,返回中间两个数的平均值。这道题目乍一看很简单,简单中透露着一丝危险的味道。首先我想到的是把所有元素存进一个SortedList里,然后找中值也不是很难的事情。但是想在SortedList中插入一个元素时间复杂度是O(N),作为一个Hard的题目它不该如此简单,有木有什么办法可以做得更好?仔细想来我们只是想获得中值或者说最中间的两个数,并不是要给所有数字排序,其他的数字我们不太关心,但是不排序要怎么找到中间的数字呢?先来分析一波,假设X是一个列表的中值,这意味着这个列表中一般的数字小于等于X,另一半大于等于X。这让我们把一个列表分成了两半,一半存储比它小的数字(暂且叫它

  • 倒计时5天|2020犀牛鸟中学科学人才培养计划申报进行中

    重要提醒一2020犀牛鸟中学科学人才培养计划申报即将截止,请有意申报的同学注意把控时间,于北京时间2020年5月31日24:00前,提交申报材料。申报方式1、学校推荐:由中学信息学科负责老师推荐学生并将相关申报材料发至Tencent_UR@tencent.com;2、学生报名:PC端登入唯知平台https://withzz.com/project/detail/72。重要提醒二已“预申报”的同学请注意尽快于北京时间2020年5月31日24:00前登入系统点击“开始申报”完成申报材料填写及提交,否则将视为未申报该项目。申报条件 1、中国大陆初三至高三年级的学生; 2、学有余力、热爱计算机学科、品学兼优,具有创新意识; 3、具有科研潜质,有个人独立完成的技术研究成果; 4、获得学生所在学校推荐。申报材料1、2020犀牛鸟中学科学人才培养计划申报表;2、2020犀牛鸟中学科学人才培养计划推荐表;3、其他佐证材料(包括不限于简历、加盖校章的最近一年成绩单、英语水平和科技创新水平获奖证书等)。注意事项项目在“科研能力提升环节”设有实践作业,可以个人或团队形式参与,若计划组队参与(团队要求不多于

  • 非递归遍历树

    先序非递归遍历二叉树,中序非递归遍历二叉树,后序非递归遍历二叉树及双栈法。先序非递归遍历二叉树先序非递归遍历比较简单,感觉与DFS类似,根据先序遍历的规则根左右,先将根节点压入栈,然后遍历左子树,再遍历左子树的左子树,一头走到NULL,把每次遍历的左子树的根节点依次入栈并把当前结点数据打印出来。最后为NULL,开始回溯,返回到前一结点(也就是当前结点的根节点),开始遍历右子树。依次类推。#include<stdio.h> #include<stdlib.h> #include<stack> #include<iostream> usingnamespacestd; structTNode { intdata; TNode*rchild,*lchild; }; inta[1000],b[1000]; intn; //先序+中序构造二叉树 TNode*Creat(int*a,int*b,intn) { TNode*T; for(inti=0;i<n;++i) { if(a[0]==b[i]) { T=(TNode

  • C# 重载条件逻辑运算符(&& 和 ||)

    C#重载条件逻辑运算符(&&和||)发布于2018-10-1621:04 更新于2018-12-1401:54在微软的官方文档中,规定&&和||运算符不可被重载,但允许通过重载&、|、true和false实现间接重载。本文将介绍重载方法和原理。感谢Opportunity的指导。条件逻辑运算符是可以重载的在微软的官方文档trueOperator(C#Reference)-MicrosoftDocs中,解释了&&和||这两个条件逻辑运算符的重载方法:AtypecannotdirectlyoverloadtheCaseallogicaloperators(&&and||),butanequivalenteffectcanbeachievedbyoverloadingtheregularlogicaloperatorsandoperatorstrueandfalse. 类型不能直接重载条件逻辑运算符(&&和||),但通过重载常规逻辑运算符&、|及运算符true和false可以达到同样的效果。 也就是

  • 洛谷P4592 [TJOI2018]异或(可持久化01Trie)

    题意题目链接可持久化01Trie板子题对于两个操作分别开就行了#include<bits/stdc++.h> usingnamespacestd; constintMAXN=4e5+10,SS=MAXN*42+10; constintB=31; inlineintread(){ charc=getchar();intx=0,f=1; while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); returnx*f; } intN,Q,a[MAXN],siz[MAXN],son[MAXN],top[MAXN],fa[MAXN],dep[MAXN],dfn[MAXN],cnt,rev[MAXN]; vector<int>v[MAXN]; structTrie{ intch[SS][

  • 面试必备:30 个 Java 集合面试问题及答案

    Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。这里,我列出了一些关于Java集合的重要问题和答案。1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。(3)通过使用JDK附带的集合类,可以降低代码维护成本。(4)复用性和可操作性。2.集合框架中的泛型有什么优点?1.Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。2.泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。3.这避免了在运行时出现ClassCastException,因为你将会在

  • Hacker基础之工具篇 arp-scan

    每日一Girl今天我们来学习个小工具,很实用的哦arp-scan顾名思义,是个ARP扫描器那我知道肯定会有人问,那ARP是什么呢?地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理地址的一个TCP/IP协议简单解释就是,比如我们一个手机刚刚接入WiFi,想去访问我们的192.168.1.222就会在WiFi组成的小网络里面发送ARP广播包 我的手机谁的IP是192.168.1.222?我的手机请回复192.168.1.111我的手机我的MAC地址是xx.xx.xx.xx这个包在内网中的每个开机了的主机都会收到然后假设有这个IP的主机,就会回复回复192.168.1.111 未知主机我的IP是192.168.1.222未知主机我的MAC地址是yy.yy.yy.yy未知主机之后<未知主机>就会更新自己的ARP映射表同时<我的手机>也会更新自己的ARP映射表 言归正传,这个扫描器的作用就是扫描内网中存活主机的因为其用的ARP协议,比Nmap会快很多直接在kali中输入arp-scan 就可以查看所有的选项一般常用的方

  • Android项目实战(四十七):轮播图效果Viewpager

    简易、常用的轮播图效果ViewPager,老技术了,记一笔留着以后ctrlC+ctrlV 需求如下:不定张个数的ImagView轮播,右下角显示轮播点图标,每隔固定时间切换下一张,最后一张图片自动切换后的为第一张图片,手指触摸可以滑动。思路:初始化Viewpager和轮播点之后 ,开启一个子线程,每隔3秒判断一次当前位置是不是轮播图数据个数的最后一个位置,是的话切换到第一张图片,不是的话切换到下一张图片一、先看布局文件,根容器为相对布局,里面放一个ViewPager控件,并在ViewPager控件右下角位置放一个线性布局,用于动态添加轮播点<?xmlversion="1.0"encoding="utf-8"?> <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools=&qu

  • 国外DIY牛人教你做Wifi机器人(最全教程)

    一、前言 Wifi机器人(WifiRobot):其实是一辆能通过互联网,或500米以外的笔记本无线设施来远程控制的遥控汽车。由于在车上配备了一个网络摄像头,因此在视野范围之外都能够遥控该车,此外,车上还装了一个喇叭,您可以远程朝人们按喇叭。 我发现LinksysWRT54GL路由器非常的hacker-friendly(黑客友好),它运行Linux和一些已经被反向工程(reverseengineered)了的硬件。世面上有一大批针对这种路由器的固件版本(firmwareversion)可供选择,本项目用到的版本是可订制化的LinuxfirmwareOpen-WRT。有了路由器的相关软件,对一大堆硬件进行改装也变得可能。因此,既然有这样一个廉价的、可改装的、嵌入式Linux系统可以随我所用——我知道我能做件很酷的事情,于是,Wifi机器人的想法诞生了。 本文的目的是提供一个该项目的概览,同时也列出了一些相关软件和电子产品的实施细节,但它并不是一个一步一步详细介绍如何制作Wifi机器人的手册,不过,那些具备一定电子和软件知识的人根据本文提供的信息也能够做出自己的Wifi机器人。我已

  • 腾讯数据中心基础设备质量检测之温湿度传感器篇

    背景:2015年伊始,腾讯数据中心出炉了企业内部适用的MDC南北向接口标准,并于同年3月以深圳某机房为试点整改北向接口完毕。然而类似“湿度0%”等匪夷所思的监控数据却层出不穷。失去真实可靠的原始数据根基,更深入的数据挖掘分析只是空中楼阁。于是我们组织人员第一时间赶赴现场,以品牌、型号为分层标准,抽取样品至腾讯数据中心基础设施测试平台,检验仪表数据和监控数据的一致性(受气流等不稳定因素的影响,现场测量的数据跳变不定)。我们使用温箱等专业测试仪器进行了为期数月的数据可靠性实验。实验结果显示,部分温度计竟然约有±7℃的误差,湿度计则有约±30%的误差,误差之大令人瞠目!即使向设备供应商提出整改,产品的质量优化效果也不能立竿见影。至此,部分规格不符合要求、质量堪忧或没有校正功能的仪表将会逐渐退出腾讯数据中心的舞台,腾讯数据中心也将制定更为严格的质量验收检测体系,并不断更新记录优先选择的品牌型号仪表的“短名单”。“万丈高楼平地而起”,更加智能的数据中心自动化运营系统,需要这样夯实的地基。目前腾讯数据中心的温湿度计芯片绝大部分属于瑞士品牌Sensirion,其型号有SHT1X、SHT2X、SHT3

  • Unity编辑器扩展

    只做记录,以后方便查阅 [MenuItem("路径")]  使当前静态方法在菜单栏显示 无视访问权限 第二个参数没有选择对象时是否进行进行操作   验证方法: [MenuItem("GameObject/Test1",true,13)]publicstaticboolTest1Validate(MenuCommandcmd){returntrue;}[MenuItem("GameObject/Test1",false,13)]publicstaticvoidTest1(){Debug.Log("Test1");} 第三个参数每一个菜单栏的priority优先级默认1000(每个分级相差11以上会出现分割线)   //创建弹窗publicclassEnemyChange:ScriptableWizard {   [MenuItem("Create/EnemyChangeWizard")]  publicstaticvoidCreateWizard()  {  ScriptableWizard.DisplayWizard<EnemyC

  • 常用SQL语句速查

    一、数据库操作 创建数据库 createdatabaseDB_NAMEcharset=utf-8; 复制 使用数据库 useDB_NAME; 复制 删除数据库 dropdatabaseDB_NAME; 复制 查看创库sql语句 showcreatedatabaseDB_NAME; 复制 创建表 createtableTABLE_NAME; 复制 修改表--添加字段 altertableTABLE_NAMEaddCOLUMN_NAMETYPECONSTRAINT; 复制 修改表--修改字段类型和约束 altertableTABLE_NAMEmodifyCOLUMN_NAMETYPECONSTRAINT; 复制 修改表--修改字段名、字段类型和约束 altertableTABLE_NAMEchangeOLD_NAMENEW_NAMETYPECONSTRAINT; 复制 修改表--删除字段 altertableTABLE_NAMEdropFIELD; 复制 删除表 droptableTABLE_NAME; 复制 查看创表sql语句 showcreatedatabaseTABLE_NAME;

  • pgm4

    这部分cover两个比较特殊的情形,一个是Gaussiannetworks,一个是exponentialfamily。 正态分布常见的参数化策略是均值和协方差矩阵,另一种是使用informationmatrix/precisionmatrix,即,另可以用所谓potentialvector代替,即。小结一下如下 针对Gaussian分布有些常见的结论,比如margin/conditionaldistribution,相关与独立性的关系这里不再赘述。 常见的GaussianBayesiannetwork是指所有的r.v.s是Gaussian,且CPD都是LG(linearGaussian)。可以证明对任意在上的Gaussian分布,以及任意的ordering(这里假定就是顺序的),可以构造对应的BN和图,使得的parent是,CPD都是LG且对应的图是minimalI-map。 如果从MRF的角度来看,二次型部分定义了一个pairwiseMarkovnetwork,我们称为GMRF,我们可以容易的证明, 如果是attractive的,即 或者是严格主对角占优的,即; 或者是pairw

  • ASP.NET Web API上实现 Web Socket - 转

    1.什么是WebSocket WebSocket是Html5中引入的通信机制,它为浏览器与后台服务器之间提供了基于TCP的全双工的通信通道。用以替代以往的LongPooling等cometstyle的实时解决方案。基于它们之间的比较以及WebSocket的优势参考https://www.websocket.org/quantum.html. 2.WebSocket如何工作 Connect WebSocket在建立之前需要先与后台服务器进行握手。具体来说通过如下Http请求: GET/chatHTTP/1.1 Host:server.example.com Upgrade:websocket Connection:Upgrade Sec-WebSocket-Key:x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol:chat,superchat Sec-WebSocket-Version:13 Origin:http://example.com复制 后台服务器如果支持切换到WebSocket,会返回如下Response: HTTP/1

  • monitor.sh

    #!bin/bash message_counts="" succeed_counts="" all_succeed_counts="" fail_counts="" all_fail_counts="" #获取昨天的日期 #Setthecurrentmonthdayandyear. month=`date+%m` day=`date+%d` year=`date+%Y` #Add0tomonth.Thisisa #tricktomakemonthanunpaddedinteger. month=`expr$month+0` #Subtractonefromthecurrentday. day=`expr$day-1` #Ifthedayis0thendeterminethelast #dayofthepreviousmonth. if[$day-eq0];then #Findthepreivousmonth. month=`expr$month-1` #Ifthemonthis0thenitisDec31of #thepreviousyear. if[$month-e

  • 【数论】卢卡斯定理模板 洛谷P3807

    【数论】卢卡斯定理模板洛谷P3807 >>>>题目 【题目】 https://www.luogu.org/problemnew/show/P3807 【输入格式】 第一行一个整数T(T\le10T≤10),表示数据组数 第二行开始共T行,每行三个数nmp,意义如上 【输出格式】 共T行,每行一个整数表示答案。 【输入样例】 2125215 【输出样例】 33 >>>>分析 emmmm模板题还是不用分析了吧 卢卡斯定理解决的就是组合数C(n,m)中m,n太大的情况 根据定理的内容,C(n,m)=C(n/p,m/p)*C(n%p,m%p)其中p是模数 我们只需要不断递归求解C(n/p,m/p)就可以啦 因为同余方程不满足两边同时除一个数,那么只能将除一个数转化成乘这个数在模数p意义下的逆元 求逆元的方式有很多种,在我的另一个博客里面会有详细介绍φ(>ω<*)  #include<bits/stdc++.h> #definelllonglong #defineLI64d #definemaxn100005 u

  • C#/.Net Windows Service 定时服务

    1.发现问题 发现公司之前的定时任务都是控制台,并且服务器上开了好几个控制台程序,就想把他们放在一个服务里面且各自按原来的周期定期执行 2.解决问题 2.1创建控制台程序 2.2创建完成添加windowsServices 选中项目-->右键--->添加-->新建项 创建完成点击切换到代码视图,可以看到下代码,顾名思义,OnStart是启动时执行,OnStop服务停止时执行的 点击查看代码 partialclassWinService:ServiceBase { publicWinService() { InitializeComponent(); } protectedoverridevoidOnStart(string[]args) { //TODO:在此处添加代码以启动服务。 } protectedoverridevoidOnStop() { //TODO:在此处添加代码以执行停止服务所需的关闭操作。 } } 复制 2.3添加ServiceHelper辅助类 点击查看代码 usingSystem; usingSystem.Collections; u

  • 模拟时间--延时处理

    MBProgressHUD*hud=[[MBProgressHUDalloc]initWithView:self.navigationController.view]; [self.navigationController.viewaddSubview:hud]; hud.labelText=@"正在清除缓存...."; __weaktypeof(self)weakSelf=self; [hudshowAnimated:YESwhileExecutingBlock:^{ //模拟删除要时间 sleep(1.0); }completionBlock:^{ //[[NSNotificationCenterdefaultCenter]postNotificationName:@"CLEARHISTORYTABLE"object:nil]; [hudremoveFromSuperview]; NSString*clearCacheName=[weakSelfclearTmpPics]; [JZGProgressHUDshowInfoWithText:@"清理成功"toView:self.vie

相关推荐

推荐阅读