SecurityFTW / cs-suite

Cloud Security Suite - One stop tool for auditing the security posture of AWS/GCP/Azure infrastructure.
GNU General Public License v3.0
1.13k stars 217 forks source link

modules not outputting to json #50

Open coltleese17 opened 4 years ago

coltleese17 commented 4 years ago

Hi there, I just tried to run this tool today with -env aws.

I kept getting this exception in a few different spots:

File "cs.py", line 89, in <module>
    main()
  File "cs.py", line 53, in main
    from modules import awsaudit
  File "/Users/coltonleese/cs-suite/modules/awsaudit.py", line 30, in <module>
    account_name = get_account_alias() or get_account_id()
  File "/Users/coltonleese/cs-suite/modules/awsaudit.py", line 15, in get_account_alias
    account_details = json.loads(str(account_details))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

I fixed it by changing the command

subprocess.check_output(['aws sts get-caller-identity')], shell=True

to

 subprocess.check_output(['aws sts get-caller-identity --output json')], shell=True

I can submit a PR if you want but don't know if this is widely applicable.

thanks.

HD421 commented 4 years ago

Hi @coltleese17, thanks for info. I used your solution to solve same problem, but fall into this error next step:

> Traceback (most recent call last):
>   File "cs.py", line 89, in <module>
>     main()
>   File "cs.py", line 53, in main
>     from modules import awsaudit
>   File "/Users/aaa/AWS/cs-suite/modules/awsaudit.py", line 38, in <module>
>     identity = json.loads(str(identity))
>   File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads
>     return _default_decoder.decode(s)
>   File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 367, in decode
>     raise ValueError(errmsg("Extra data", s, end, len(s)))
> ValueError: Extra data: line 1 column 2 - line 2 column 1 (char 1 - 73)

So I think it's more than single PR to fix this framework.

robin-w-ford commented 2 years ago

This is an issue but the simple way to fix this i found was to update aws configuration to be json output but this should be in code as for ease of reading my normal CLI output is text