Me and My Girlfriend: 1
靶机介绍
靶机:ME AND MY GIRLFRIEND: 1
靶机页面:Me and My Girlfriend: 1 ~ VulnHub
靶机需求:靶机里有2个flag,我们的目标就是找出这2个flag。
主机发现(Nmap)
这里用Nmap来做主机发现,Nmap(Network mapper)是目前最流行的网络扫描工具,号称扫描之王。
找出靶机IP:
nmap -sn 192.168.183.0/24
-sn选项,以ping方式扫描,同时不扫描开放端口。
这里更推荐用:nmap -sn 192.168.183.0/24 -oG -
-oG选项,以一种易于检索的格式记录信息,即每台主机都以单独的行来记录所有信息,但是该选项要求将扫描结果保存成文件,如果不想保存为文件,可以使用“-oG -”的方式。
所以这个靶场的IP地址为192.168.183.135
。(192.168.183.132为kali的IP)
端口扫描(Nmap)
端口对应了服务,扫描端口的目的就是去探测靶机提供了哪些网络服务可供访问。
Web服务的常见敏感端口:
系统服务的常见敏感端口:
对于一些不熟悉的端口,也可以通过/etc/services文件进行查找:
┌──(root㉿kali)-[~]
└─# grep -w 3306 /etc/services
mysql 3306/tcp
找出靶机开放端口:
nmap -sV 192.168.183.135
-sV选项,在探测开放端口的同时,检测该端口对应的服务以及版本信息。
还可以进行全端口扫描:
nmap -sS -p1-65535 192.168.183.135
- nmap默认只对1000个最常使用的端口进行了扫描,如果要扫描靶机开放的所有端口,需要用-p选项指定端口号范围(1~65535)。
- -sS选项,采用TCP SYN扫描,SYN是TCP三次握手过程中在第一次握手所发出的数据,这样只要接收到对方返回的第二次握手的信息,就可以确定端口是开放的。
- -sS选项相比-sV选项不会探测端口对应的服务和版本信息,可加快扫描速度。
伪造客户端
经过端口扫描,扫出来了80和22端口,说明开放了http和ssh服务,先尝试一下http这个服务,在浏览器打开网页。
这里的意思是说,只能从本地访问,本地的话就是用127.0.0.1去访问。
修改HTTP请求头中的IP地址:
- x-forwarded-for
HTTP请求头中的一个字段,用于保存客户端的IP地址。
修改该字段的值,可以伪造客户端的IP地址。
这里先使用burpsuite伪造一下客户端ip
但针对此靶场更推荐用火狐的插件“ X-Forwarded-For Header ”,因为此网站做了一个302跳转,直接用插件更好操作。
伪造客户端后出现了这个页面:
越权访问漏洞
越权访问漏洞
- 由于网站开发人员的疏忽,没有在对信息进行增删改查时候进行用户判断,从而导致某个用户可以对其他用户也进行增删改查等操作。
- 通过越权访问可获取其他用户的信息。
首先注册一个账号,假设叫hacker,密码为123 ,用这个账号去登录,登录进去之后,查看一下用户简介。
发现user_id可以随意更改,改为1就变成了其他的用户,推断出这里存在越权访问漏洞。
登录框的密码看不见,通过“审查元素”可查看或修改前端页面代码。
这里删除了表单中的type属性密码就可以显示出来。
通过越权访问搜集到的用户信息:
eweuhtandingan skuyatuh
aingmaung qwerty!!!
sundatea indONEsia
sedihaingmah cedihhihihi
alice 4lic3
abdikasepak dorrrrr
撞库
撞库漏洞
- 同一个用户在不同的应用中使用了相同的密码
- 使用获取的用户信息登录SSH
用这些用户使用ssh去登录,发现alice用户能登录上去。
ssh命令格式及用法示例:
ssh [用户名@]SSH服务器IP地址 [命令]
# ssh root@192.168.80.10
# ssh -l student 192.168.80.10
# ssh -p 2200 root@192.168.80.10
# ssh root@192.168.80.10 "hostname"
获取第一个flag
这里提示另一个flag在root目录下,如果没提示可以用find命令去找。
find / -name "*flag*"
sudo提权
什么是sudo?
- Linux系统中的一种权限分配机制,可以允许普通用户以root用户的身份去执行某些操作。
- 执行
sudo -l
命令可以查看当前用户是否被分配了sudo权限。
sudo简介:
- 只有被授权的用户才能执行sudo命令,而且使用sudo也只能执行被授权过的命令。
- 要使用sudo命令首先必须要经过管理员的授权设置需要修改配置文件“
/etc/sudoers
”
sudo授权示例:
zhangsan ALL=ALL
#授权zhangsan执行所有操作
zhangsan ALL=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd
(ALL后面要写命令的绝对路径,可以通过which命令来查看)
#授权zhangsan只能执行useradd、userdel、passwd命令
zhangsan ALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd
#授权zhangsan可以免密码执行useradd、userdel、passwd命令
%wheel ALL=(ALL) ALL
#默认设置,授权wheel组成员拥有root权限
php提权
- /usr/bin/php是PHP的程序文件,通过php命令可以直接执行PHP代码。
而此靶机通过sudo -l
命令查看到管理员给予了执行php的授权,就可以利用这个来进行提权。
让alice以sudo的方式执行system()函数,并通过该函数去执行系统中的/bin/bash程序。
这个命令的实质就是以root用户的身份去执行/bin/bash,因而就以root的身份打开了一个Shell,从而实现了提权。
sudo php -r "system('/bin/bash');"
-r 选项就是运行PHP代码而不使用脚本标记<?..?>
可以用pstree
命令查看开了shell
PHP中可以调用系统命令的函数主要包括:exec system popen passthru proc_open shell_exec