File tree Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change 2020 end
2121 end
2222
23+ describe "XSW attack" do
24+ it "should not validate if SAML response is hacked" do
25+ document = saml_response_document ( :certificate => TEST_CERTIFICATE )
26+
27+ modified_document = Nokogiri ::XML ( document )
28+
29+ original_assertion = modified_document . xpath ( "/samlp:Response/saml:Assertion" , Samlr ::NS_MAP ) . first
30+
31+ response_signature = modified_document . xpath ( "/samlp:Response/ds:Signature" , Samlr ::NS_MAP ) . first
32+
33+ extensions = Nokogiri ::XML ::Node . new "Extensions" , modified_document
34+ extensions << original_assertion . to_xml ( :save_with => Nokogiri ::XML ::Node ::SaveOptions ::AS_XML )
35+ response_signature . add_next_sibling ( extensions )
36+ response_signature . remove ( )
37+
38+ modified_document . xpath ( "/samlp:Response/samlp:Extensions/saml:Assertion/ds:Signature" , Samlr ::NS_MAP ) . remove ( )
39+ modified_document . xpath ( "/samlp:Response/saml:Assertion/saml:Subject/saml:NameID" , Samlr ::
NS_MAP ) . first . content = "[email protected] " 40+ modified_document . xpath ( "/samlp:Response/saml:Assertion" , Samlr ::NS_MAP ) . first [ "ID" ] = "evil_id"
41+
42+ response = Samlr ::Response . new ( modified_document . to_xml ( :save_with => Nokogiri ::XML ::Node ::SaveOptions ::AS_XML ) , { :certificate => TEST_CERTIFICATE . x509 } )
43+ assert_equal true , response . verify!
44+ assert_equal "[email protected] " , response . name_id 45+ end
46+ end
47+
2348 describe "::parse" do
2449 before { @document = saml_response_document ( :certificate => TEST_CERTIFICATE ) }
2550
You can’t perform that action at this time.
0 commit comments