please robot overlords, plus verbiage change
This commit is contained in:
@@ -26,7 +26,7 @@ def verifying_fixed?
|
|||||||
|
|
||||||
**NOTE: The RSpec pending feature is used to toggle the outcome of these specs
|
**NOTE: The RSpec pending feature is used to toggle the outcome of these specs
|
||||||
between Training mode and RailsGoat Maintainer mode. When the vulnerabilities
|
between Training mode and RailsGoat Maintainer mode. When the vulnerabilities
|
||||||
are removed, the specs will not "pass," but rather go into a "pending" state.
|
are removed, the specs will pass instead. Try to get a fully passing suite.
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
|
|
||||||
NOTICE
|
NOTICE
|
||||||
|
|||||||
@@ -13,28 +13,28 @@ feature "broken_auth" do
|
|||||||
scenario "one\nTutorial: https://github.com/OWASP/railsgoat/wiki/A2-Credential-Enumeration" do
|
scenario "one\nTutorial: https://github.com/OWASP/railsgoat/wiki/A2-Credential-Enumeration" do
|
||||||
wrong_email = normal_user.email + "not"
|
wrong_email = normal_user.email + "not"
|
||||||
|
|
||||||
visit '/'
|
visit "/"
|
||||||
within('.signup') do
|
within(".signup") do
|
||||||
fill_in 'email', with: wrong_email
|
fill_in "email", with: wrong_email
|
||||||
fill_in 'password', with: normal_user.clear_password
|
fill_in "password", with: normal_user.clear_password
|
||||||
end
|
end
|
||||||
within(".actions") do
|
within(".actions") do
|
||||||
click_on "Login"
|
click_on "Login"
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(find('div#flash_notice').text).not_to include(wrong_email)
|
expect(find("div#flash_notice").text).not_to include(wrong_email)
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario "two\nTutorial: https://github.com/OWASP/railsgoat/wiki/A2-Credential-Enumeration" do
|
scenario "two\nTutorial: https://github.com/OWASP/railsgoat/wiki/A2-Credential-Enumeration" do
|
||||||
visit '/'
|
visit "/"
|
||||||
within('.signup') do
|
within(".signup") do
|
||||||
fill_in 'email', with: normal_user.email
|
fill_in "email", with: normal_user.email
|
||||||
fill_in 'password', with: normal_user.clear_password + 'not'
|
fill_in "password", with: normal_user.clear_password + "not"
|
||||||
end
|
end
|
||||||
within(".actions") do
|
within(".actions") do
|
||||||
click_on "Login"
|
click_on "Login"
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(find('div#flash_notice').text).not_to include('Incorrect Password!')
|
expect(find("div#flash_notice").text).not_to include("Incorrect Password!")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ feature "command injection" do
|
|||||||
File.open(hackety_file, "w") { |f| f.print "mwahaha" }
|
File.open(hackety_file, "w") { |f| f.print "mwahaha" }
|
||||||
within(".new_benefits") do
|
within(".new_benefits") do
|
||||||
attach_file "benefits_upload", hackety_file
|
attach_file "benefits_upload", hackety_file
|
||||||
find(:xpath, "//input[@id='benefits_backup']", visible: false).set 'true'
|
find(:xpath, "//input[@id='benefits_backup']", visible: false).set "true"
|
||||||
end
|
end
|
||||||
click_on "Start Upload"
|
click_on "Start Upload"
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(File.exists?(legit_file)).to be_truthy
|
expect(File.exist?(legit_file)).to be_truthy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,15 +10,15 @@ feature "insecure direct object reference" do
|
|||||||
pending unless verifying_fixed?
|
pending unless verifying_fixed?
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'attack one' do
|
scenario "attack one" do
|
||||||
login(normal_user)
|
login(normal_user)
|
||||||
|
|
||||||
visit "/users/#{normal_user.user_id}/benefit_forms"
|
visit "/users/#{normal_user.user_id}/benefit_forms"
|
||||||
download_url = first('.widget-body a')[:href]
|
download_url = first(".widget-body a")[:href]
|
||||||
visit download_url.sub(/name=(.*?)&/, 'name=config/database.yml&')
|
visit download_url.sub(/name=(.*?)&/, "name=config/database.yml&")
|
||||||
|
|
||||||
expect(page.status_code).not_to eq(200)
|
expect(page.status_code).not_to eq(200)
|
||||||
expect(page.response_headers['Content-Disposition']).not_to include('database.yml')
|
expect(page.response_headers["Content-Disposition"]).not_to include("database.yml")
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario "attack two\nTutorial: https://github.com/OWASP/railsgoat/wiki/A4-Insecure-Direct-Object-Reference" do
|
scenario "attack two\nTutorial: https://github.com/OWASP/railsgoat/wiki/A4-Insecure-Direct-Object-Reference" do
|
||||||
@@ -26,7 +26,7 @@ feature "insecure direct object reference" do
|
|||||||
|
|
||||||
visit "/users/#{another_user.user_id}/work_info"
|
visit "/users/#{another_user.user_id}/work_info"
|
||||||
|
|
||||||
expect(first('td').text).not_to include(another_user.name)
|
expect(first("td").text).not_to include(another_user.name)
|
||||||
expect(first('td').text).to include(normal_user.name)
|
expect(first("td").text).to include(normal_user.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user