Heim  >  Artikel  >  Web-Frontend  >  Bahnbrechende lokale JS-Verifizierungslösung

Bahnbrechende lokale JS-Verifizierungslösung

小云云
小云云Original
2018-03-13 15:02:502468Durchsuche

Eine Art der JS-Überprüfung, auf die wir beim Hochladen von Schwachstellen häufig stoßen, ist ziemlich ärgerlich. Die Methode zur Beurteilung, ob die JS-Überprüfung auf einer Website aktiviert ist, kann nicht anhand der Beurteilungsgeschwindigkeit beurteilt werden, da die JS-Überprüfung für die lokale Überprüfung auf dem Client verwendet wird . Wenn Sie also ein falsches Dateiformat hochladen, wird die Beurteilung bald zeigen, dass der von Ihnen hochgeladene Dateityp falsch ist. Dann können wir beurteilen, dass die Website die js-Überprüfung verwendet.

js-Verifizierungsumgehungs-Democode:

<?php
/**
 * Created by cracer
 * Date: 15-10-7
 * Time: 下午1:19
 * Name: upload1.php
 * cracer:http://www.cracer.com/
 */
//文件上传漏洞演示脚本之js验证
$uploaddir = &#39;uploads/&#39;;
if (isset($_POST[&#39;submit&#39;])) {
 if (file_exists($uploaddir)) {
 if (move_uploaded_file($_FILES[&#39;upfile&#39;][&#39;tmp_name&#39;], $uploaddir . &#39;/&#39; . $_FILES[&#39;upfile&#39;][&#39;name&#39;])) {
 echo &#39;文件上传成功,保存于:&#39; . $uploaddir . $_FILES[&#39;upfile&#39;][&#39;name&#39;] . "\n";
 }
 } else {
 exit($uploaddir . &#39;文件夹不存在,请手工创建!&#39;);
 }
 //print_r($_FILES);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=gbk"/>
 <meta http-equiv="content-language" content="zh-CN"/>
 <title>文件上传漏洞演示脚本--JS验证实例</title>
 <script type="text/javascript">
 function checkFile() {
 var file = document.getElementsByName(&#39;upfile&#39;)[0].value;
 if (file == null || file == "") {
 alert("你还没有选择任何文件,不能上传!");
 return false;
 }
 //定义允许上传的文件类型
 var allow_ext = ".jpg|.jpeg|.png|.gif|.bmp|";
 //提取上传文件的类型
 var ext_name = file.substring(file.lastIndexOf("."));
 //alert(ext_name);
 //alert(ext_name + "|");
 //判断上传文件类型是否允许上传
 if (allow_ext.indexOf(ext_name + "|") == -1) {
 var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
 alert(errMsg);
 return false;
 }
 }
 </script>
<body>
<h3>文件上传漏洞演示脚本--JS验证实例</h3>
<form action="" method="post" enctype="multipart/form-data" name="upload" onsubmit="return checkFile()">
 <input type="hidden" name="MAX_FILE_SIZE" value="Bahnbrechende lokale JS-Verifizierungslösung04800"/>
 请选择要上传的文件:<input type="file" name="upfile"/>
 <input type="submit" name="submit" value="上传"/>
</form>
</body>
</html>

Hinweis: Es ist am besten, wenn der Ordnerpfad und der Dateiname auf Englisch sind, da andernfalls möglicherweise ein Fehler gemeldet wird .

Bahnbrechende lokale JS-Verifizierungslösung

Speichern Sie einfach den Code als upload.php und erstellen Sie dann im selben Verzeichnis einen Upload-Ordner, um die hochgeladenen Dateien zu speichern.

JS-Überprüfungs-Bypass-Methode

Die JS-Überprüfung lässt sich am besten umgehen. Es scheint ein Sprichwort zu geben, dass die clientbasierte Überprüfung unsicher ist. Hier gibt es verschiedene Umgehungsmethoden.

Wie kann festgestellt werden, ob der Datei-Upload auf einer clientseitigen JS-Überprüfung basiert?

Es gibt viele Methoden, z. B. das direkte Anzeigen der Website-Quelldatei und die Verwendung eines Paketerfassungstools, um zu überprüfen, ob der Client ein Datenpaket an den Server übermittelt hat. Wenn nicht, verwenden Sie die js-Überprüfung und laden Sie eine Datei unter hoch zufällig, und sehen Sie sich das Rückgabeergebnis an.

Bahnbrechende lokale JS-Verifizierungslösung

Wie im Bild oben gezeigt, erscheint bei der JS-Verifizierung direkt nach dem Absenden der hochgeladenen Datei eine Eingabeaufforderung und die Dateiübermittlung an den Server wird beendet. Die Umgehungsmethode lautet wie folgt:

A. Wir können den Code zur Überprüfung der hochgeladenen Datei direkt löschen, wenn die Datei im Onsubmit-Ereignis im Code hochgeladen wird.

Bahnbrechende lokale JS-Verifizierungslösung

ok, wir haben Firebug verwendet, um es zu entfernen

Bahnbrechende lokale JS-Verifizierungslösung

Bahnbrechende lokale JS-Verifizierungslösung

B. Ändern Sie die im Datei-Upload-JS-Code zulässigen Dateierweiterungen direkt in die Dateierweiterungen, die Sie hochladen möchten.

Bahnbrechende lokale JS-Verifizierungslösung

Bahnbrechende lokale JS-Verifizierungslösung

ok Die folgenden beiden Methoden sind relativ einfach zu bedienen. Ich werde sie hier nicht demonstrieren Fragen Sie mich auf QQ.

C. Verwenden Sie einfach das lokale Einreichungsformular und nehmen Sie entsprechende Änderungen vor.

D. Verwenden Sie zum Senden zunächst Proxy-Tools wie burpsuite oder fiddle, fangen Sie sie beim Hochladen ab und ändern Sie dann die Dateierweiterung in asp.

Die oben genannten 4 Methoden können von jedem frei verwendet werden und alle können die lokale JS-Überprüfung umgehen.

Verwandte Empfehlungen:

Empfohlene Zusammenfassung verwandter Artikel zur JS-Verifizierung

Regulärer Ausdruck der JS-Verifizierungstelefonnummer und des Mobiltelefons Telefonnummernformel

js, um zu überprüfen, ob die Ausweisinformationen legal sind

Das obige ist der detaillierte Inhalt vonBahnbrechende lokale JS-Verifizierungslösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn