目录
写在开头
第一步:主机发现和端口扫描
第二步:Web渗透(修改XFF代理)
第三步:数据库手工枚举
第四步:sudo php提权
总结与思考
写在开头
本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。Me and My Girlfriend这个靶机是近期遇到的最简单的一太靶机,步骤较少,读者可直接盲打试试。涉及到的知识点包括x-forwarded-for主机头转发、 手工爆库、sudo php提权,完整的打靶思路详见:
「红队笔记」靶机精讲:Me and My Girlfriend - 手工爆库、超帅php提权、打一遍这靶机、帅到自己都不知道自己是谁,whoami呼啊咪?_哔哩哔哩_bilibili
本文针对的靶机源于vulnhub,详情见:
Me and My Girlfriend: 1 ~ VulnHub
下载链接见:
https://download.vulnhub.com/meandmygirlfriend/Me-and-My-Girlfriend-1.ova
本靶机的目标是拿到两个flag即可,即flag1.txt和flag2.txt,这个靶机还涉及了一点剧情,靶机描述如下:
Description
Description: This VM tells us that there are a couple of lovers namely Alice and Bob, where the couple was originally very romantic, but since Alice worked at a private company, "Ceban Corp", something has changed from Alice's attitude towards Bob like something is "hidden", And Bob asks for your help to get what Alice is hiding and get full access to the company!
Difficulty Level: Beginner
Notes: there are 2 flag files
大意:有一对cp,Alice和Bob,原本很浪漫相爱,但自从Alice在一家私企"Ceban Corp"工作之后,Alice对Bob的态度就变了。Bob请求你黑了这个公司的服务器,解开Alice的心结。
靶机下载成功后用vmware打开,将网络链接设置为NAT模式。靶机启动之后如下:
第一步:主机发现和端口扫描
常规思路,这个靶机比较简单,就不细讲了:
nmap -sn /10.10.10.0/24 //主机发现
nmap -sT --min-rate 10000 10.10.10.152 //TCP全端口扫描
nmap -sT -sV -O -sC -p22,80 10.10.10.152 //用默认脚本进行服务版本、操作系统探测
nmap -sU --top-ports 20 10.10.10.152 //UDP常用端口探测
nmap --script=vuln -p22,80 10.10.10.152 //默认漏洞脚本扫描
我的kali机器所在网段是10.10.10.0,主机发现靶机是10.10.10.152,开放端口是22和80,信息如下:
第二步:Web渗透(修改XFF代理)
看来是只能从80端口Web入手,浏览器访问靶机ip,显示如下:
这页面提示我们,站点只能本地local访问,查看网页源代码如下:
提示我们应该研究以下如何使用x-forwarded-for, X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段,换句话就是无论你用了多少层代理,XFF头都能给你显示出每层代理和原始ip,如果没有XFF或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的IP地址,而非连接发起的原始IP地址,这样的代理服务器实际上充当了匿名服务提供者的角色,如果连接的原始IP地址不可得,恶意访问的检测与预防的难度将大大增加。
那么我们就添加一个XFF头部,内容写localhost表示本地,也就是在每个请求中添加如下一行:
x-forwarded-for:localhost
用burpsuit拦截请求,然后改包添加x-forwarded-for:localhost即可访问:
如下图,添加XFF头部为本地后,可以访问站点10.10.10.152了:
但如果每次请求页面都要手动添加x-forwarded-for:localhost还是挺麻烦的一件事。因此可以在BurpSuite代理proxy模块中的Options选项的Match and Replace添加一条规则:
点击Add,将请求头中增加x-forwarded-for:localhost即可,这样每次请求时都会添加这一行,就无需每次请求都手动添加了。
点击OK,保证在Enabled列是勾选状态。
第三步:数据库手工枚举
现在观察web页面,Ceban Corp正是靶机描述中Alice的公司名称。这个界面其实没太多信息,Login是登录界面,需要有账号和密码。
Register是注册界面,如下,干脆就随便注册一个账号试试:
我这里注册的账号和密码都是aaa,注册完成之后Login,登录成功:
点击Profile,可以看到当前账号的信息。
注意url中有一个user_id=12,这估计是一个查询,我们尝试能不能直接修改这个user_id,实现对其他用户账号密码的查看:
将 user_id改为1后,成功看到了其他账号,那我们手工更换user_id为1到11,看看有哪些凭据,重点看有没有账号为alice(靶机描述的提示),果然找到了,当user_id=5时,是Alice的凭据:
这密码都是前端明文显示的,alice账号的密码是4lic3 ,我们尝试用ssh登录,如果数据库密码和ssh密码一致的话,我们就能够成功ssh,如下图,撞库成功了!
第四步:sudo php提权
先找找有没有用户flag:
在.my_secret目录下看到了flag1.txt,这个目录下还有一个my_secret.txt,看看是啥:
看来Alice准备在公司找对象搞外遇了,Bob真惨。不过这和我们打靶没啥关系,我们要想办法提权,首先先sudo -l查看当前alice用户有哪些sudo权限:
好家伙,有php的sudo权限,凡是sudo权限有语言的,都可以用这个语言构造反弹shell或启动shell的操作,这里咱也不用反弹shell,直接用php执行系统命令启动shell好了,命令如下:
sudo /usr/bin/php -r "system('/bin/bash');"
提权成功:
flag2.txt在root目录下:
至此打靶完成,感觉还挺容易的。
总结与思考
这个靶机相对于前几个靶机算是很简单的,涉及的知识点就是XFF头转发的原理与使用、手工爆库、sudo php提权。不过这个靶机体现了渗透中很明确的攻击链,也助于初学者了解常规渗透思路。还是总结一下打靶过程:
第一步:主机发现和端口扫描,确定入手点基本上是80。
第二步:Web渗透,直接浏览器访问靶机无法显示内容,提示我们修改XFF头部本地访问,于是用BurpSuite改包在请求头添加x-forwarded-for:localhost即可访问。
第三步:数据库手工枚举,注册账号登录后,发现url中存在user_id,怀疑这里是否是数据库直接查询的传参,直接秀嘎user_id发现可以找到alice的账号和密码,尝试撞库登录ssh,成功。
第四步:sudo -l枚举sudo权限的二进制可执行文件,发现有php,直接用php执行系统命令启动shell即可提权。
到此这个靶机就讲解完毕了 ,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!