HTTP HTTP POST HTTP proxy HTTP proxy NTLM auth # Server-side HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close This is not the real page # this is returned first since we get no proxy-auth HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 Hey you, authenticate or go away! # This is supposed to be returned when the server gets the second # Authorization: NTLM line passed-in from the client HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. HTTP/1.1 407 Authorization Required swsclose Server: Apache/1.3.27 (Darwin) PHP/4.1.2 Proxy-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" Proxy-Authenticate: Basic realm="gimme all yer s3cr3ts" Proxy-Authenticate: NTLM Content-Type: text/html; charset=iso-8859-1 Connection: close HTTP/1.1 407 Authorization Required to proxy me my dear Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== Content-Length: 34 HTTP/1.1 200 Things are fine in proxy land swsclose Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 42 Contents of that page you requested, sir. # Client-side http # tool to use lib548 NTLM HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS http://test.remote.server.com/path/548 http://%HOSTIP:%HTTPPORT s1lly:pers0n # Verify data after the test has been "shot" ^User-Agent: curl/.* # We strip off a large chunk of the type-2 NTLM message since it depends on # the local host name and thus differs on different machines! s/^(Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA).*/$1/ POST http://test.remote.server.com/path/548 HTTP/1.1 User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13 Host: test.remote.server.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload POST http://test.remote.server.com/path/548 HTTP/1.1 Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13 Host: test.remote.server.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 0 Content-Type: application/x-www-form-urlencoded POST http://test.remote.server.com/path/548 HTTP/1.1 Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA User-Agent: curl/7.13.2-CVS (i686-pc-linux-gnu) libcurl/7.13.2-CVS OpenSSL/0.9.7e zlib/1.2.2 libidn/0.5.13 Host: test.remote.server.com Accept: */* Proxy-Connection: Keep-Alive Content-Length: 36 Content-Type: application/x-www-form-urlencoded this is the blurb we want to upload