Last active
February 23, 2018 00:25
-
-
Save richardsonlima/14f13000f6103fb47102133252440cd6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/env python | |
############################################################################################################### | |
## [Title]: pcilinuxhecker.py | |
## [Author]: Richardson Lima (hash1d) -- @zenedge | |
# Usage: ssh user@ip python -u - < ./cron-checker.py | |
# conditional import for older versions of python not compatible with subprocess | |
try: | |
import subprocess as sub | |
compatmode = 0 # newer version of python, no need for compatibility mode | |
except ImportError: | |
import os # older version of python, need to use os instead | |
compatmode = 1 | |
# title / formatting | |
bigline = "=================================================================================================" | |
smlline = "-------------------------------------------------------------------------------------------------" | |
print bigline | |
print "ZEN CRON CHECKER" | |
print bigline | |
# loop through dictionary, execute the commands, store the results, return updated dict | |
def execCmd(cmdDict): | |
for item in cmdDict: | |
cmd = cmdDict[item]["cmd"] | |
if compatmode == 0: # newer version of python, use preferred subprocess | |
out, error = sub.Popen([cmd], stdout=sub.PIPE, stderr=sub.PIPE, shell=True).communicate() | |
results = out.split('\n') | |
else: # older version of python, use os.popen | |
echo_stdout = os.popen(cmd, 'r') | |
results = echo_stdout.read().split('\n') | |
cmdDict[item]["results"]=results | |
return cmdDict | |
# print results for each previously executed command, no return value | |
def printResults(cmdDict): | |
for item in cmdDict: | |
msg = cmdDict[item]["msg"] | |
results = cmdDict[item]["results"] | |
print "[+] " + msg | |
for result in results: | |
if result.strip() != "": | |
print " " + result.strip() | |
return | |
def writeResults(msg, results): | |
f = open("privcheckout.txt", "a"); | |
f.write("[+] " + str(len(results)-1) + " " + msg) | |
for result in results: | |
if result.strip() != "": | |
f.write(" " + result.strip()) | |
f.close() | |
return | |
# Basic system info | |
print "[*] GETTING BASIC SYSTEM INFO...\n" | |
results=[] | |
sysInfo = {"OS":{"cmd":"cat /etc/issue","msg":"Operating System","results":results}, | |
"KERNEL":{"cmd":"cat /proc/version","msg":"Kernel","results":results}, | |
"HOSTNAME":{"cmd":"hostname", "msg":"Hostname", "results":results} | |
} | |
sysInfo = execCmd(sysInfo) | |
printResults(sysInfo) | |
# Scheduled Cron Jobs | |
cronInfo = {"CRON":{"cmd":"ls -la /etc/cron* 2>/dev/null", "msg":"Scheduled cron jobs", "results":results}, | |
"CRONW": {"cmd":"ls -aRl /etc/cron* 2>/dev/null | awk '$1 ~ /w.$/' 2>/dev/null", "msg":"Writable cron dirs", "results":results} | |
} | |
cronInfo = execCmd(cronInfo) | |
printResults(cronInfo) | |
print "Finished" | |
print bigline |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment