CSRFTester 未生成 html 文件
CSRFTester not generating html file
我目前正处于第一个带薪实习期,我的任务之一是检查我们的部分 Web 应用程序是否存在 CSRF 漏洞。
我使用过 OWASP 和许多其他安全站点推荐的 CSRFTester。
我已经能够使用脚本为我们的一个 Web 应用程序捕获数据和 "Generate HTML" 文件。
但是,当对我们拥有的其他 Web 应用程序执行相同的测试时(已实施防伪令牌),CSRFTester 不会生成 html 文件。
控制台输出是我在下面发布的内容。
我的问题是我无法生成 html 是因为防伪令牌在工作吗?还是因为我遗漏了什么?
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:
1
at org.owasp.csrftester.report.ReportAdapter.getParametersAsHtmlInput(Re
portAdapter.java:74)
at org.owasp.csrftester.report.ReportAdapter.getParametersAsHtmlInput(Re
portAdapter.java:41)
at org.owasp.csrftester.report.FormsReport.getFormHtml(FormsReport.java:
55)
at org.owasp.csrftester.report.FormsReport.generateHtml(FormsReport.java
:31)
at org.owasp.csrftester.CSRFTesterUI.testButtonActionPerformed(CSRFTeste
rUI.java:772)
at org.owasp.csrftester.CSRFTesterUI.access(CSRFTesterUI.java:751)
at org.owasp.csrftester.CSRFTesterUI.actionPerformed(CSRFTesterUI.jav
a:319)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
在我看来,这像是 CSRFTester 中的一个错误。
我找不到源 .java 文件,但我们可以反编译 .class 文件(使用 JD for example) from the Google Code Archive of this project here。
不幸的是,行号不匹配,但它可能在 pair[0]
、parts[i].split("=")[1]
或类似的未经检查的数组索引调用之一中失败:
protected String getParametersAsHtmlInput(CSRFTesterModel model, int row,
boolean isString) {
String s = model.getParameters(row);
String[] parts = s.split("&");
StringBuffer sb = new StringBuffer();
if ((s == null) || (s.length() == 0)) {
if (isString) {
sb.append("'<input type=\"hidden\" name=\"name\" value=\"value\"/>' \r\n");
} else {
sb.append("<input type=\"hidden\" name=\"name\" value=\"value\"/> \r\n");
}
}
else if (parts.length == 1) {
String[] pair = parts[0].split("=");
if (isString) {
sb.append("'<input type=\"hidden\" name=\"" + pair[0]
+ "\" value=\"" + pair[1] + "\"/>' \r\n");
} else {
sb.append("<input type=\"hidden\" name=\"" + pair[0]
+ "\" value=\"" + pair[1] + "\"/> \r\n");
}
}
else {
for (int i = 0; i < parts.length; i++) {
String name = parts[i].split("=")[0];
String value = parts[i].split("=").length == 1 ? "" : parts[i].split("=")[1];
if (isString) {
sb.append("'<input type=\"hidden\" name=\"" + name
+ "\" value=\"" + value + "\"/>'");
} else {
sb.append("<input type=\"hidden\" name=\"" + name
+ "\" value=\"" + value + "\"/>");
}
if ((i + 1 < parts.length) && (isString)) {
sb.append(" + \r\n");
} else {
sb.append("\r\n");
}
}
}
return sb.toString();
}
老实说,考虑到 2015 年 3 月该项目页面的 wiki history shows the last update was in July 2014, and Google Code was on its way out,这个 OWASP 工具看起来有点废弃。
我希望我能推荐一个更好的 CSRF 工具,但我从未使用过 CSRFTester 或任何其他 CSRF 测试应用程序。
我目前正处于第一个带薪实习期,我的任务之一是检查我们的部分 Web 应用程序是否存在 CSRF 漏洞。
我使用过 OWASP 和许多其他安全站点推荐的 CSRFTester。 我已经能够使用脚本为我们的一个 Web 应用程序捕获数据和 "Generate HTML" 文件。
但是,当对我们拥有的其他 Web 应用程序执行相同的测试时(已实施防伪令牌),CSRFTester 不会生成 html 文件。
控制台输出是我在下面发布的内容。
我的问题是我无法生成 html 是因为防伪令牌在工作吗?还是因为我遗漏了什么?
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:
1
at org.owasp.csrftester.report.ReportAdapter.getParametersAsHtmlInput(Re
portAdapter.java:74)
at org.owasp.csrftester.report.ReportAdapter.getParametersAsHtmlInput(Re
portAdapter.java:41)
at org.owasp.csrftester.report.FormsReport.getFormHtml(FormsReport.java:
55)
at org.owasp.csrftester.report.FormsReport.generateHtml(FormsReport.java
:31)
at org.owasp.csrftester.CSRFTesterUI.testButtonActionPerformed(CSRFTeste
rUI.java:772)
at org.owasp.csrftester.CSRFTesterUI.access(CSRFTesterUI.java:751)
at org.owasp.csrftester.CSRFTesterUI.actionPerformed(CSRFTesterUI.jav
a:319)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
在我看来,这像是 CSRFTester 中的一个错误。
我找不到源 .java 文件,但我们可以反编译 .class 文件(使用 JD for example) from the Google Code Archive of this project here。
不幸的是,行号不匹配,但它可能在 pair[0]
、parts[i].split("=")[1]
或类似的未经检查的数组索引调用之一中失败:
protected String getParametersAsHtmlInput(CSRFTesterModel model, int row,
boolean isString) {
String s = model.getParameters(row);
String[] parts = s.split("&");
StringBuffer sb = new StringBuffer();
if ((s == null) || (s.length() == 0)) {
if (isString) {
sb.append("'<input type=\"hidden\" name=\"name\" value=\"value\"/>' \r\n");
} else {
sb.append("<input type=\"hidden\" name=\"name\" value=\"value\"/> \r\n");
}
}
else if (parts.length == 1) {
String[] pair = parts[0].split("=");
if (isString) {
sb.append("'<input type=\"hidden\" name=\"" + pair[0]
+ "\" value=\"" + pair[1] + "\"/>' \r\n");
} else {
sb.append("<input type=\"hidden\" name=\"" + pair[0]
+ "\" value=\"" + pair[1] + "\"/> \r\n");
}
}
else {
for (int i = 0; i < parts.length; i++) {
String name = parts[i].split("=")[0];
String value = parts[i].split("=").length == 1 ? "" : parts[i].split("=")[1];
if (isString) {
sb.append("'<input type=\"hidden\" name=\"" + name
+ "\" value=\"" + value + "\"/>'");
} else {
sb.append("<input type=\"hidden\" name=\"" + name
+ "\" value=\"" + value + "\"/>");
}
if ((i + 1 < parts.length) && (isString)) {
sb.append(" + \r\n");
} else {
sb.append("\r\n");
}
}
}
return sb.toString();
}
老实说,考虑到 2015 年 3 月该项目页面的 wiki history shows the last update was in July 2014, and Google Code was on its way out,这个 OWASP 工具看起来有点废弃。
我希望我能推荐一个更好的 CSRF 工具,但我从未使用过 CSRFTester 或任何其他 CSRF 测试应用程序。