文章目录
- nmap扫描-精
- Web渗透
- 目录爆破
- 简单认证爆破-精
- 会话内目录爆破
- 40892分析
- 邮件信息解读
- 利用与绕过
- PGP解密与Docker立足点
靶机地址:https://download.vulnhub.com/powergrid/PowerGrid-1.0.1.ova
nmap扫描-精
sudo nmap -sn 192.168.1.13/24扫描网段,查看存活主机,寻找靶机
mkdir nmap_output创造一个文件夹,用于存扫描结果等
①sudo nmap --min-rate 10000 -p- 192.168.1.13 -oA nmap_out/ports
这种的话,虽然噪声挺大,但打靶机可以不用这么谨慎,快而方便
②而这下面这种方法更偏于红队实战
time sudo nmap -sS -n -Pn -T2 --max-retries 2 -p- 192.168.1.13 -oA nmap_output/ports_slow
③sudo nmap -sS -n -Pn -p 88,143,993,1 -sV -sT -O --reason 192.168.1.13 -oA nmap_output/detail扫描相关端口
④sudo nmap -sU --top-ports 192.168.1.13 -oA nmap_out/udp保险起见,做一下udp扫描。
Web渗透
curl -s http://192.168.1.13 | html2text
目录爆破
gobuster dir -u http://10.10.10.157 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --useragent ‘Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0’ --discover-backup -x txt,php,rar,zip
这个指令要去获得他的userAgent
所以我们可以把userAgent换成–random-agent,随机浏览器 UA,不用手动写一大串 UA 字符串
gobuster dir -u http://靶机IP -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --random-agent --discover-backup -x php,txt,zip,rar,bak -t 50 -o gobuster_result.txt
简单认证爆破-精
发现他需要用户和密码登录,我们用相关工具来爆破一下,有时候用自己生成的字典才能碰撞出来
time hydra -L dict -P wordlists 10.10.10.157 http-get /zmail -e nsr
用户名:p48
密码:electrico
会话内目录爆破
登录进去之后,发现还有一个登录界面
把HTTP的请求头给复制一下
cookie也要复制上去
gobuster dir -u http://10.10.10.157/zmail/
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --useragent ‘Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Firefox/140.0’ --discover-backup -x txt,php,rar,zip -H ‘Authorization: Basic cDQ4OmVsZWN0cmljbw==’ -c ‘roundcube_session=bge3b8qat0vr0mb8c6u39pbuio’
问一下,我们爆破出来的。
这里我们可以看到roundcube的版本是1.2.2
40892分析
searchsploit roundcube 1.2.2搜索一下这个版本有什么漏洞
searchsploit roundcube -m 40892并下载下来
邮件信息解读
之后用我们之前爆破出来的用户和密码,
用户名:p48
密码:electrico,
去进行登录
登录进去发现一个邮件,发现这是一个ssh登录密钥(GPG加密的密文),要利用这个密钥,前提条件是获得系统的shell
利用与绕过
40892的payload,说我们要在数据包的token中把1改成相关路径
改成像这样的一般路径,只要后端没人乱改路径就是这个路径
因为token是url编码,所以我们也要把payload给url编码
访问上传的payload路径,在此抓包包
在数据包写入反弹shell(也需要url编码),并打开监听
sudo rlwrap -cAr nc -lnvp 443监听443端口
获得了第一个flag,作者还问了我们,你擅长跳板吗?说明要进行横向移动了
PGP解密与Docker立足点
我们登录进p48用户里面发现了他这里面有GPG解密用的私钥(privkey.gpg)
复制邮件里面加密的ssh私钥,放进我们自己创建的.pgp文件
gpg --import privkey.gpg把私钥导入本机GPG密钥管理库
开始解密ssh私钥文件并存于p48.key文件中
弄好明文的ssh私钥,需要给ssh私钥修改文件权限
chmod 600 p48.key
因为我们不知道这份ssh私钥是哪个docker容器的,我们需要对三个docker容器IP地址进行ssh连接
ssh -i P48.key p48@目标IP
连接成功之后拿到第二个flag
进入docker容器后,我们想提权,发现在这个容器里面,p48 用户可以免密码,以 root 身份直接运行 rsync 程序
User p48 may run the following commands on ef117d7a978f: (root) NOPASSWD: /usr/bin/rsync
拿到第三枚flag,继续寻找路径,找到第四枚flag
第四枚flag,叫我们执行他给的命令去阻止相关路径下的恐吓代码
我们先通过 lsattr 查看 /var/www/html/startTime.txt 的扩展属性,发现文件配置了 i 不可变锁,禁止任何人修改文件内容。
使用 chattr -i 命令解除文件锁定,再次执行 lsattr ,可以观察到 i 属性消失,文件解除保护,支持后续修改操作
最后我们把这个恐吓代码删除,收工