Cogger

uag_rm_log4j_jndilookup.sh

Dec 22nd, 2021 (edited)
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.97 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Log contents to file by prefixing timestamp. Maximum file size is 50MB
  4. function log_to_console() {
  5.     echo "$(date +'%Y-%m-%d %T')" "$HOSTNAME" "$@"
  6. }
  7.  
  8. log_to_console "Running script to remove JndiLookup.class from jars in Unified Access Gateway"
  9.  
  10. log_to_console "UAG Version: " $(tail -1 /opt/vmware/gateway/logs/version.info 2>/dev/null)
  11.  
  12. mkdir /tmp/test
  13. mkdir /tmp/bkp
  14.  
  15. log_to_console "Unpacking archive and removing JndiLookup.class"
  16. cp /opt/vmware/gateway/lib/ab-frontend-0.2.jar /tmp/bkp
  17.  
  18. unzip -q -o /opt/vmware/gateway/lib/ab-frontend-0.2.jar -d /tmp/test
  19.  
  20. unzip -q -o /tmp/test/hc.war -d /tmp/test/hc
  21.  
  22. zip -dq /tmp/test/hc/WEB-INF/lib/log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  23.  
  24. rm /tmp/test/hc.war
  25. cd /tmp/test/hc
  26.  
  27. zip -r -q ../hc.war .
  28.  
  29. cd ..
  30. rm -rf hc
  31.  
  32. log_to_console "Repackaging archive"
  33.  
  34. zip -r -q ab-frontend-0.2.jar .
  35.  
  36. chown gateway:users ab-frontend-0.2.jar
  37. mv ab-frontend-0.2.jar /opt/vmware/gateway/lib
  38.  
  39. log_to_console "Replaced updated ab-frontend-0.2.jar, now looking for jndi in other places"
  40.  
  41. find / -type f \( -name "*.jar" -o -name *.war \) -exec sh -c "zipinfo -1 {} 2>/dev/null | grep 'JndiLookup.class' && echo {}" \; | grep .jar | while read -r line ; do
  42.     jar_path=$line
  43.     log_to_console "Updating $jar_path"
  44.     zip -dq $jar_path org/apache/logging/log4j/core/lookup/JndiLookup.class
  45.     chown gateway:users $jar_path
  46. done
  47.  
  48.  
  49. log_to_console "Restarting authbroker"
  50. supervisorctl restart authbroker
  51.  
  52. log_to_console "Cleaning up."
  53. cd /tmp
  54. rm -rf /tmp/test
  55.  
  56. log_to_console "Verification: We are good if no jars are listed below"
  57. find / -type f \( -name "*.jar" -o -name *.war \) -exec sh -c "zipinfo -1 {} 2>/dev/null | grep 'JndiLookup.class' && echo {}" \;
  58.  
  59. log_to_console "Verification: Grep authbroker-std-out.log for log4j errors, we are good if no exception is displayed below"
  60. cat /opt/vmware/gateway/logs/authbroker-std-out.log | grep log4j
  61.  
  62. log_to_console "Done!"
  63.  
  64.  
Add Comment
Please, Sign In to add comment