-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added Module for Linksys E1500/2500. #5
Conversation
Good job, it looks nice. We need some changes to make it even better:
and then we could change this:
to:
This way, user is able to set his own username/password but by default it is admin/admin.
can be changed to:
Would you mind making changes? We can also merge this pull request and make necessary changes and then you would test if it works properly on your device :) |
I’ll try to make these changes myself. Thanks for the tips!
|
I added the authentication piece, the simple change of "if self.check():" broke everything, and I wasn't sure why, so I left that in for now. |
Your "execute" method is always returning empty string. I think it should be "return r.text" ? |
I shouldn't have put "return r.text" there in the first place, it actually just dumps out the HTML of the page, which is undesirable. This command injection is blind, so I wasn't quite sure what to return. |
Oh I see, we are working on implementing mechanism responsible for retrieving response from blind command injection but your implementation is good. Could you tell me how the check method works? Does it respond with marker value 9fdbd928b52c1ef61615a6fd2e8b49af from echo command injection? |
Well, the truth is that the check is somewhat superficial. The only thing it proves is that you sent a properly formatted request, but it doesn't prove that the command injection worked. If you think of a clever way to do this, I'll try to implement it. |
The actual string shows up in the response, but the HTML only contains the query you sent, not any output from it. |
I think for now, as long as we don't have dedicated mechanism for blind command injection, it is hard to do it properly. I think you could try to use timing with sleep command. Try to inject sleep command, if it works check method could work as follow:
If time difference between responses is significant, something like 5+ seconds then we can assume that the device is vulnerable. |
Hello, I tried that but it doesn't work the way we want it to. The shell it creates may be sleeping but the web server responds right back. What I think might be a good option for the "universal" blind detection technique: Not all of these devices will have netcat, but most I've seen will have wget/curl. |
Ok thanks for info. I think current implementation for this vulnerability is good enough and provides pretty high degree of certainty that the device is vulnerable - request command shown on apply.cgi response. I think we will improve that in the future with reverse shell techniques. Let me know if you are ok with that and I will be happy to merge this pull request :) |
Yeah I think it will do for now, the check at least will likely confirm you have the right kind of router targeted. Sounds good! |
Great work @n00py |
Added a new module. This has been tested successfully on my personal E2500.