looks like it's getting hn-hugged to death.
Brute.Fail: Watch brute force attacks fail in real time
41–50 of 268 posts
Re: Brute.Fail: Watch brute force attacks fail in real time
#42Earlier quoted context omitted.
it bugs me that they're not trying the passwords in lexigraphical order :-D also, who has sshd without `PermitRootPassword=no`? they need to broaden their horizons and try `admin`, `ec2-user`, and `ubuntu` /s
Even if you disallow root login with a password, the user can still try to log in, and the attempt still gets logged If you're asking why it would ever be worth it, there's always valuable stuff online with incompetent configuration. I don't know if shodan is still up, but I remember going on there in high school and getting access to random webcams (sometimes in peoples' homes)
Re: Brute.Fail: Watch brute force attacks fail in real time
#43Earlier quoted context omitted.
It is escaped server side. Anything long enough to be a useful payload is trimmed.
How short we talking? Since there's multiple opportunities to inject code, it's possible to split out the payload across multiple fields: https://www.highseverity.com/2011/06/xss-in-confined-spaces.... Ten characters per block is enough for: /* */eval(/* */'....'+/* */'....'+/* */'....'+/* ... */)/* */ Best to escape everything at render time.
Re: Brute.Fail: Watch brute force attacks fail in real time
#44Re: Brute.Fail: Watch brute force attacks fail in real time
#45Re: Brute.Fail: Watch brute force attacks fail in real time
#46For this reason I've put `endlessh` on port 22 and moved actual ssh elsewhere... Also started using Crowdsec recently, but not sure about if it's worth it... fail2ban out of the box works fine for SSH, but for dovecot and postfix it's somehow broken, and the configuration scripts are just too obtuse.
Nice idea. From the docs: Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. Since the tarpit is in the banner before any cryptographic exchange occurs, this program doesn't…
Re: Brute.Fail: Watch brute force attacks fail in real time
#47I kinda want to know the server's address so I can send a "hello_hn" message in the passwords there.
I tried the IP resolved by the domain "brute.fail" but it doesn't accept SSH connections :)
Re: Brute.Fail: Watch brute force attacks fail in real time
#48Re: Brute.Fail: Watch brute force attacks fail in real time
#49I kinda want to know the server's address so I can send a "hello_hn" message in the passwords there.
Re: Brute.Fail: Watch brute force attacks fail in real time
#50Once there are more than thirty rows, you fade rows in like this:
row.style.opacity = 0;
let intervalId = setInterval(function() {
opacity = Number(window.getComputedStyle(row).getPropertyValue("opacity"));
if (opacity
This would be better done with a CSS animation or transition—it takes less code, and is smoother.My suggestion: use animation. Replace the JavaScript with this:
row.classList.add("fade-in");
And add this CSS: .fade-in {
animation: 1s fade-in;
}
@keyframes fade-in {
from { opacity: 0; }
}
This does behave a little differently, as if the window isn’t visible, it’ll (roughly) wait until you focus the window before playing the animation. Frankly this is even mildly more desirable.The alternative: use transitions, which are a tad more involved because you have to trigger the value change one frame later, so that it recognises that something has changed and interpolates to it, rather than it just being the initial value and applied instantly. This JS would do:
row.style.transition = "1s opacity";
row.style.opacity = 0;
requestAnimationFrame(() => {
row.style.opacity = 1;
});
Or you could express it with more CSS, like with this CSS + JS: tr {
transition: 1s opacity;
}
.invisible {
opacity: 0;
}
row.classList.add("invisible");
requestAnimationFrame(() => {
row.classList.remove("invisible");
});
—⁂—You might also like `vertical-align: middle` on your spin.svg.
—⁂—
On the flag icons, here’s a cool alternative technique: https://en.wikipedia.org/wiki/Regional_indicator_symbol. Lets you avoid needing even images. Unfortunately, I think Windows still doesn’t ship flags, so you’ll get the two-letter country code there. You can get around this by packaging a web font. It’d be nice if someone would neatly package a flags-only font so others can easily use it. Here’s what I did a few months back for https://ganintegrity.com/country-profiles/, resulting in a single 77KB font file:
/**
Copyright 2020 Twitter, Inc and other contributors
Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/
Twemoji Mozilla packaging via https://github.com/mozilla/twemoji-colr, subset to only include country flags.
*/
@font-face {
font-family: flag;
/* (Generated with `pyftsubset /opt/firefox-nightly/fonts/TwemojiMozilla.ttf --unicodes="U+1F1E6-1F1FF" --output-file=static/TwemojiMozillaFlags.woff2 --flavor=woff2`.) */
src: url(/static/TwemojiMozillaFlags.woff2) format("woff2");
}
/* Why do we do this? Because at the time of writing Windows doesn’t do flags, so ‹guzzled by HN› will look like “ᴀᴜ” rather than an Australian flag. (macOS and major browsers on Linux do.) */
.flag {
font-family: flag;
}