mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
be285cde3f
(http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash function in addition to the LM one and making some other adjustments in the order the different parts of the data block are sent in the Type-2 reply. Inspiration for this work was taken from the Firefox NTLM implementation. I edited the existing 21(!) NTLM test cases to run fine with these news. Due to the fact that we now properly include the host name in the Type-2 message the test cases now only compare parts of that chunk.
125 lines
3.7 KiB
Plaintext
125 lines
3.7 KiB
Plaintext
<info>
|
|
<keywords>
|
|
HTTP
|
|
HTTP GET
|
|
--proxy-anyauth
|
|
HTTP proxy NTLM
|
|
</keywords>
|
|
</info>
|
|
# Server-side
|
|
<reply>
|
|
|
|
<data>
|
|
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
|
|
</data>
|
|
|
|
# this is returned first since we get no proxy-auth
|
|
<data1001>
|
|
HTTP/1.1 407 Authorization Required to proxy me my dear
|
|
Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
|
|
Content-Length: 33
|
|
|
|
Hey you, authenticate or go away!
|
|
</data1001>
|
|
|
|
# This is supposed to be returned when the server gets the second
|
|
# Authorization: NTLM line passed-in from the client
|
|
<data1002>
|
|
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.
|
|
</data1002>
|
|
|
|
<datacheck>
|
|
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: 33
|
|
|
|
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.
|
|
</datacheck>
|
|
</reply>
|
|
|
|
# Client-side
|
|
<client>
|
|
<server>
|
|
http
|
|
</server>
|
|
<features>
|
|
NTLM
|
|
</features>
|
|
<name>
|
|
HTTP POST with --proxy-anyauth, picking NTLM
|
|
</name>
|
|
<command>
|
|
http://%HOSTIP:%HTTPPORT/243 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-anyauth -d "postit"
|
|
</command>
|
|
</client>
|
|
|
|
# Verify data after the test has been "shot"
|
|
<verify>
|
|
<strip>
|
|
^User-Agent: curl/.*
|
|
</strip>
|
|
# 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!
|
|
<strippart>
|
|
s/^(Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAABQAFAHAAAAA).*/$1/
|
|
</strippart)
|
|
<protocol nonewline=yes>
|
|
POST http://127.0.0.1:8990/243 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: 127.0.0.1:8990
|
|
Pragma: no-cache
|
|
Accept: */*
|
|
Proxy-Connection: Keep-Alive
|
|
Content-Length: 6
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
postitPOST http://%HOSTIP:%HTTPPORT/243 HTTP/1.1
|
|
Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIAAAAAAAAAAAAAAAAAAAAAAAA=
|
|
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: %HOSTIP:%HTTPPORT
|
|
Pragma: no-cache
|
|
Accept: */*
|
|
Proxy-Connection: Keep-Alive
|
|
Content-Length: 0
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
POST http://127.0.0.1:8990/243 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: 127.0.0.1:8990
|
|
Pragma: no-cache
|
|
Accept: */*
|
|
Proxy-Connection: Keep-Alive
|
|
Content-Length: 6
|
|
Content-Type: application/x-www-form-urlencoded
|
|
|
|
postit
|
|
</protocol>
|
|
</verify>
|