Skip to content

Commit 7a0d452

Browse files
author
Cotonne
committed
Add more parameter for the web app scan
1 parent 0628784 commit 7a0d452

File tree

2 files changed

+44
-50
lines changed

2 files changed

+44
-50
lines changed

nosqlmap.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,9 +516,10 @@ def build_parser():
516516
parser.add_argument("--requestHeaders", help="Request headers in a comma separated list (i.e. param name 1,value1,param name 2,value2)", default="")
517517

518518
modules = [nsmcouch, nsmmongo, nsmscan, nsmweb]
519-
for module in modules:
519+
for module in modules:
520+
group = parser.add_argument_group(module.__name__)
520521
for arg in module.args():
521-
parser.add_argument(arg[0], help=arg[1])
522+
group.add_argument(arg[0], help=arg[1])
522523

523524
return parser
524525

nsmweb.py

Lines changed: 41 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,37 @@
1919
ssl._create_default_https_context = ssl._create_unverified_context
2020

2121

22+
def save_to(savePath, vulnAddrs, possAddrs, strTbAttack,intTbAttack):
23+
fo = open(savePath, "wb")
24+
fo.write ("Vulnerable URLs:\n")
25+
fo.write("\n".join(vulnAddrs))
26+
fo.write("\n\n")
27+
fo.write("Possibly Vulnerable URLs:\n")
28+
fo.write("\n".join(possAddrs))
29+
fo.write("\n")
30+
fo.write("Timing based attacks:\n")
31+
32+
if strTbAttack == True:
33+
fo.write("String Attack-Successful\n")
34+
else:
35+
fo.write("String Attack-Unsuccessful\n")
36+
fo.write("\n")
37+
38+
if intTbAttack == True:
39+
fo.write("Integer attack-Successful\n")
40+
else:
41+
fo.write("Integer attack-Unsuccessful\n")
42+
fo.write("\n")
43+
fo.close()
44+
2245
def args():
2346
return [
47+
["--injectedParameter", "Parameter to be injected"],
2448
["--injectSize", "Size of payload"],
2549
["--injectFormat", "1-Alphanumeric, 2-Letters only, 3-Numbers only, 4-Email address"],
2650
["--params", "Enter parameters to inject in a comma separated list"],
27-
["--doTimeAttack", "Start timing based tests (y/n)"]]
51+
["--doTimeAttack", "Start timing based tests (y/n)"],
52+
["--savePath", "output file name"]]
2853

2954
def getApps(webPort,victim,uri,https,verb,requestHeaders, args = None):
3055
print "Web App Attacks (GET)"
@@ -75,7 +100,6 @@ def getApps(webPort,victim,uri,https,verb,requestHeaders, args = None):
75100

76101
if verb == "ON":
77102
print "App is up! Got response length of " + str(normLength) + " and response time of " + str(timeBase) + " seconds. Starting injection test.\n"
78-
79103
else:
80104
print "App is up!"
81105
appUp = True
@@ -342,31 +366,14 @@ def getApps(webPort,victim,uri,https,verb,requestHeaders, args = None):
342366
if args == None:
343367
fileOut = raw_input("Save results to file (y/n)? ")
344368
else:
345-
fileOut = "n"
369+
fileOut = "y" if args.savePath else "n"
346370

347371
if fileOut.lower() == "y":
348-
savePath = raw_input("Enter output file name: ")
349-
fo = open(savePath, "wb")
350-
fo.write ("Vulnerable URLs:\n")
351-
fo.write("\n".join(vulnAddrs))
352-
fo.write("\n\n")
353-
fo.write("Possibly Vulnerable URLs:\n")
354-
fo.write("\n".join(possAddrs))
355-
fo.write("\n")
356-
fo.write("Timing based attacks:\n")
357-
358-
if strTbAttack == True:
359-
fo.write("String Attack-Successful\n")
360-
else:
361-
fo.write("String Attack-Unsuccessful\n")
362-
fo.write("\n")
363-
364-
if intTbAttack == True:
365-
fo.write("Integer attack-Successful\n")
372+
if args == None:
373+
savePath = raw_input("Enter output file name: ")
366374
else:
367-
fo.write("Integer attack-Unsuccessful\n")
368-
fo.write("\n")
369-
fo.close()
375+
savePath = args.savePath
376+
save_to(savePath, vulnAddrs, possAddrs, strTbAttack,intTbAttack)
370377

371378
if args == None:
372379
raw_input("Press enter to continue...")
@@ -450,10 +457,10 @@ def postApps(victim,webPort,uri,https,verb,postData,requestHeaders):
450457
menuItem += 1
451458

452459
try:
453-
injIndex = 1
454460
if args == None:
455461
injIndex = raw_input("Which parameter should we inject? ")
456-
462+
else:
463+
injIndex = int(args.injectedParameter)
457464
injOpt = str(postData.keys()[int(injIndex)-1])
458465
print "Injecting the " + injOpt + " parameter..."
459466
except:
@@ -729,31 +736,17 @@ def postApps(victim,webPort,uri,https,verb,postData,requestHeaders):
729736
else:
730737
print "Integer attack-Unsuccessful"
731738

732-
fileOut = raw_input("Save results to file (y/n)? ")
739+
if args == None:
740+
fileOut = raw_input("Save results to file (y/n)? ")
741+
else:
742+
fileOut = "y" if args.savePath else "n"
733743

734744
if fileOut.lower() == "y":
735-
savePath = raw_input("Enter output file name: ")
736-
fo = open(savePath, "wb")
737-
fo.write ("Vulnerable Requests:\n")
738-
fo.write("\n".join(vulnAddrs))
739-
fo.write("\n\n")
740-
fo.write("Possibly Vulnerable Requests:\n")
741-
fo.write("\n".join(possAddrs))
742-
fo.write("\n")
743-
fo.write("Timing based attacks:\n")
744-
745-
if strTbAttack == True:
746-
fo.write("String Attack-Successful\n")
747-
else:
748-
fo.write("String Attack-Unsuccessful\n")
749-
fo.write("\n")
750-
751-
if intTbAttack == True:
752-
fo.write("Integer attack-Successful\n")
745+
if args == None:
746+
savePath = raw_input("Enter output file name: ")
753747
else:
754-
fo.write("Integer attack-Unsuccessful\n")
755-
fo.write("\n")
756-
fo.close()
748+
savePath = args.savePath
749+
save_to(savePath, vulnAddrs, possAddrs, strTbAttack,intTbAttack)
757750

758751
raw_input("Press enter to continue...")
759752
return()

0 commit comments

Comments
 (0)